Finetune简介
为什么finetune
当前大多数大语言模型是底座foundation模型,为一般性任务进行与训练。应用于特定的下游任务,则需要领域内微调以得到更好的表现。
finetune两种范式
- 增量预训练微调:foundation模型学习某个垂类领域的知识
- 指令微调:让模型学会更精细的问答对话模板
Finetune操作
微调数据处理流程
原始数据 -> 标准格式数据(分角色) -> 对话模板(让LLM知道角色划分) -> Tokenize -> 添加label -> 进行训练
微调方案
LoRA & QLoRA,基座模型不变,在基座模型之上使用LoRA模型
- Full Finetuning:加载所有模型及其优化器
- LoRA:加载所有模型和LoRA部分的优化器,节省显存开销
- QLoRA:用4-bit方式(低精度)加载模型,进一步节省显存开销
InternLM Finetune框架:XTuner
封装好的微调工具箱,以配置文件场景封装finetune场景;显存很低
功能亮点
- 适配多种生态:多种微调算法、多种开源生态
- 适配多种硬件
- 支持工具类模型的对话
- 提供数据格式转换
用户可以关注数据内容,不必花心思处理复杂的数据格式
操作方法
拷贝配置文件 -> 修改配置文件 -> 运行微调过程 -> 与微调后的模型对话
内置的加速方式
- Flash Attention:attention计算并行化
- DeepSpeed ZeRO:将训练中间状态切片
自动优化加速(开发者无需过多关注算法细节)
多模态LLM案例:电子眼
增加图像处理的Image Projector,将文本向量与图片向量同时输入LLM得到生成文本
\<question text\>\<image\> -- \<answer text\>