量化:為什麼 4-bit 模型也能跑

artificial%20intelligence%20concept%2C%20digital%2...
發表時間:2026 年 10 月 21 日 | 更新日期:2026 年 10 月 21 日 | 編輯:雅寶社區編輯團隊
量化:為什麼 4-bit 模型也能跑 - 雅寶社區 · 頂客論壇

這樣做的好處是,每一組都能適應自己的局部範圍。某一組權重都很小,就用很小的尺度,解析度自然提高;某一組剛好有極端值,也不會拖累其他組。這就是為什麼 4-bit 量化在實際模型上可行:4-bit 的「16 個刻度」是相對於一個小分組而言,而不是相對於整個張量。分組越小,精度越高,但額外儲存的 scale 也越多,壓縮率會稍微下降。常見的 group size 是 128,這是在壓縮率與精度之間的一個平衡點。

誤差可以被補償,不一定要被消除

第二個關鍵是先進量化演算法會「補償」誤差,而不是放任誤差隨機累積。最經典的例子是 GPTQ。GPTQ 的作法不是一次把整層權重量化完,而是逐列進行:每量化一列權重,就用二階資訊(Hessian 矩陣的逆)估計這個量化誤差會對該層輸出造成多大影響,然後把誤差補償到尚未量化的權重上。白話一點說,就是「這一刀切下去損失了多少,就從旁邊還沒切的地方調整回來」,讓整層的輸出盡量接近原本的 FP16 結果。

AWQ 則從另一個角度切入。它觀察到,並非所有權重都同等重要;與較大激活值相乘的權重通道,對輸出影響特別大。於是 AWQ 在量化前先對這些「顯著通道」做縮放保護,讓它們在量化過程中不至於被壓得太慘。這種方法不需要複雜的反向傳播,校準速度快,而且對指令微調模型效果通常不錯。無論是 GPTQ 還是 AWQ,核心思想都一樣:量化誤差不是完全隨機的雜訊,而是可以被分析、被引導、被補償的。只要補償得當,4-bit 的損失可以壓到很小的程度。

推理過程中的容錯性

第三個關鍵是模型架構本身的容錯性。Transformer 有殘差連接(residual connection),每一層的輸出都會與輸入相加,這讓資訊有一條「高速公路」可以直接往後傳,不會因為某一層量化誤差較大就徹底崩壞。LayerNorm 或 RMSNorm 則會把激活值重新標準化,抑制數值範圍的劇烈變動。再加上大型語言模型普遍處於「過參數化」狀態,參數數量遠多於理論上所需,冗餘空間很大,少量權重被擾動並不足以改變整體行為。

還有一個容易被忽略的點:語言模型的輸出是離散 token。最終我們只取機率最高的 token(或從分佈中採樣),只要量化前後的正確 token 仍然排在前面,解碼結果就可能完全一樣。很多時候,4-bit 模型輸出的句子與 FP16 版本只有細微用詞差異,語意幾乎一致,原因就在這裡。當然,這種容錯性不是無限的;遇到需要精確數值計算、長鏈推理或罕見知識的任務,量化誤差仍可能被放大。這也是我們後面要談「什麼任務比較敏感」的原因。

三、主流 4-bit 量化技術盤點

理解了原理之後,我們來看市面上常見的 4-bit 量化方案。這些方法各有適用場景,沒有絕對的優劣,只有「適不適合你的硬體與用途」。以下介紹四種最常遇到的技術,以及它們的設計思路。

GPTQ:逐層誤差補償的經典

GPTQ 可以說是「權重-only 後訓練量化」的代表作。它的輸入是一個已經訓練好的 FP16 模型,加上一小批校準資料(通常幾百條文本),然後逐層、逐列地把權重量化到 4-bit,同時利用二階梯度資訊補償誤差。GPTQ 的壓縮率高、推理時可以用專門的 kernel(例如 ExLlama、Marlin)加速,在 GPU 上部署相當成熟。Hugging Face 上大量 4-bit 模型都是 GPTQ 格式,vLLM、Text Generation Inference 等推理框架也都有支援。

GPTQ 的缺點是量化過程需要校準資料,而且校準資料的分佈會影響結果。如果拿英文語料校準,卻用它來跑中文任務,精度可能不如預期。另外,GPTQ 對超低比特(例如 3-bit 以下)的穩定性較差,通常建議 4-bit 搭配 group size 128 使用。儘管如此,GPTQ 仍是目前 GPU 部署最實用的選擇之一,尤其當你需要高吞吐量、多使用者併發時,配合最佳化 kernel 的 GPTQ 模型往往能跑出很好的性價比。

