一:Finetune简介
两种Finetune范式
LLM的下游应用中,增量预训川练和指令跟随是经常会用到两种的微调模式:
·增量预训练微调
1.使用场景:让基座模型学习到一些新知识,如某个垂类领域的 常识
2.训练数据:文章、书籍、代码等
· 指令跟随微调
1.使用场景:让模型学会对话模板,根据人类指令进行对话
2.训练数据:高质量的对话、问答数据
全参 VS Lora VS QLora
二:XTuner实战
1. XTuner 微调个人小助手认知
- 目标:使用XTuner工具包通过QLoRA方式微调个人小助手模型。
- 效果对比:微调后的模型能更符合需求。
2. 开发机准备
- 创建开发机:在InternStudio中配置开发机,选择Cuda11.7-conda镜像,资源配置为10% A100 * 1。
- 操作界面:通过Terminal进入终端界面开始操作。
3. 快速上手XTuner
- 环境安装:安装XTuner,包括克隆源码和安装依赖。
- 前期准备:明确微调目标,准备数据集和算力资源。
- 启动微调:选择配置文件,修改后启动训练。
4. 环境安装步骤
- 克隆环境:用InternStudio平台克隆pytorch环境或在其他平台创建新环境。
- 安装XTuner:通过pip安装XTuner及其依赖。
5. 前期准备
- 数据集准备:创建数据集文件夹,编写
generate_data.py
脚本来生成个性化的数据集。 - 模型准备:选择并准备微调用的模型,如InterLM2-Chat-1.8B。
- 配置文件选择:在XTuner配置库中选择合适的配置文件进行复制和修改。
6. 配置文件修改
- 修改内容:根据项目需求调整模型路径、数据集路径、学习率、训练轮数等参数。
- 参数调整:可能包括
max_length
、batch_size
、accumulative_counts
等。
7. 模型训练
- 常规训练:使用
xtuner train
指令开始训练,可通过--work-dir
指定保存路径。 - 使用deepspeed加速:选择适当的deepspeed优化级别来加速训练。
8. 模型转换、整合、测试及部署
- 模型转换:将Pytorch模型权重转换为Huggingface格式。
- 模型整合:将微调出的adapter层与原模型组合。
- 对话测试:使用XTuner提供的对话代码测试模型。
- Web demo部署:通过streamlit部署模型为web demo。
9. 小结
- 流程理解:理解并实践XTuner的完整流程,包括数据集制作、模型微调、配置文件调整、训练、转换和整合。
- 实践应用:鼓励使用本节课学习的内容去尝试微调自己的模型。
10. 收获
- 工具和库:熟悉使用InternStudio、XTuner、deepspeed等工具和库。
- 代码和脚本:掌握如何编写和使用相关Python脚本来生成数据集和进行模型训练。
- 模型微调:了解如何通过调整参数来优化模型性能。
- 部署选项:学习了如何将模型部署为终端对话程序和web demo
效果如图:
(训练记录)
(文件结构树)
(对话记录)
(web demo)
三:多模态训练
1. XTuner多模态训练与测试概览
- 目标:学习使用XTuner微调多模态大型语言模型(LLM)。
- 资源需求:需要24GB GPU内存和30%的A100 GPU使用率。
- 效果展示:对比Finetune前后的多模态LLM性能。
2. 多模态LLM原理简介
- 文本单模态:输入文本,通过文本Embedding模型转换成文本向量,由LLM处理后输出文本。
- 文本+图像多模态:结合文本和图像输入,通过Image Projector将图像转换为图像向量,与文本向量一起输入LLM。
3. LLaVA方案简介
- LLaVA:结合文本单模态LLM和Image Projector,形成具有视觉能力的模型。
- 训练阶段:使用文本+图像问答对训练Image Projector。
- 测试阶段:利用训练好的Image Projector和文本单模态LLM,根据输入图像生成描述性文本。
4. 快速上手
- 环境准备:
- 开发机:在InternStudio中创建并配置开发机,选择Cuda11.7-conda镜像。
- XTuner安装:克隆环境或创建新环境,安装XTuner。
5. LLaVA训练与Finetune
- Pretrain阶段:使用图片+简单文本数据对训练LLM理解图像特征。
- Finetune阶段:
- 训练数据构建:创建包含图片相对路径、对话文本的数据集。
- 配置文件准备:创建并修改配置文件,指定模型、数据路径等参数。
- 开始Finetune:使用XTuner训练命令启动Finetune。
6. 数据集构建与配置文件
- 数据集格式:包含id、图片路径和对话文本的JSON格式。
- 制作问答对:使用GPT生成图片相关问题和答案。
- 配置文件:包含模型、数据集、评估输入等配置。
7. Finetune前后性能对比
- Finetune前:模型只能为图片生成标题。
- Finetune后:模型能够根据图片内容回答问题。
8. 收获
- 流程理解:掌握使用XTuner进行多模态LLM训练的完整流程。
- 实践应用:鼓励实践LLaVA方案,增强模型的视觉理解能力。
效果:
四:发布openxlab平台
参考教程:Tutorial/tools/openxlab-deploy at camp2 · InternLM/Tutorial (github.com)
模型中心-OpenXLabhttps://openxlab.org.cn/models/detail/hopecommon/try/tree/main
应用中心-OpenXLabhttps://openxlab.org.cn/apps/detail/hopecommon/personaltry