大模型微调
大模型
什么是微调
在预训练基础上,使用特定领域的数据进行进一步训练。
注意,以下两点是微调的关键:
- 特定领域的 高质量数据
- 配置合适的参数(训练轮次过小、学习率设置过大,都可能效果不佳,如过拟合、欠拟合)
过拟合:训练数据表现好,但不灵活,无知识迁移;测试数据/实际应用很差;
欠拟合:训练过程过于简单,训练数据/测试数据/实际应用都很差
微调能给大模型带来什么
微调的价值
提高效率和降低成本
微调的关键
评估是否需要微调
什么时候可以考虑微调大模型?
微调大模型的价值够大且可行!
从以下几个方面评估
- 业务需求匹配度(业务价值)
- 数据可用性与质量(有可微调的数据)
- 合规与隐私(微调使用的数据需合法)
- 资源与技术可行性(微调花时间成本和计算资源)
总的来说,需要对微调的业务价值进行ROI分析,即进行成本效益分析,评估微调带来的商业价值是否超过其成本,包括直接经济效益和间接效益,如用户体验提升、品牌形象增强等。
业务价值评估
- 当前模型是否已满足大部分需求?
如能满足,则可能不需要微调
是否有具体的业务指标来衡量微调前后的效果?
有的话可以考虑微调
微调大模型主要解决哪些具体业务问题和应用场景?
- 复杂的语言理解或生成能力
- 高度特定于某领域或任务,即领域垂直深入
如何进行微调/微调的流程
1.数据准备
- 数据收集:特定领域高质量数据
- 数据清洗:去除敏感数据,保证数据质量
2.选择合适的基础模型
3.开始微调该模型
- 标注数据
- 调整模型参数,运行微调程序
通过提取问答对生成训练数据文件
train.json
4.模型评测
准备一个和训练数据文件格式相同的评测集json文件,观察并对比微调前后的输出结果
5.模型集成至业务流程
6.测试与优化、生产部署、监控运维、持续迭代
微调的方式
微:数据规模小、训练时间短(预训练的模型不需要再训练那么久)
调整模型参数
从调整参数量大小的角度,分为
- 全参微调:FullFineTuning
大模型训练成本高昂,需要庞大的计算资源和大量的数据,即使是全参数微调,往往也需要较高的训练成本。
- 高效微调 PEFT(Parameter-Efficient Fine-Tuning)
- LoRA Low-rank adaption 低秩适应。在原始模型旁边增加旁路只优化旁路 用旁路更新原始参数。最优
- AdapterTuning :在某些位置之间插入adapter层,微调仅调该层参数 只增加3.6%参数的情况下课达到全参数微调
- prefix tuning :在每一层transformer中给文本数据token 增加 固定长度任务相关的 虚拟token部分参数 作为前缀prefix。优:减少内存占用和计算成本;劣:使得模型结构变得略为复杂;占用部分上下文窗口,可能影响模型处理长文本容量
- prompt tuning 轻量高效微调 :原理与prefix tuning类似 但仅在输入层加入可训练的prompt tokens向量