47

什么是 SFT——从续写器到对话者

阅读约 3 分钟第 47/60 课

预训练结束后的 Sophia 是一台续写机器——给它一段文本,它接着往下写。第 03 章节说过,它不会区分「用户」和「助手」的角色,只会把对话往下续写。

SFT(Supervised Fine-Tuning,监督微调)让 Sophia 学会一个新的行为模式:看到用户的话之后,以助手的身份回应——而不是继续编写用户的台词。

SFT 的训练数据

SFT 的训练数据是一组示范对话——每一段对话都展示了「用户说了什么 → 助手应该怎么回答」:

用户:请帮我解释什么是光合作用。
助手:光合作用是植物利用阳光、水和二氧化碳合成有机物并释放氧气的过程。
      植物叶片中的叶绿体含有叶绿素,能够吸收光能……

这些对话就是「监督信号」——告诉模型正确的行为是什么样的。

SFT 怎么训练

SFT 的训练方式和预训练几乎一样——还是预测下一个 token、计算交叉熵、反向传播、更新参数。

唯一的区别是训练数据的格式:现在的训练数据是结构化的对话,而不是随机的文本。通过在这些对话上训练,模型学会了:

  • 看到「用户:」标记后面跟着的是一个问题或请求
  • 看到「助手:」标记后,应该给出回答而不是继续扮演用户
  • 回答应该是有帮助的、礼貌的、准确的
  • 回答应该在合适的时候结束,而不是无限制地继续写

SFT 的数据量

SFT 需要的数据量远小于预训练。预训练用了 200 亿个 token,而 Sophia 的 SFT 只用了 88,267 行对话数据——几个量级的差别。

这是因为 SFT 不是在教模型新的知识(知识在预训练中已经学到了),而是在教模型一种新的行为模式——怎么利用已有的知识来回答问题。

微调而非重新训练

SFT 不是从零开始重新训练模型。它从预训练的检查点(checkpoint)开始——也就是已经在 200 亿 token 上训练好的参数——然后在 SFT 数据上继续训练,用更小的学习率微调参数。

想象一个已经学过十年中文的人去上一门「客服培训」课程。培训不是让他重新学中文,而是教他一种新的说话方式——礼貌、专业、针对问题给出回答。他的中文功底(预训练)不会被覆盖,只是在上面加了一层新的行为模式。

下一章节来看 SFT 数据是怎么生成的——一种叫教师蒸馏的方法。