AWQ:保護「顯著權重」的激活感知法

AWQ 全名是 Activation-aware Weight Quantization,顧名思義,它會參考激活值來決定哪些權重重要。研究發現,大型語言模型中約有 1% 的權重通道特別「顯著」,這些通道與較大的激活值相乘,對輸出影響遠超其他通道。如果對所有通道一視同仁地量化,這些顯著通道的誤差會嚴重拖累模型表現。AWQ 的作法是在量化前對顯著通道做等價縮放:把權重乘上一個大於 1 的因子、把對應的激活值除以同一個因子,數學上輸出不变,但權重的動態範圍被調整,量化時就比較不容易失真。

AWQ 的優勢是校準速度快、不需要梯度計算,而且對指令跟隨模型的效果通常很穩定。它同樣支援 4-bit、group size 128,並且有針對 GPU 的最佳化 kernel。在實務上,如果你要在單張消費級顯卡上跑 7B 到 14B 模型,AWQ 版本往往是很好的起點。不過 AWQ 也不是萬靈丹,對於某些架構或較小的模型,GPTQ 與 AWQ 的表現可能互有勝負,最好還是實際跑過基準測試再決定。

GGUF / llama.cpp 的 K-quants:混合精度量化

如果你用過 Ollama、LM Studio 或 llama.cpp,一定看過 Q4_K_M、Q5_K_S 這類命名。這是 llama.cpp 生態系的 K-quants 量化格式,特色是「混合精度」與「超級區塊」設計。以 Q4_K_M 為例,它並不是全部權重都 4-bit,而是把權重切成超級區塊,區塊內再細分,部分重要的子區塊用較高位寬(例如 6-bit),其餘用 4-bit,整體平均位寬大約落在 4.5 到 5 之間。這種設計讓 Q4_K_M 的品質通常明顯優於單純的 Q4_0,而檔案大小只增加一些。

GGUF 的最大優勢是生態完整、硬體適應性強。它可以在 CPU 上跑,也可以把部分層卸載到 GPU,還支援 Apple Silicon 的 Metal 加速。對於沒有獨立顯卡、或顯存不足以完整放下模型的玩家來說,GGUF 幾乎是唯一實用的選擇。Ollama 的興起更讓 GGUF 變成「本地模型」的代名詞。不過 GGUF 的推理速度在純 GPU 場景下,通常不如 GPTQ/AWQ 搭配專用 kernel 來得快;它犧牲了一些極致效能,換取部署彈性與跨平台能力。

bitsandbytes NF4:為常態分佈設計的 4-bit

NF4(NormalFloat 4-bit)是 QLoRA 論文中提出的一種量化資料類型,特別針對「權重近似常態分佈」這件事設計。傳統均勻量化把範圍切成等寬的格子,但常態分佈的權重在中間密集、兩端稀疏,等寬切法會浪費中間的解析度。NF4 改用分位數(quantile)來切點,讓每個量化區間容納大致相同數量的權重,等於把「刻度」集中在權重密集的地方。從資訊理論角度看,這是對常態分佈資料接近最優的 4-bit 表示。

NF4 最常出現在 QLoRA 微調場景:把基底模型用 4-bit NF4 載入,凍結權重,只訓練低秩適配器(LoRA)。這樣一來,原本需要 80GB 顯存才能微調的模型,有機會在單張 24GB 顯卡上完成。除了微調,bitsandbytes 也支援 4-bit 推理,但它的推理 kernel 效能通常不如 GPTQ 或 AWQ 的專用實作,因此較少被用在生產環境的高吞吐部署。NF4 的價值在於「訓練友善」與「記憶體極致節省」,而不是極致推理速度。

四、4-bit 模型實際跑起來的效能與品質

談完技術,我們回到實務:4-bit 模型到底省多少記憶體?速度是變快還是變慢?品質又會掉多少?這些問題沒有單一答案,因為它們取決於模型大小、硬體、批次大小與任務類型。以下提供一些具體的估算與觀察。

記憶體節省與速度:為什麼有時候反而更快

先看記憶體。以 7B 模型為例,FP16 權重大約 14GB,加上 KV cache 與其他開銷,通常需要 16GB 以上顯存才跑得舒服。換成 4-bit,權重理論上只要 3.5GB,加上量化尺度、激活值與 KV cache,實際大約 4 到 6GB。這意味著一張 8GB 的 RTX 4060 或筆電版顯卡,就有機會跑 7B 模型;24GB 的 RTX 4090 則可以挑戰 30B 甚至 70B 的 4-bit 版本。記憶體節省是量化最直接、也最沒有爭議的好處。

