LLM 101 · part 4
[LLM 101] 什麼是量化?Q4、Q8、FP16 到底差在哪
❯ cat --toc
TL;DR
量化就是 AI 模型的 MP3 壓縮。一個 14B 模型的 Q4_K_M 版比原版 FP16 小 75%(8.4 GB vs 28 GB),但品質損失不到 2%。日常使用選 Q4_K_M。記憶體有餘裕就升 Q5_K_M 或 Q6_K。Q2 和 Q3 除非真的沒辦法,不要碰。
白話版:模型名字後面那些亂碼到底是什麼
你每次打開 Ollama 的模型庫或 Hugging Face,會看到同一個模型列了十幾個版本:Q2_K、Q4_K_M、Q5_K_S、Q8_0、FP16。這些檔名看起來像 Wi-Fi 密碼。同一個模型,大小從 2 GB 到 30 GB 都有。到底在幹嘛?
這些其實都是同一個 AI 模型,只是被壓縮成不同的等級。這種壓縮叫做量化,而它是你能在筆電上跑 14B 模型的唯一原因。沒有量化,個人電腦上的 AI 還只會是實驗室玩具。
量化聽起來很可怕 — 你是在把模型腦袋裡的資訊「丟掉一部分」。但它真的有用,而且品質損失比你想的小很多。這篇文章解釋為什麼這樣做可行、怎麼看懂那些亂碼檔名、還有你到底該下載哪一個。
前言
你的手機裡有幾千首歌。原版錄音室檔案加起來應該有幾百 GB,但 MP3 把每首歌壓成幾 MB,你的耳朵幾乎聽不出差別。它的小技巧是:把人耳聽不到的頻率直接丟掉。
AI 模型的量化用的是一樣的技巧,只是對象換成模型的「記憶」。神經網路裡大部分的精度其實沒在做事 — 你可以把數字狠狠地四捨五入,模型照樣會回答得很好。這就是為什麼一個 14B 的模型可以塞進 9 GB 的記憶體,而不是原本的 28 GB。
上一篇我們聊了怎麼選模型大小。這篇放大一個當時講得很快的東西:那些 Q4、Q8、FP16 的後綴,以及為什麼你不用害怕那些看起來很小的數字。
量化到底在做什麼?
一個 AI 模型,最底層其實就是一份超巨大的試算表,裡面有一堆數字叫做權重(有時候也叫參數,意思一樣)。當一個 7B 模型說「70 億個參數」,它是真的在檔案裡塞了 7,000,000,000 個數字。跑模型 = 把這堆數字一次拿出來做運算。
每個數字用多少 bit 儲存呢?原版模型用的是 16 位元浮點數(FP16 或 BF16)— 你可以想成每個數字有 16 個小開關來表示它的值。這個精度夠細(大約 4 位有效數字),但每個數字要佔 2 bytes。
算一下 7B 模型原版的大小:
- 70 億個參數 × 2 bytes = 14 GB
這就是模型「原版」的檔案大小。
量化的意思就是用更少的 bit 來存每個數字。 從 16 bit 降到 4 bit,每個數字只需要四分之一的空間:
- 70 億個參數 × 0.5 bytes = 3.5 GB
同一個模型、同樣的知識、檔案只剩四分之一。這就是為什麼量化對在個人電腦上跑 AI 這麼重要。
為什麼這樣不會把模型搞壞?
這是讓人覺得很神奇的地方,但其實不是魔法。量化能成功有三個原因:
1. 神經網路本來就很「吵」。 模型的權重是靠訓練好幾兆個字學出來的,每一步都帶著梯度噪音。每個權重的「真實值」從來就不是精確的 — 有一大段範圍的數值都能讓模型表現差不多。把它們四捨五入到 4 bit 大部分還是落在那個範圍內。
2. 大部分權重又小又集中。 把任何一個模型的權重畫成長條圖,你會看到一個以 0 為中心的鐘形曲線。聰明的量化演算法(例如 llama.cpp 用的「K-quant」家族)會把相近的權重分組,共享一個縮放係數,讓有限的 4 bit 預算用在最需要精度的地方。
3. 錯誤是隨機的,不是系統性的。 每個權重都有一點點捨入誤差,但這些誤差並不會全部往同一個方向偏。當你在一次回答裡把幾千個權重乘起來,誤差大部分會互相抵消。模型的輸出會微微偏移,但不會壞掉。
音樂的類比在這裡非常貼切。MP3 並不是比 FLAC「笨」— 它只是用更少的 bit 儲存同一首歌,靠的是你的耳朵聽不出那些細節。4 bit 的模型對自己的權重做一樣的事。
解碼檔名:Q4_K_M 這些符號怎麼讀
這些名字看起來很隨便,但其實有一套規則。我們來拆解 Q4_K_M:
- Q = Quantized,量化過的
- 4 = 平均每個權重用 4 個 bit
- K = 用比較新的 K-quant 演算法(更聰明的權重分組方式,2023 年在 llama.cpp 裡引入,見 PR #1684)
- M = Medium 中等版本(另外還有 S 小版和 L 大版,用極小的大小差異換一點點品質)
其他常見的後綴:
| 名字 | 是什麼 |
|---|---|
Q8_0 | 8 bit,舊版演算法(沒有 K 分組)。幾乎無損。 |
Q6_K | 6 bit K-quant。品質極高,檔案中等。 |
Q5_K_M | 5 bit K-quant 中等版。絕佳平衡。 |
Q4_K_M | 4 bit K-quant 中等版。日常王者。 |
Q4_K_S | 4 bit K-quant 小版。略小一點、品質略低一點。 |
Q3_K_M | 3 bit K-quant 中等版。明顯變差。只有記憶體很緊才考慮。 |
Q2_K | 2 bit。救急用。 |
FP16 / BF16 | 原版,沒壓縮過。 |
FP8 | 8 bit 浮點數。資料中心 GPU 常用(不是 GGUF 格式)。 |
AWQ、GPTQ | 不同的量化方法,GPU 伺服器比較常用(不是 Ollama 的主力)。 |
如果你只記得一個名字,記 Q4_K_M。當你輸入 ollama run qwen3:14b,Ollama 預設就是下載這個版本,而這是 90% 情況下的正確選擇。
品質階梯
每個等級實際上要付出多少品質代價?下面的數字參考 llama.cpp 的 perplexity 測試(perplexity 是一個「越低越好」的品質分數,跟 FP16 的差距越小,代表品質損失越小):
| 等級 | 大小比(對 FP16) | 品質損失 | 白話版 |
|---|---|---|---|
| FP16 | 100% | 0%(基準) | 原版,檔案超大 |
| Q8_0 | 約 53% | < 0.1% | 跟原版幾乎沒差 |
| Q6_K | 約 41% | 約 0.3% | 發燒友等級,記憶體夠就值得 |
| Q5_K_M | 約 35% | 約 0.6% | 優秀,有餘裕的甜蜜點 |
| Q4_K_M | 約 30% | 約 1.5% | 日常王者,幾乎感覺不到差別 |
| Q3_K_M | 約 24% | 約 4% | 開始掉了,回答會變糊 |
| Q2_K | 約 18% | 約 10%+ | 最後手段,明顯變笨 |
有兩件事值得注意:
- FP16 到 Q4_K_M 之間,你只掉了約 1.5% 的品質,卻省下 70% 的檔案。 這是一筆極划算的交易。這就是為什麼 Q4_K_M 是預設值 — 它剛好站在曲線最有利的位置。
- Q4 以下,品質就開始往下跳水。 Q3 明顯比 Q4 差,Q2 明顯比 Q3 差。省下的大小越來越小,但損失的品質越來越大。
記憶體速查表
以下是各個等級需要多少記憶體的估算公式。上一篇用的 B × 0.6 是 Q4 版的公式,這裡把全部等級列出來:
| 等級 | 記憶體公式 | 7B 範例 | 14B 範例 | 30B 範例 |
|---|---|---|---|---|
| FP16 | B × 2.0 | 14 GB | 28 GB | 60 GB |
| Q8_0 | B × 1.1 | 7.7 GB | 15.4 GB | 33 GB |
| Q6_K | B × 0.85 | 6.0 GB | 11.9 GB | 25.5 GB |
| Q5_K_M | B × 0.7 | 4.9 GB | 9.8 GB | 21 GB |
| Q4_K_M | B × 0.6 | 4.2 GB | 8.4 GB | 18 GB |
| Q3_K_M | B × 0.45 | 3.2 GB | 6.3 GB | 13.5 GB |
| Q2_K | B × 0.35 | 2.5 GB | 4.9 GB | 10.5 GB |
另外要留 1-2 GB 給模型「思考」的工作記憶體(模型在跑的時候除了權重以外還需要臨時空間,技術上叫 KV cache,但名字不重要)。
舉個例子:如果你有一台 16 GB 的筆電,扣掉系統大概剩 10 GB 給 AI 用,那 Q4_K_M 剛好能舒服地跑 14B 模型。同一個模型用 FP16 來跑的話,你至少要一台 32 GB 的電腦。
實戰範例:同一個模型的六個版本
把所有東西結合起來看一個真實例子 — 阿里巴巴的 Qwen3 14B。下面的檔案大小是從 Hugging Face 上的 bartowski/Qwen_Qwen3-14B-GGUF repo 直接抄來的,那裡公開了完整的量化 ladder:
| 檔案 | 大小 | 能跑的機器 | 品質 |
|---|---|---|---|
Qwen3-14B-BF16 | 29.54 GB | 32 GB Mac、48 GB 顯卡 | 100%(原版) |
Qwen3-14B-Q8_0 | 15.70 GB | 24 GB 顯卡、32 GB Mac | ~99.9% |
Qwen3-14B-Q6_K | 12.12 GB | 16 GB Mac、24 GB 顯卡 | ~99.7% |
Qwen3-14B-Q5_K_M | 10.51 GB | 16 GB Mac | ~99.4% |
Qwen3-14B-Q4_K_M | 9.00 GB | 16 GB Mac、12 GB 顯卡 | ~98.5% |
Qwen3-14B-Q3_K_M | 7.32 GB | 12 GB Mac、8 GB 顯卡 | ~96% |
注意 Q4_K_M(9.00 GB)到 Q3_K_M(7.32 GB)之間的落差。你省下 1.68 GB,卻多掉了 2.5% 的品質 — 除非你真的塞不下 Q4,這筆交易很差。反過來從 Q4_K_M 升到 Q5_K_M,要多花 1.51 GB 卻只換回 0.9% 的品質 — 除非你在實際使用中感覺得到,也不太划算。
Q4_K_M 那道「懸崖」是真的。 它是預設值是有原因的。
關於 Ollama 官方 repo:ollama.com/library/qwen3 對 14B 只提供三個 tag — q4_K_M(預設)、q8_0、fp16。上面那張完整表格只有在 Hugging Face 的 GGUF repo(例如 bartowski 的那個)才找得到。這算是常態:Ollama 只收最熱門的幾個等級,想要 Q5_K_M 或 Q6_K 就得自己去抓 GGUF 檔。
常見誤解
「Q4 代表模型只剩 FP16 的 25%。」 不對。Q4 的意思是權重只用 25% 的 bit,不是模型只剩 25% 的智商。品質損失通常是 1-2%,不是 75%。
「記憶體允許的話應該選最高品質的版本。」 不一定。一個剛好塞滿記憶體的模型會跑得很慢 — 因為系統在邊緣頻繁換頁。留 2-3 GB 餘裕、選低一階的量化,實際體感常常比較好。
「大模型的 Q4 vs 小模型的 Q8,哪個比較好?」 幾乎一定是大模型的 Q4。14B 和 7B 之間的差距遠大於 Q8 和 Q4 之間的差距。要做取捨的話,優先選更多參數,而不是更高精度。
「GGUF、AWQ、GPTQ 這些量化格式效果都一樣。」 不完全。GGUF 是 llama.cpp 和 Ollama 用的,個人電腦上最常見。AWQ 和 GPTQ 在用 vLLM 跑 NVIDIA 顯卡的時候比較常見。同樣 bit 數下品質差不多,但檔案格式不能互通。
所以我到底該選哪一個?
按用途給結論:
- 日常聊天、寫作、翻譯 →
Q4_K_M,不用猶豫。這是 Ollama 預設下載的版本,也幾乎永遠是對的選擇。 - 寫程式、數學、推理 → 記憶體夠就選
Q5_K_M或Q6_K。小小的精度誤差對程式碼比對一般文章殺傷力大。 - 記憶體很夠(32 GB+) →
Q6_K或Q8_0。發燒友模式。你可能感覺不到差別,但也不會吃虧。 - 記憶體很緊(8 GB 以下) →
Q4_K_S(Q4_K 的小版),或更好的選擇是換成小一級模型的 Q4_K_M。一個 Q4_K_M 的 7B 永遠勝過 Q2_K 的 14B。 - 資料中心 GPU 搭 vLLM → 那是另一個世界,看 FP8 或 AWQ,不要用 GGUF。
在 Ollama 裡,當你輸入 ollama run qwen3:14b,預設就是 Q4_K_M。14B 在官方 repo 只有三個 tag:
ollama run qwen3:14b # Q4_K_M 預設(約 9 GB)
ollama run qwen3:14b-q8_0 # 幾乎無損(約 16 GB)
ollama run qwen3:14b-fp16 # 原版(約 30 GB)
想要 Q5_K_M 或 Q6_K 這種 Ollama 沒收錄的等級,直接從 Hugging Face 的 GGUF repo 抓就好。Ollama 支援這種寫法:
ollama run hf.co/bartowski/Qwen_Qwen3-14B-GGUF:Q5_K_M
ollama run hf.co/bartowski/Qwen_Qwen3-14B-GGUF:Q6_K
同一個問題丟給不同版本,看看你能不能分辨。大部分人分不出來 — 這正是重點所在。
一句話總結
量化就是 AI 模型的 MP3。Q4_K_M 縮掉 70% 檔案,只花不到 2% 品質,這就是為什麼它到處都是預設值。
下一篇我們會聊:什麼是 Context Window?為什麼 AI 在長對話裡會「忘記」前面說過的話?它一次到底能讀多少字?
這是「LLM 101」系列的第四篇。上一篇:那麼多模型,到底該下載哪一個?
常見問題
- AI 模型的量化是什麼?
- 量化就是 AI 模型的壓縮。原本每個參數用 16 個 bit 儲存,量化之後改用 4 個或 8 個 bit。模型大小會縮到原本的 1/2 到 1/4,在同一台電腦上跑得更快,但品質損失小到多數人感覺不出來。就像音樂的 MP3 和 FLAC 的差別。
- Q4_K_M 是什麼意思?
- Q4_K_M 是 llama.cpp 和 Ollama 最常用的量化格式。Q4 代表每個參數平均用 4 個 bit、K 是比較新的 K-quant 演算法(分組壓縮更聰明)、M 是中等版本(另外還有 S 小版和 L 大版)。日常使用選 Q4_K_M 就對了 — 比原版小 70%,品質損失不到 2%。
- 用 Q4 會不會讓模型變笨很多?
- 不會。Q4 跟 FP16 相比,品質分數通常只掉 1-2%,差距遠小於不同大小模型之間的差異(例如 7B 和 14B)。日常對話時,多數人分辨不出一個調校好的 Q4 跟原版有什麼不同。
- 我該下載哪一個量化版本?
- 日常聊天、寫作用 Q4_K_M,size 和品質的最佳平衡。記憶體有餘裕就升到 Q5_K_M 或 Q6_K。寫程式或數學任務建議 Q6_K 以上。避免 Q2 和 Q3 — 除非記憶體真的很緊,品質掉得很明顯。