跳到內容

術語★★★★★9 分鐘閱讀

LLM 量化:為什麼 4-bit 模型還能用

70B 模型怎麼塞進單張消費級 GPU — 以及這個魔法在哪裡會失靈。

登入以收藏

你如果在本機跑過開源 LLM,大概看過 llama-3-70b-Q4_K_M.gguf 這種檔名,然後想過 Q4 是什麼意思。它是「需要 4 萬美元的 GPU」跟「只要一張 1200 美元的 RTX 4090」的差別。量化是讓非百萬富翁也能用本地 LLM 的技術。這篇講它實際在做什麼、什麼時候會失靈。

模型存了什麼

現代 LLM 是幾億到幾千億個數字,叫參數或權重。預設每個是 16-bit 或 32-bit 浮點數。一個 70B 參數的 16-bit 模型光載入就要 140GB 記憶體(2 bytes × 70B)。這是問題,因為:

  • 消費級 GPU 像 RTX 4090 有 24GB VRAM
  • 專業 GPU 像 H100 有 80GB
  • 跑沒量化的 70B 要 4-8 張 H100,買起來 10 萬美元以上

洞見:每個數字 16 或 32 bit 大部分是 LLM 推論用不到的精度。你可以把每個數字換成很小的近似值,模型大致還能用。

量化實際在做什麼

量化是降低模型權重位元寬度的過程。最常見的等級:

  • FP16 / BF16(16-bit) — 標準「沒量化」格式。每參數 2 bytes。
  • INT8(8-bit) — 一半大小,多數任務保留 95-99% 原始品質。
  • INT4 / Q4(4-bit) — 四分之一大小,用現代技術保留 90-97% 品質。
  • Q3 / Q2 — 八分之一或更小,品質下降明顯,只在超大模型或記憶體極緊時用。

70B 模型:

  • BF16:140GB
  • INT8:70GB
  • Q4_K_M:約 40GB
  • Q3_K_M:約 32GB

40GB 塞進兩張 RTX 3090(二手 1500-2000 美元)或一張 RTX 6000 Ada(7000 美元),不用買 10 萬美元 H100 跑 BF16 版。

怎麼運作的(不講數學)

單純量化是:「找出這組數字裡的最小最大值,然後把每個換成 16 個(4-bit)等距值裡最近的那個」。快速但有損。

現代量化聰明很多。GPTQAWQGGUF Q-types(Q4_K_M、Q4_K_S、Q5_K_M 等)這類技術會做這些事:

  • 模型不同部分用不同精度量化,把最敏感的層保持較高位元
  • 在一個 tensor 裡用「混合精度」 — 把相似權重分組,每組獨立量化
  • 每組用 scaling factor 較好保留動態範圍
  • 用真實資料的小樣本校準量化以最小化誤差

結果是 Q4_K_M 量化在基準測試上通常只比原始 BF16 模型損失 1-3 個百分點。聊天用,常常感覺不出差別。對推到模型能力邊緣的程式或推理,有時候感覺得出來。

後綴是什麼意思

看到 Q4_K_MQ5_K_SQ4_0,llama.cpp 用的 GGUF 格式大致解碼:

  • Q4 / Q5 / Q6 / Q8 — 位元寬度:4、5、6、8 bit
  • K — 現代 k-quants,用混合精度區塊(同等大小品質比舊量化高很多)
  • S / M / L — K-quants 的小 / 中 / 大變體。大一點意味稍高大小和品質。
  • 0 / 1 — 舊的 legacy 量化類型(Q4_0、Q4_1)。新用途避開;K-quants 嚴格較好。

經驗法則:Q4_K_M 是最佳通用 4-bit。Q5_K_M 多 25% 大小換稍高品質。Q8_0 對多數任務跟 BF16 基本無法區分。Q3 以下是記憶體極緊時的最後手段。

量化哪些時候有效、哪些時候會壞

有效:

  • 30B+ 模型量化通常很優雅 — 權重裡有足夠冗餘
  • 標準聊天、摘要、翻譯、寫程式 — 品質損失小
  • 推論用量化(典型情況)比訓練用量化寬容很多

會壞:

  • 小模型(7B 以下)常常在激進量化下明顯受損。1.5B 模型的 Q4 可能比同模型的 Q8 差很多。
  • 極長 context 生成 — 量化誤差會在數千 token 上累積
  • 推到模型能力邊緣的任務(困難數學、新穎推理) — 損失 2-3% 準確率可能讓沒量化能成功的場景失敗
  • MoE 模型 — 看 MoE 那篇講為什麼這比較難
  • 視覺和音訊模型 — image token 有時候比文字對量化更敏感

那低精度訓練呢?

不同主題,術語有重疊。「混合精度訓練」(BF16 + FP32)幾年來就是標準。「FP8 訓練」現在前緣實驗室在用(DeepSeek-V3、Llama 3.1)大幅降低訓練成本。INT8 / INT4 訓練大致不行 — 品質損失太多。你看到的「INT4 量化」幾乎都是訓練後量化,不是從頭用 INT4 訓練。

什麼時候不要量化

生產 API 服務、每個百分點品質都重要、你有 GPU,跑 BF16。前緣實驗室內部都這樣,即使對外提供量化版。

做研究、量測小效應時,量化會干擾結果。比較模型時,在同一精度等級比較。

極小模型(3B 以下)目標邊緣裝置 — 有時候一個小但沒量化的模型比一個大但 Q4 的模型好。兩個都測。

關鍵推理(醫療、法律、財務決策) — 即使 1-2% 品質損失也重要。不要量化。

替你處理這些的工具

  • llama.cpp — 量化模型的主流推論引擎。讀 GGUF 格式。CPU、GPU、或 Apple Silicon 都跑得動。
  • Ollama — llama.cpp 的包裝,用友善 CLI 下載和跑模型。預設 Q4_K_M。
  • LM Studio — 桌面 app,可以並排比較不同量化等級。
  • vLLM — 生產級推論伺服器,支援 AWQ 和 GPTQ 做高吞吐量服務。
  • Hugging Face transformers + bitsandbytes — Python 裡載入時 INT8/INT4 量化。

多數使用者只需要知道:挑 Q4_K_M,除非有不挑的理由。

下一步

  • 怎麼挑自架技術棧 — 本地跑量化模型的實際設置
  • MoE 解釋 — 推論成本的另一個大架構槓桿
  • Speculative decoding — 又一個讓推論更快的方法

最後更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more

LLM 量化:為什麼 4-bit 模型還能用 · BuilderWorld