XTuner 背景
XTuner 是一个由 MMRazor 和 MMDeploy 联合开发的大语言模型微调工具箱。它旨在简化大型语言模型(LLM)的微调过程,使其对非专业人员也易于操作。XTuner 支持多种开源的大型语言模型,包括但不限于 InternLM、Llama、Llama2、ChatGLM2、ChatGLM3、Qwen、Baichuan 等。支持LoRA和QLoRA等多种微调方式。
XTuner也支持对多模态大模型进行微调。
XTuner 微调个人小助手认知
-
开发机准备:同上。
-
快速上手:了解XTuner运行原理,包括环境安装、前期准备、启动微调。
-
环境安装:克隆XTuner源码,安装依赖库。
-
前期准备
- 数据集准备:创建数据集,包含自我介绍的对话数据。
- 模型准备:使用InternLM2-Chat-1.8B模型,复制或链接模型文件。
- 配置文件选择:选择合适的配置文件并复制到指定位置。
-
配置文件修改:根据实际情况调整配置文件中的参数。
-
模型训练
- 常规训练:使用XTuner训练指令启动训练。
- 使用deepspeed加速训练:结合deepspeed加速训练过程。
-
模型转换、整合、测试及部署
- 模型转换:将训练得到的PTH模型转换为HuggingFace格式。
- 模型整合:将转换后的模型与原模型整合。
- 对话测试:使用XTuner提供的对话脚本测试模型。可以看出微调后的模型能够认识到它是我的小助手,只是也灾难性地遗忘了所有知识。
- Web demo部署:使用streamlit部署网页端对话界面。
-
总结:本节内容涉及XTuner完整流程,包括数据集和模型使用、配置文件制作、训练、转换及整合。
XTuner多模态训练与测试
-
多模态LLM原理简介
- 文本单模态:输入文本,通过文本Embedding模型得到文本向量,然后由LLM生成输出文本。
- 文本+图像多模态:除了文本向量,还包括图像向量,通过Image Projector得到,与文本向量一起输入LLM。
-
LLaVA方案简介
- LLaVA训练阶段:使用文本+图像问答对训练Image Projector。
- LLaVA测试阶段:利用训练好的Image Projector和文本单模态LLM,对输入图像生成描述性文本。
快速上手
-
环境准备
- 开发机准备:在InternStudio创建开发机,选择Cuda11.7-conda镜像,配置30% A100 * 1资源。
- XTuner安装:根据平台不同,克隆环境或创建新的conda环境,并安装XTuner。
-
概述:构造自己的
<question text><img>
--<answer text>
数据对,基于InternLM2_Chat_1.8B模型,使用LLaVA方案训练Image Projector。 -
Pretrain阶段:使用图片+简单文本数据对,使LLM理解图像中的普遍特征。
-
Finetune阶段
- 训练数据构建:创建包含id、image、conversation的JSON格式数据集。
- 准备配置文件:创建并修改配置文件,指定模型路径、数据集路径等。
- 开始Finetune:使用XTuner训练配置文件,进行Finetune。
-
对比Finetune前后的性能差异:展示Finetune前后模型对图像的响应能力。
可以看出微调后不只会打标题了,还能够详细地描述图片。