基于Xtuner大模型微调实战
Fintune简介
- 海量数据训练的base model
- 指令微调Instructed LLM
增量预训练微调
增量数据不需要问题,只需要答案,只需要陈述类的数据
指令跟随微调
- 指定角色
- 指定问题给对应的user
- 指定答案给assistant
- LIaMa2
- InternLM
不同的模型有不同的模板
只对答案部分进行损失计算
LoRA & QLoRA
- LoRA在原本模型旁新增两个小的分支,旁路分支的参数Adapter
- 参数远远小于原本模型的参数
- 全参数训练:加载到显存中会占用大量的内存
- LoRA:只加载部分参数
- QLoRA:先进行量化再加载
XTuner
快速上手
自定义训练
训练好之后得到Adapter参数文件,在启动的时候,既要加载原始基座模型,同时也要加载训练好的Adapter模型文件
- 类似于gpt中的Plugin,专业的工具类模型
数据处理引擎
- 集成了很多映射函数,省掉开发的很多工作
- 支持数据拼接,增强并行性,充分利用大显存
- json格式数据集
8GB显存玩转LLM
- 默认开启Flash Attention
- 集成了DeepSpeed
动手实践环节
创建服务器
并配置本地公钥
创建虚拟环境
微调
准备配置文件
- 采用qlora_oasst1_e3
模型下载
数据集下载
修改配置文件
- 修改模型路径
- 修改数据集路径
- max_epochs = 1 节省时间及算力
超参
开始微调
- 训练非常耗时
- 可以使用deepspeed加速
- 可以使用tmux起训练,避免中断
将得到的模型文件转换成HuggingFace模型
部署与测试
- 注意不同的模型有不同的template
Demo
- 修改模型文件
- 对比微调前和微调后的模型
- 启动参数
自定义微调
- 数据集 Medication QA
准备数据
转化为XTuner数据格式
- 可以利用gpt帮忙写代码
划分训练集和测试集
开始自定义微调
- 修改配置文件:模型文件路径,数据集路径
- 启动训练
- 加入deepspeed加速
- 将得到的模型转成huggface格式
用MS-Agent赋予LLM Agent能力
MS-Agent包含大量这样的数据,可以基于这样的数据训练具有这样能力的LLM
- 下载Adapter
- 添加请求服务的API插件
- 俩模型可以merge
- 也可以adapter参数
- 注释掉该语句
- API调用有问题
参考
- Xtuner