本文主要简单介绍微调地基础知识,以及开源微调框架 XTuner的使用。
一. 微调简介
1. Finetune范式
当我们想要在别人地预训练模型上得到我们想要地能力时,通常我们有两种微调方式:
1. 增量预训练微调
2. 指令跟随微调
2. 一条数据地一生
我们需要地微调的原始数据首先需要转换成工具或模型支持的标准格式数据,然后再转换成为Tokenized数据,添加上标签,最后输入给模型进行训练。
不同的模型,数据格式可能不同,如下图中,LLama2和InterLM 的对话模板的开始,结束符不同。
3. LoRA & QLoRA
LoRA通过在原本的Liner曾旁边,新增一个支路,包含两个利阿努的小Linear,新增的支路通常叫做Adapter,也就是我们需要训练的参数。这个Adapter一般参数较小,使得我们可以在较小资源下进行模型的微调训练。
QLoRA 对比LoRA是进一步将模型的参数类型转换为了4bit 的数据,进一步降低了内存的消耗。
二. XTuner
1. Xtuner简介
XTuner 提供一整套的训练框架,从数据的处理,到内存优化,训练加速等。而且操作简单,0基础的非专业人员也能一键开始微调。同时对内存也做了大量优化,微调7B参数两的LLM,最小仅需要8GB显存即可。
XTuner也支持非常多硬件,软件生态,主流大模型都提供支持,可以一键开启训练。
Flash Attention和DeepSpeed ZeRO 是XTuner最重要的两个优化技巧。
Flash Attention将Atention计算并行化,避免计算过程中大量的显存占用;ZeRO通过状态切片,可进行多机多卡的训练,同时也能节省内存占用。
2. XTuner快速上手
3. 多模态微调
多模态微调对比文本单模态微调,新加入了将图像转换为图像向量输入给大模型,完成训练,即可得到图像分析的能力。