從補全到對話
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 之後輸出像樣的回答,不再續寫語料。
這一刻,「補全機器」進化成了「對話助手」