大模型微调是项精细工程。这篇内容系统梳理了从SFT数据构造、参数调试到RLHF进阶的完整流程,并针对训练中常见问题给出具体诊断与解决方案,旨在帮助实践者少走弯路,高效达成目标。
智能速览
SFT阶段需构造高质量、风格统一的训练数据,并保证数据分布覆盖测试集。
模型训练不能仅依赖loss,应基于业务指标定期评估不同步数的checkpoint。
SFT是赋予模型基础能力,RL是将其推向上限,若SFT失败则RL难以成功。
RLHF的成败关键在于奖励模型设计,需防止模型通过Reward Hacking作弊。
针对KL散度爆炸、Reward不增长等常见问题,提供了具体的参数调节策略。
DPO训练中需注意beta与学习率的平衡,过高或过低都会导致模型效果下降。
精华内容
从数据准备到模型训练,再到效果调优,每一步都藏着细节与挑战。下面将拆解关键环节,深入探讨具体实践方法。
SFT筑基
在SFT开始前,应先通过调整Prompt确保模型具备基本遵循指令的能力,若模型连简单指令都无法遵循,说明基础能力不足,应考虑更换模型。数据是SFT的基石,需保证其多样性和高质量。训练集的数据分布必须覆盖测试集,否则测试效果会大打折扣。数据的风格和输出格式必须高度统一,例如SQL答案若规定为`select a,b`,就不能出现`select *`。
每个垂直领域约400条高质量数据即可见效。对于SFT,不建议加入思维链和few-shot,因为标注成本极高,直接用大量高质量样本进行“暴力”学习更为有效。调参时,learning rate可从1e-4开始,weight decay从0.25向下尝试。
RL的价值
理解SFT和RL的关系至关重要。SFT的目标是让模型具备回答问题的能力,好比训练一名篮球运动员能投中5球中的5球;而RL(强化学习)则是为了让这个能力稳定发挥,达到10投8中的高水平状态。如果模型在SFT后连20%的问题都答不好,说明基础能力不足,RL也无法创造奇迹。RL在有明显规则的任务(如数学、逻辑)上效果显著,但在主观性强的任务上则效果有限,因为奖励模型难以准确评判。
RLHF排障
进行RLHF训练时,需关注多个关键指标而非仅看loss。若Reward持续不上涨,应先排查基础模型的能力上限,可 rollout 一批样本查看奖励分数是否普遍偏低。训练不稳定时,可启用梯度裁剪,裁剪值通常设为0.2。PPO的学习率应比SFT低一个数量级,例如SFT用2e-5,PPO则用1e-6至3e-6。
为防止模型遗忘通用能力,可在prompt池中混入5%-10%的SFT通用数据。RM的输出需归一化处理,以防梯度爆炸或消失。Batch Size宁大勿小,显存不足时可采用梯度累积。
精细调优
Reward Hacking是RLHF中的常见陷阱,即模型找到奖励函数的漏洞来“作弊”。解决方案是在奖励函数中加入惩罚项,或将作弊样本作为负例重新训练RM。KL散度用于控制模型生成内容的多样性,防止其过于单一或杂乱,通常从0.001开始逐步增加。
若模型输出大量重复内容,多是学习率过高导致,应降低至1e-6至1e-5区间。若生成长度异常,则是因为奖励模型存在长度偏见,需在RM数据中平衡不同长度的样本或在RL中加入长度惩罚。对于DPO训练,beta参数是关键,过高会导致chosen和rejected概率差增长缓慢,过低则会使效果变差,需仔细平衡。
掌握大模型微调需要理论与实践的结合,更需要在反复试错中积累经验。面对不断涌现的新技术,持续学习与深度思考,将是突破瓶颈的关键。你的下一个模型,会达到怎样的高度?