
基于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