昨天講了三階段配方。今天講的是餵進這三階段的東西。
Primus 這套方法之所以能被復現,關鍵不在於它的訓練技巧有多特別——技巧其實都是標準做法——而在於它把資料集整理出來並開放了。四個資料集,對應三個階段。
我用的順序與對應是:
| 資料集 | 用在哪一階段 | 性質 |
|---|---|---|
| Primus-Seed | CPT | 人工整理的高品質資安文本 |
| Primus-FineWeb | CPT | 從網路大規模語料篩出的資安文本 |
| Primus-Instruct | SFT | 資安領域的指令-回答配對 |
| Primus-Reasoning | 推理蒸餾 | 含思考過程的資安推理資料 |
以下逐一講我實際用起來的感受,以及我做了什麼調整。
性質:人工整理,來源包含 CVE 描述、MITRE ATT&CK 的技術說明、資安維基條目、威脅行為者的描述等等。體量不大,但每一筆都是「真的在講資安」。
我的觀察:這份資料的訊噪比極高,但它的文體非常一致——都是條目式、百科式的描述。這是它的優點也是它的限制。模型讀完這些會很懂術語的定義,但不會學到「一個分析師怎麼敘述一起事件」。
我做的調整:我把它整份留下來,但不讓它單獨構成 CPT,一定要跟下一份混合。原因是如果只餵百科體,模型的輸出會變得非常「詞典」——問什麼都給你一段定義,這在寫報告時是災難。
性質:從 FineWeb 這種網路級語料裡,用分類器篩出資安相關的部分。體量是 Seed 的好幾個數量級。
我的觀察:這份是 CPT 的主力,但它有兩個要小心的地方。
第一,篩選必然有偽陽性。 「攻擊」「防禦」「漏洞」這些詞在非資安語境也大量出現。我抽樣看過幾百筆,確實會混進一些完全無關的內容。比例不高,但存在。
第二,網頁文本自帶格式雜訊。 導覽列殘留、「點此閱讀更多」、Cookie 提示、社群分享按鈕的文字。這些東西如果不清,模型會學到它們,然後在你完全沒預期的時候輸出一句「訂閱我們的電子報」。
我做的調整:加了一層自己的清洗規則(Day 9 會貼實際的清洗腳本邏輯),並且做了長度過濾——太短的片段幾乎都是雜訊,太長的常常是整站爬下來的合併頁。
性質:資安領域的指令與回答配對,涵蓋概念解釋、情境判斷、工具使用等等。
我的觀察:這份資料的品質好,但它是通用資安的指令資料,不是我的場景的指令資料。它會教模型怎麼好好回答一個資安問題,但不會教模型怎麼寫出「我們家格式」的事件報告。
這是整個專案裡我第一次意識到「開放資料集能帶你走多遠」的邊界。
我做的調整:把 Primus-Instruct 當基底,額外補了一批自己的場景資料。這批資料的產生方式我在 Day 10 會完整交代,簡單說是:用真實文件的結構 + 合成的內容,做出格式正確但不含任何客戶資訊的訓練樣本。
性質:含完整思考過程的資安推理資料,用於蒸餾階段。
我的觀察:這份資料筆數最少,但價值密度最高。而且它是最難自己複製的一份——要自己產,你需要一個推理能力夠強的教師模型、一批好問題、以及有人去驗證思路對不對。前兩項花錢就有,第三項花錢也不一定有。
我做的調整:我沒有大改,但我做了一件事——抽樣人工檢查思路。我隨機抽了一批出來自己讀,確認推理步驟在資安專業上站得住腳。抽查比例不高,但這是我在 Day 4 說的「最危險的一階」的唯一防線。
除了四件套,我另外準備了三類資料:
建一張資料清單表,欄位是:來源、筆數、語言、用在哪一階段、有沒有進評測集、授權條款。
聽起來很無聊。但當你訓練到第三階段、benchmark 結果怪怪的、開始懷疑是不是評測資料洩漏進訓練集的時候,這張表是你唯一能快速回答問題的東西。
我是在需要它的時候才回頭補的。不要學我。
明天講資料分流:什麼該進訓練、什麼該進 RAG、什麼該鎖起來當評測。這是整個系列我認為最重要的一天。
💡 關於作者
我是 Fngi,專注在 AI 安全與雲端資安領域。如果這篇對你有幫助,歡迎追蹤 Instagram @aid3fend,我在那裡分享更多 AI 資安的實務筆記與趨勢觀察。