从补全到对话 Chat Template + SFT:大模型终于学会「说话」 从补全机器到对话助手,差的就是这套训练范式。 一句话速览 Jinja 格式、指令微调,大模型终于学会说话 OpenAI 约定好一套格式,然后 专门针对这套格式 再训练模型, 大模型就真的会说话了
从补全到对话的演进
1
统一对话格式(Chat Template) 借鉴 Jinja 模板语言,定义 special token:<|im_start|> / <|im_end|> 包裹每条消息
2
按格式组装所有消息 system / user / assistant 三种角色,拼成一段没有换行的文本,送给模型
3
SFT(指令微调) 用海量「格式化对话数据」继续训练模型,模型学会了在这套格式下做助理,不再只是续写文本
4
大力出奇迹(Scale Up) 模型越来越大,训练数据越来越多:GPT-3 → ChatGPT → GPT-4,效果指数级提升
Chat Template 与 SFT 对比
点击切换视角
Chat Template SFT 前后对比
↺ 重播
<|im_start|> system ← 系统提示词角色标记
你是一个有帮助的 AI 助手。 ← System Prompt 内容
<|im_end|> ← 结束标记
<|im_start|> user ← 用户消息开始
紫霞仙子是谁?
<|im_end|>
<|im_start|> assistant ← 模型从这里开始补全
(模型补全区域) ← SFT 训练模型如何在此处输出
<|im_end|>
SFT 之前(Base 模型) 用户:紫霞仙子是谁?
紫霞仙子是哥哥,哥哥你喜欢我,你说你喜欢我… (继续按语料风格续写,完全不像在回答问题)
SFT 之后(Chat 模型) 用户:紫霞仙子是谁?
紫霞仙子是电影《大话西游》中的人物,由朱茵饰演。她是至尊宝命中注定的爱人,为了他付出了一切。 (懂得什么是回答,以助理身份作答)
SFT(Supervised Fine-Tuning)本质上还是 Token 预测,只是训练数据换成了 「格式化对话 + 高质量回答」 。 模型学会了在 <|im_start|>assistant 之后输出像样的回答,不再续写语料。
这一刻,「补全机器」进化成了「对话助手」