速度方面就有趣了。大型語言模型的解碼階段(一次生成一個 token)通常是「記憶體頻寬瓶頸」,而不是「計算瓶頸」。也就是說,GPU 的算力往往閒置,真正拖慢速度的是把權重從顯存搬進計算單元的過程。4-bit 權重讓每次需要搬運的資料量降到約四分之一,記憶體頻寬壓力大幅減輕,因此在小批次、單使用者的解碼場景下,4-bit 模型經常比 FP16 版本更快。這也是為什麼本地推理社群常說「量化不只是省記憶體,還會加速」。當然,前提是推理框架有針對低位元權重做最佳化,否則反量化開銷可能吃掉好處。

不過,當批次大小變大、進入「計算瓶頸」時,情況就不同了。高併發伺服器一次處理很多請求,GPU 算力被吃滿,4-bit 的優勢會從「頻寬節省」轉為「反量化開銷」。此時 FP16 或 FP8 可能反而有更高的吞吐量。所以,量化不是無腦加速鍵;它的效益高度依賴使用場景。單機本地推理、邊緣裝置、記憶體受限環境,4-bit 幾乎穩賺;大型雲端服務則要根據吞吐量與延遲目標仔細權衡。

品質掉多少?看基準與任務

品質方面,一般來說,4-bit 量化對大型語言模型的損失是「有感但可接受」。以常見的 7B 到 13B 模型為例,4-bit 版本在困惑度(perplexity)上通常比 FP16 高一些,在 MMLU、GSM8K 等基準上可能掉 1 到 3 個百分點,具體幅度因模型與量化方法而異。好的 4-bit 方案(例如 Q4_K_M、AWQ、GPTQ 搭配 group size 128)往往能保留九成以上的原始能力,日常對話、摘要、翻譯、分類等任務幾乎感覺不出差異。

但「平均表現」會掩蓋「個別任務的脆弱性」。有些模型在 4-bit 下會出現特定的退化模式:變得更嘮叨、更容易重複、對指令的遵循度下降,或者在多語言任務上明顯變差。這些問題不一定會反映在平均分數上,卻會影響實際使用體驗。因此,與其只看排行榜上的困惑度,不如用你自己的任務資料做小型評測。準備二三十條代表性提示,分別跑 FP16 與 4-bit 版本,比較輸出品質與穩定性,這比任何通用基準都更有參考價值。

什麼任務比較敏感?

根據經驗與社群回報,以下幾類任務對量化誤差比較敏感。第一是數學與程式碼生成:這類任務需要精確的數值計算與嚴格的語法結構,權重的小擾動可能導致計算錯誤或語法錯誤。第二是長鏈推理:多步驟推理會累積誤差,每一步的小偏差可能在後面被放大。第三是罕見知識與精確回憶:模型對冷門事實的記憶本來就比較脆弱,量化可能讓它更容易答錯或產生幻覺。第四是多語言與低資源語言:如果校準資料以英文為主,其他語言的表現可能掉得比英文更多。

相對地,閒聊、摘要、改寫、情感分類、資訊抽取等任務,通常對 4-bit 量化相當寬容。這些任務的輸出空間較大,即使模型內部表徵有些微擾動,最終結果仍能維持可用。這告訴我們一件事:選擇量化位寬時,應該先問「我要拿這個模型做什麼」,而不是一味追求最低位元。與其用 2-bit 模型跑數學,不如用 4-bit 或 5-bit 模型,換取穩定可靠的輸出。

五、實務上怎麼選、怎麼用

理解原理與效能之後,最後要談的是實務選擇。面對琳瑯滿目的量化格式,很多人會陷入選擇困難。其實只要根據硬體、推理框架與用途,就能歸納出一套簡單的判斷流程。

選擇量化格式的判斷流程

首先看硬體。如果你有獨立 GPU,而且使用 vLLM、Text Generation Inference 或 ExLlama 這類高效推理框架,優先選擇 GPTQ 或 AWQ。兩者都是 4-bit、GPU 最佳化,社群支援成熟。若你的顯存剛好卡在邊緣,可以比較同一模型的不同量化版本,看哪一個能完整放進顯存且速度可接受。若你使用的是 Apple Silicon、純 CPU,或需要把模型部分卸載到系統記憶體,則 GGUF 是首選,Q4_K_M 通常是品質與大小的甜蜜點。

