重點總結
分三個場景計算:推論取決於權重加 KV cache;微調取決於權重、梯度、優化器狀態同激活值;只有由零開始訓練先係叢集級需求。快速法則:全參數微調約「參數(B)× 16 至 20 GB」,LoRA 約「× 1.2」,4-bit QLoRA 約「× 0.7」。
關鍵比較
| 模型規模 | 全參數微調(最低) | LoRA(rank 16 至 64) | 4-bit QLoRA | 純推論(FP16) |
|---|---|---|---|---|
| 7B | 112 至 160 | 16 至 24 | 6 至 10 | 15 至 18 |
| 13B 至 14B | 210 至 280 | 28 至 40 | 12 至 18 | 27 至 32 |
| 32B 至 34B | 510 至 680 | 60 至 80 | 24 至 34 | 65 至 75 |
| 70B 至 72B | 1,120 至 1,440 | 130 至 170 | 48 至 60 | 140 至 155 |
| 235B MoE | 叢集級,須多節點 | 需要 4 至 8 張 80GB 以上 | 需要 2 至 4 張 80GB 以上 | 需要 4 至 8 張 80GB 以上 |
(單位為 GB,假設權重以 FP16/BF16 儲存、優化器為 AdamW 且無 CPU offload。)
實務建議
- 訓練期間記憶體由五項佔用:權重(每個參數 2 bytes)、梯度(2 bytes)、優化器狀態(Adam 為 8 bytes)、激活值,以及 1 至 2 GB 框架開銷——合共每個參數約 16 至 20 bytes。
- 推論記憶體 = 權重 + KV cache + 框架開銷。7B 模型 FP16 下,單次請求 2,048 token 上下文嘅 KV cache 約 1.4 GB(僅權重嘅 10%),但 32 個並發請求、上下文拉到 32,768 token 時,可以暴漲幾十倍,成為主要瓶頸。
- 精度直接決定權重佔用:FP32 每個參數 4 bytes、FP16/BF16 為 2、FP8/INT8 為 1、FP4/INT4 為 0.5(7B 模型分別為 28GB、14GB、7GB 同 3.5GB)。
- 記憶體不足嘅六個解法:降低精度;LoRA/QLoRA(只訓練 0.1% 至 1% 參數,記憶體減 70% 至 90%);梯度檢查點(激活值記憶體減 50% 至 70%,訓練慢 20% 至 30%);將優化器 offload 到 CPU;分散式策略(DDP 唔省記憶體;ZeRO-3 最省但通訊量最高;TP 需要 NVLink 高頻寬;PP 跨節點通訊較少);以及縮細 batch size 同序列長度。
- 唔好淨係睇容量:H100 頻寬 3.35 TB/s、H200 為 4.8 TB/s、B200 為 8 TB/s——遠高於消費卡嘅 1.79 TB/s;多卡訓練時,NVLink(H100 為 900 GB/s)遠勝 PCIe 5.0(單向約 64 GB/s)。
Tip:實務提醒——規劃推論伺服器時,預留 20% 至 30% 記憶體餘量,否則缺口往往喺上線後嘅並發壓力測試先浮現。至於買卡定租雲端 GPU,使用率高於 60% 時三年 TCO 通常買卡較划算;使用率低就雲端更合適。