三階段的最後一段。前面兩段模型學會了資安的語言(CPT)與做事的格式(SFT),現在要學的是怎麼想。
推理蒸餾的基本流程:
1. 準備問題集
2. 教師模型針對每題產生「思考過程 + 答案」
3. 過濾掉品質差的
4. 把「問題 → 思考過程 → 答案」當成 SFT 資料訓練學生模型
技術上它就是一種 SFT,差別只在資料的形態。但它的效果與風險都跟一般 SFT 不同。
Day 1 提過「判斷收斂」的問題。資安工作有大量沒有標準答案、但有標準思路的題目:
這些題目如果只用 SFT 教答案,模型會學到「這種情況答 A」,遇到沒看過的情況就崩了。教思路則不同——思路是可遷移的。
蒸餾的品質上限由問題集決定。爛問題產不出好思路。
我的問題集有三個來源:
一、Primus-Reasoning 既有的題目——現成的,涵蓋通用資安推理。
二、從四個任務反推的題目——例如事件報告任務,反推出「面對這種類型的告警,該檢查哪些面向」。
三、邊界案例——刻意設計模糊、資訊不足、或有陷阱的情境。這類題目最有價值,因為它們教的是「什麼時候該說我不確定」。
第三類我特別強調。一個只會給明確答案的模型在資安場景是危險的。知道自己不知道,是資安判斷的一部分。
教師模型要選推理能力強的。但這裡有個矛盾:如果教師模型可以直接用,我幹嘛還訓練學生模型?
答案回到 Day 3 的兩個理由:資料不能出境、以及成本與可控性。
蒸餾是把「一次性的、可以在受控環境完成的」教師推理,轉化成「可以無限次在地端執行的」學生能力。教師只在準備訓練資料時用一次,而且用的是我自己設計的問題與合成情境,不含任何客戶資料。
這個區分很重要,也是我在跟客戶說明時一定會講清楚的一點。
教師模型的輸出不能直接拿來訓練。Day 4 說過,這是三階段裡最危險的一階——錯誤的推理看起來很有說服力。
我的過濾分四層:
第一層:格式檢查(自動) 思考過程與答案的結構完整嗎?有沒有中途截斷?有沒有自相矛盾的結論?
第二層:答案正確性(自動,僅適用有標準答案的題目) 如果題目有客觀答案,答錯的直接丟掉。注意:答對不代表思路對,這層只能濾掉明顯的錯誤。
第三層:一致性檢查(自動) 同一題讓教師模型產生多次,看結論是否一致。不一致的題目要嘛太難、要嘛題目本身有問題,兩種情況都不適合當訓練資料。
第四層:人工抽樣(手動) 隨機抽一定比例,由懂資安的人讀思路,判斷專業上站不站得住腳。
第四層是唯一能抓到「說得很順但專業上是錯的」這種問題的方法,沒有自動化替代方案。我抽查的比例不算高,但每一批都抽,而且只要抽到一筆嚴重錯誤,整批都退回重檢。
比我預期的少很多。前三層自動過濾就會刷掉相當比例,人工抽查再退回幾批。
這是正常的,也是應該的。 蒸餾資料的價值在於品質不在數量。一千筆經過驗證的推理,勝過一萬筆沒人看過的。
蒸餾階段的訓練跟 SFT 幾乎一樣,幾個差別:
要不要讓模型在推論時輸出思考過程? 我的選擇是:產生但不直接給使用者看。思考過程是給審核者用的——當顧問要判斷這份初稿能不能過,看模型怎麼想的比看結論有用得多。這一點跟 Day 24 的文件狀態機直接相關。
benchmark 分數當然要跑(Day 12 就是那個結果)。但更有意義的是質性檢查:
三階段跑完了。明天面對成績單。
🛡️ Instagram: @aid3fend — AI 資安實戰紀錄,歡迎追蹤交流。