iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
AI Security

《30 天從零打造資安語言模型:從微調到 Agent 落地》系列 第 10

Day 10|SFT 實作:指令資料的格式、來源與合成策略

  • 分享至 

  • xImage
  •  

從「懂行話」到「照規矩」

CPT 讓模型的語域偏移到資安領域,但它還不知道你要它做什麼。SFT 就是教它做事的階段。

今天的重點不在訓練技巧(SFT 的訓練參數比 CPT 單純很多),而在資料怎麼來

指令資料的基本格式

一筆 SFT 資料的最小結構是:

system: 你是一位資安分析師,負責產出給客戶閱讀的事件報告。

user: 【輸入資料 / 指令】

assistant: 【期望的輸出】

看起來簡單,但有幾個容易做錯的地方:

system prompt 要固定還是要變化? 我的做法是每個任務用固定的 system prompt,但在訓練資料裡保留少量變體。全部固定會讓模型過度依賴那一句話;全部隨機則學不到穩定行為。

要不要把 RAG 檢索到的內容放進 user 訊息? 要。而且訓練時的格式必須跟推論時完全一致。這是我認為最容易被忽略的一點——如果你訓練時給的是純問題,推論時卻塞了一大段檢索內容進去,模型會不知道那段東西是什麼。

輸出的長度要控制嗎? 要。如果你的訓練資料裡回答長度分佈很散,模型的輸出長度也會很不穩定。我刻意讓同一種任務的回答長度落在相近的區間。

資料來源一:Primus-Instruct

Day 5 說過,這份資料好,但是通用資安的,不是我的場景的。

我的用法是把它當基底能力層:它負責讓模型在面對資安問題時能正常、專業、不拒答地回應。這一層的價值是解決 Day 1 講的第三種落差(過度謹慎)。

比例上它佔我 SFT 資料的多數,但它不決定輸出格式。

資料來源二:場景合成資料

這是我自己補的部分,也是最花工的部分。

我要的是:格式跟真實文件一模一樣,但內容完全是假的。

做法分三步:

第一步:抽取結構。 從真實文件(事件報告、月報、Q&A 回覆)中抽出「骨架」——段落順序、欄位名稱、標題層級、慣用句式、長度分佈。只抽結構,不帶任何內容。

第二步:合成內容。 用合成的資料填進骨架:假的 IP、假的主機名、假的公司名、假的時間、假的事件經過。CVE 編號我用真實存在的公開漏洞(因為那是公開資訊),但關聯的受影響資產全部是虛構的。

第三步:驗證。 產出來的樣本要有人讀過,確認兩件事:一,格式真的對;二,沒有任何真實資訊殘留。第二點我用了自動掃描 + 人工抽查雙保險。

為什麼不直接用真實文件訓練?

三個理由,任何一個單獨都足夠:

  1. 合約與法遵:客戶的事件資料有明確的使用限制,訓練模型不在授權範圍內。
  2. 資料會被記住:模型會記住訓練資料裡的特定字串。如果真實的客戶主機名進了訓練集,它有可能在完全無關的場合被輸出出來。這是嚴重的資安事故。
  3. 我要能公開講這件事:如果訓練資料含客戶資訊,我連寫這系列文章都不行。

這個決定的代價:合成資料的多樣性不如真實資料,我需要更費力地確保它涵蓋足夠的情境變化。但這個代價我付得心甘情願。

資料量:多少才夠?

SFT 不需要很多資料,但需要每一種你希望的行為都有足夠的樣本

我的估算方式是倒過來的:先列出模型需要會的行為(四個任務 × 各任務的幾種變化),每種行為配一個最低樣本數,加起來就是需求量。

不要用「總筆數」當目標,那會導致你在容易產的行為上堆量,難產的行為只有零星幾筆。模型會學會前者,學不會後者。

訓練設定

SFT 的參數比 CPT 好調:

  • 學習率比 CPT 更小——你在做的是精細調整
  • epoch 數 2–3 輪——資料量小,一輪不夠,但太多輪會過擬合
  • 只計算 assistant 部分的 loss——這點很重要。指令與檢索內容不該貢獻 loss,否則模型會學著去「預測使用者會問什麼」,那不是它的工作。
  • 留一小份 validation 觀察過擬合

SFT 之後該看什麼

跟 CPT 不同,SFT 的效果應該要肉眼可見

跑完之後我做的第一件事不是看 benchmark,是拿五個真實情境的輸入,讓 CPT-only 和 SFT 後的模型各產一次,並排比較。

該看的是:

  • 格式對不對(段落、欄位、順序)
  • 語氣像不像
  • 有沒有多加或漏掉段落
  • 遇到敏感的攻擊技術問題還會不會拒答

如果這些沒有明顯改善,那 SFT 資料有問題,不要急著往下走。

明天做推理蒸餾,三階段的最後一步。


🛡️ IG: @aid3fend — 歡迎追蹤交流。



上一篇
Day 9|CPT 實作:清洗、切塊、參數與 loss 曲線
下一篇
Day 11|推理蒸餾:教師模型的輸出怎麼變成訓練資料
系列文
《30 天從零打造資安語言模型:從微調到 Agent 落地》14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言