其次看用途。如果你要微調模型,QLoRA 搭配 NF4 是標準做法,能在有限顯存下訓練適配器。如果你只是要快速試玩、寫程式輔助或本地聊天,Ollama 拉一個 Q4_K_M 模型最省事。如果你要部署給多人使用、追求吞吐量,則應該用 GPTQ/AWQ 搭配 vLLM,並實測不同批次大小下的延遲與吞吐。最後,別忘了確認推理框架是否支援該量化格式;不支援的格式再怎麼好,也跑不起來。

量化格式

典型位寬

適用場景

優點

注意事項

GPTQ

4-bit

GPU 推理、伺服器部署

生態成熟、kernel 最佳化、壓縮率高

需校準資料、低比特穩定性較差

AWQ

4-bit

GPU 推理、單機部署

保護顯著權重、校準快、品質穩定

仍需相容的推理框架支援

GGUF(Q4_K_M)

約 4.5-bit 混合

CPU、Apple Silicon、混合推理

跨平台、彈性高、Ollama 生態完整

純 GPU 速度通常不如 GPTQ/AWQ

NF4

4-bit

QLoRA 微調、極省記憶體

針對常態分佈最佳化、訓練友善

推理 kernel 效能較弱

常見踩坑與注意事項

第一個坑是「對小模型過度量化」。參數越少的模型,冗餘越少,對量化誤差越敏感。一個 1B 或 3B 的模型壓到 4-bit,品質損失可能比 7B 模型明顯得多;壓到 2-bit 或 3-bit,甚至可能直接失去可用性。如果你手上是小模型,建議至少用 5-bit 或 6-bit,或者選擇品質較好的 Q4_K_M,而不是盲目追求 Q2。第二個坑是「忽略 KV cache」。很多人只計算權重記憶體,卻忘了長上下文會讓 KV cache 暴增。這時候可以考慮 KV cache 量化(例如 FP8 或 INT8),但要注意它與權重量化是兩回事,效果與風險也不同。

第三個坑是「校準資料不匹配」。GPTQ 與 AWQ 都需要校準資料來決定量化參數。如果校準資料以英文程式碼為主,你卻拿模型來處理中文長文,量化後的表現可能不如預期。理想情況下,校準資料應該盡量接近實際使用分佈。第四個坑是「沒有實測就上線」。量化版本的品質會因模型、方法、位寬、group size 而異,網路上的評測只能參考。務必用你自己的提示集做 A/B 測試,確認輸出穩定、沒有異常重複或格式崩壞,再正式使用。

最後一個常被忽略的點是「不要量化 embedding 與輸出層到太低精度」。有些量化工具會把整個模型一視同仁地壓縮,但 embedding 層與 lm_head 對詞彙表徵很敏感,壓得太低可能導致罕見詞或特殊符號處理變差。許多高品質量化方案會讓這些層保持較高精度(例如 6-bit 或 8-bit),這也是為什麼 Q4_K_M 這類混合精度格式往往比純 4-bit 更穩定的原因。選擇量化版本時,不妨看一下它的量化配置,而不是只看檔名上的數字。

六、結語:量化不是魔法,是工程權衡

回到最初的問題:為什麼 4-bit 模型也能跑?答案不是單一技術,而是一連串設計的總和。權重分佈集中,讓分組量化能在低位寬下保留局部解析度;GPTQ、AWQ 等演算法補償誤差,讓量化損失不再隨機累積;Transformer 的殘差結構與過參數化,提供了天然的容錯空間;而推理時的記憶體頻寬瓶頸,更讓 4-bit 有機會在速度上反超 FP16。這些因素疊加起來,才讓「每個權重只剩 16 個刻度」這件事變得可行。

但量化終究是壓縮,不是免費的午餐。它用精度換記憶體、用校準換品質、用格式換部署彈性。4-bit 之所以成為當前主流,是因為它在「夠用的品質」與「大幅節省的資源」之間取得了很好的平衡。對大多數本地推理與中小型應用來說,4-bit 已經足夠好用;對需要極致精度或處理高敏感任務的場景,則應該考慮 5-bit、6-bit、8-bit,甚至維持 FP16。真正重要的不是追求最低位元,而是理解自己的需求,選出最合適的取捨點。

下次當你看到一個 4-bit 模型順暢地回答問題時,不妨想想背後發生的這些事:每一組權重有自己的尺度、每一個誤差被盡量補償、每一層的容錯被架構支撐。量化不是把模型「變笨」,而是把它「重新打包」,讓更多人能用更少的資源,接觸到原本遙不可及的大型語言模型能力。這正是開源模型生態最迷人的地方之一。

🏠 返回首頁