SFT监督微调详解
一句话总结
SFT通过在高质量指令-回复数据上继续训练,将基座模型转化为能理解指令并生成有用回复的对话模型。
核心概念
SFT(Supervised Fine-Tuning)在预训练模型基础上,使用(指令, 回复)格式的监督数据继续训练。关键设计包括:(1)对话模板(chat template)定义特殊标记区分系统提示、用户输入和模型回复;(2)loss掩码(loss masking)只对模型回复部分计算损失,不对指令部分计算损失,避免模型学会生成指令;(3)学习率通常为预训练的1/10到1/100。数据质量远比数量重要,LIMA论文证明仅1000条高质量数据即可训出优秀的对话模型。
为什么重要
SFT是将预训练模型(只会续写文本)转化为实用对话助手的关键步骤。没有SFT的基座模型无法准确理解用户意图,也不会以有用的格式组织回复。SFT是RLHF流程的前置步骤,一个好的SFT模型是后续对齐的基础。
实践要点
数据方面:控制数据多样性覆盖不同任务类型(问答、摘要、翻译、代码、数学等)。长度分布要合理避免模型习惯性输出过长或过短。训练方面:通常1-3个epoch即可,过多epoch会导致过拟合和多样性降低。建议用packing策略将多条短对话拼接到一个序列中提高GPU利用率。评估用多维度指标而非单一loss。
常见误区
误区一:堆砌大量低质量数据(如GPT蒸馏)。数据多但质量不一致反而会降低模型表现。误区二:训练过多epoch追求低loss,导致模型过拟合失去泛化能力和多样性。误区三:忽视对话模板的重要性。推理时模板与训练不一致会严重影响性能。