從補全到對話
Chat Template + SFT:大模型終於學會「説話」
從補全機器到對話助手,差的就是這套訓練範式。
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 對比
<|im_start|>system← 系統提示詞角色標記
你係一個有幫助嘅 AI 助手。← System Prompt 內容
<|im_end|>← 結束標記
<|im_start|>user← 用戶消息開始 紫霞仙子係邊個? <|im_end|>
<|im_start|>assistant← 模型從這裏開始補全 (模型補全區域)← SFT 訓練模型如何在此處輸出 <|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 之後輸出像樣的回答,不再續寫語料。
模型學會了在 <|im_start|>assistant 之後輸出像樣的回答,不再續寫語料。
這一刻,「補全機器」進化成了「對話助手」