先把牌攤開,因為所有的選型決策都是從這裡推出來的:
「一台」這個限制看起來很弱,但它其實是這個專案最有價值的約束——因為它逼我在第一週就面對一個問題:在這台機器上,我到底能做全參數訓練,還是只能做 LoRA?
這個問題的答案決定了後面所有事情。

先講為什麼我想要全參數。
我要復現的是 Trend Micro Primus 的三階段配方:CPT(持續預訓練)→ SFT(監督式微調)→ 推理蒸餾。其中 CPT 這個階段的目的是讓模型的語域整個往資安領域偏移——它要改變的是模型的底層表徵,不是在上面貼一層適配器。
LoRA 做 SFT 很好用,做 CPT 效果就有限。你可以做,但你會發現 loss 降不下去,因為可訓練的參數量根本不足以承載一次語域遷移。
所以問題變成:這台機器的 128GB,能撐起多大的模型做全參數訓練?
全參數訓練的記憶體佔用,主要來自四塊:
前三項是硬成本,加起來大約是 每個參數 12 bytes。如果優化器狀態也放 fp32 的主權重副本,會逼近 16 bytes。
用 12 bytes 粗估:
| 模型規模 | 權重+梯度+優化器 | 128GB 夠嗎 |
|---|---|---|
| 4B | ≈ 48 GB | 夠,還有空間給激活值 |
| 12B | ≈ 144 GB | 不夠 |
| 26B | ≈ 312 GB | 完全不用想 |
| 31B | ≈ 372 GB | 完全不用想 |
答案很清楚。在單台 128GB 上要做全參數訓練,模型規模的天花板就在 4B 附近。12B 已經翻過去了,而且不是差一點,是差一半。
當然你可以用 ZeRO offload 把優化器狀態丟到 CPU 記憶體——但 GB10 是統一記憶體架構,CPU 和 GPU 吃的是同一池,offload 省不到你想省的東西。這是統一記憶體的甜蜜點,也是它的天花板。
確定規模之後,接下來是選家族。我的候選條件有四個:
Gemma 4 家族在這四點上都過關,而 E4B 剛好落在我算出來的甜蜜點上——它是這個家族裡我能做完整全參數三階段訓練的最大選擇。
再往上是 12B。我認真考慮過「用 12B 做 LoRA」對上「用 E4B 做全參數」哪個好,最後選了後者,理由是:
這個專案的目標不是造一個最強的模型,是把一套配方完整跑通一次。
我需要知道 CPT 有沒有用、SFT 有沒有用、蒸餾有沒有用,需要每一階段都能單獨評測、單獨檢討。用 12B LoRA 我會得到一個可能比較強的模型,但我學不到配方裡哪一步真正有貢獻。用 E4B 全參數我會得到一個比較弱的模型,但我會拿到一張完整的地圖。
事後看,這個選擇是對的——因為第 12 天的 benchmark 結果狠狠打了我一巴掌,而正是因為我三階段都能拆開看,我才知道問題出在哪。
「你搞這麼多,直接呼叫商用 API 不是又強又便宜?」
在很多場景這是對的答案,我不會假裝不是。但這個專案有兩個條件讓它不成立:
第一,資料不能出境。 輸入是客戶的資安事件、告警內容、網路拓撲。這些東西不會、也不該離開地端。這不是保守,這是合約條款。
第二,這是產品不是內部工具。 交付給客戶的系統如果建立在別人的 API 上,你的成本結構、可用性、甚至產品的存續,都握在別人手上。對一個要賣進金融與製造業的資安產品來說,這個風險評估過不了。
所以「地端、可控、可稽核」不是技術偏好,是這個場景的入場券。而一旦你接受了地端這個前提,模型規模的選擇就會被硬體推到現在這個位置。
如果你也在評估要不要在單機上做垂直模型微調,我建議你用這個順序想:
大部分人的順序是反的,先挑了一個聽起來很強的模型,然後才發現訓不動。
明天進入 Primus 三階段配方,拆解 CPT、SFT、推理蒸餾各自在解什麼問題。
@aid3fend — AI 資安實戰紀錄,歡迎追蹤交流。