大型模型量化詳解:FP16、Q8、Q5、Q4 到 Q2 怎麼選?

系統說清大型模型量化的核心概念、常見版本差異與按顯存選型方法,幫你在效果、速度與資源成本之間找到最佳平衡。

量化的核心目標很簡單:用少量精度損失,換取更小體積、更低顯存占用與更快推理速度。
對本地部署使用者來說,選對量化版本,通常比盲目追求大參數更重要。

什麼是量化

量化是指把模型參數從高精度格式(如 FP16)壓縮為更低位寬格式(如 Q8Q4)。

可以把它理解為:

  • 原始模型:像高精度照片,清晰但檔案大。
  • 量化模型:像壓縮照片,細節略有損失但更輕更快。

常見量化版本對比

量化版本 精度/位寬 體積 品質損失 推薦場景
FP16 16 位浮點 最大 幾乎無損 研究、評測、追求極致品質
Q8_0 8 位整數 較大 幾乎無損 高配電腦,兼顧品質與效能
Q5_K_M 5 位混合 中等 輕微損失 日常主力,平衡方案
Q4_K_M 4 位混合 較小 可接受損失 通用預設,性價比高
Q3_K_M 3 位混合 很小 明顯損失 低配設備,先求能跑
Q2_K 2 位混合 最小 較大損失 極限資源場景,臨時可用

量化命名規則

gemma-4:4b-q4_k_m 為例:

  • gemma-4:4b:模型名稱與參數規模。
  • q4:4 位量化。
  • k:K-quants(改進的量化方法)。
  • m:medium(中等級別,常見還有 s/small、l/large)。

如何按顯存快速選型

內存/顯存 推薦量化
4 GB Q3_K_M / Q2_K
8 GB Q4_K_M
16 GB Q5_K_M / Q8_0
32 GB+ FP16 / Q8_0

建議先從能穩定跑起來的版本開始,再逐步提高精度,而不是一開始就追求最大模型。

實戰建議

  1. 預設從 Q4_K_M 開始,先驗證真實任務效果。
  2. 如果答案品質不夠,再升到 Q5_K_MQ8_0
  3. 如果主要瓶頸是顯存或速度,再降到 Q3_K_M
  4. 每次切換量化版本,都用同一批測試問題做對比。

用 llama-quantize 產生量化 GGUF

輸入應優先使用 FP16、BF16 或 F32 GGUF。不要把已經重度量化的檔案再次量化;--allow-requantize 可能進一步破壞品質。

1
2
3
4
./build/bin/llama-quantize \
  model-bf16.gguf \
  model-Q4_K_M.gguf \
  Q4_K_M

Windows 通常使用:

1
2
3
4
.\build\bin\Release\llama-quantize.exe `
  .\model-bf16.gguf `
  .\model-Q4_K_M.gguf `
  Q4_K_M

量化前後記錄檔案大小和雜湊:

1
2
ls -lh model-bf16.gguf model-Q4_K_M.gguf
sha256sum model-Q4_K_M.gguf

為什麼不能只按位元數估算顯存

權重之外還要為 KV cache、計算緩衝區、多模態 projector、桌面程式和後端開銷保留空間。因此,權重接近 8GB 不代表一定能完整裝入 8GB 顯示卡。建議預留約 10% 到 20%,再從後端日誌確認 GPU offload。

做一次可比較的驗收

使用相同模型、後端、上下文和提示詞測試不同版本:

1
2
llama-cli -m model-Q4_K_M.gguf -c 4096 -n 128 \
  -p "Summarize the trade-offs of model quantization."
項目 需要記錄的值
模型 完整檔名與雜湊
後端 CUDA、ROCm、Metal、Vulkan 或 CPU
上下文 -c 與實際 prompt token
記憶體 峰值 RAM、VRAM、是否部分 offload
速度 prompt processing 與 generation token/s
品質 固定問題的錯誤、格式和遺漏

程式碼、數學、長上下文和結構化輸出對量化更敏感。不要用單次聊天就宣稱某種量化「幾乎無損」。

結論

  • 品質優先:FP16Q8_0
  • 平衡優先:Q5_K_M
  • 通用預設:Q4_K_M
  • 低配兜底:Q3_K_MQ2_K

選型的本質不是「越大越好」,而是「在你的硬體條件下,達到最穩定可用的效果」。