首頁 > 經典文化 > 經典作品 > W4A8與KV Cache量化怎麼選?AWQ、GPTQ、FP8與NVFP4

延伸主題

W4A8與KV Cache量化怎麼選?AWQ、GPTQ、FP8與NVFP4

W4A8把權重壓到4-bit、Activation保留8-bit;A…

W4A8與KV Cache量化怎麼選?AWQ、GPTQ、FP8與NVFP4

W4A8通常表示Weight使用4-bit、Activation使用8-bit。它比W4A16更積極降低記憶體與頻寬,也需要硬體和Kernel真正支援4-bit Weight × 8-bit Activation GEMM。KV Cache量化則是另一條路:模型權重只保存一份,KV會隨Token和Concurrency成長,因此長Context服務可能更受FP8或NVFP4 KV Cache影響。

AWQ、GPTQ、FP8與NVFP4不是同一層的選項。AWQ與GPTQ主要決定如何把已訓練權重量化;Activation Quantization處理Runtime資料;KV Cache Quantization處理注意力狀態。部署應先找出瓶頸,再選配方,不能只以「位元最低」排序。

重點快讀

  • W4A16:4-bit Weight、16-bit Activation,支援較廣。
  • W4A8:4-bit Weight、8-bit Activation,節省更多Bandwidth。
  • AWQ利用Activation分布保護重要Weight Channel。
  • GPTQ以二階近似逐層降低Weight Quantization Error。
  • SmoothQuant把Activation Outlier部分搬到Weight。
  • FP8 KV Cache支援範圍通常比NVFP4 KV Cache廣。
  • TensorRT-LLM目前提供W4A8 AWQ/GPTQ、FP8 KV與NVFP4 KV等配方。
  • 配方是否可用取決於模型、GPU世代與Backend。

權重、Activation與KV是三種資料

資料生命週期主要壓力
Weight模型載入後固定模型容量、HBM讀取
Activation每層、每Batch暫時產生GEMM、Peak Memory、Outlier
KV Cache隨Session Token累積長Context、Concurrency、Decode頻寬

只量化Weight可能讓模型放得下,長對話仍會因KV耗盡顯存;只量化KV則不一定讓巨大模型本身能載入。

W4A16和W4A8差在哪?

配方WeightActivation優勢限制
W4A16INT4/FP4FP16/BF16品質較穩、支援成熟Activation Bandwidth仍高
W4A8INT4/FP4INT8/FP8更低Memory Traffic與高吞吐潛力Outlier、Scale與硬體要求更高

W4A8是否更快,取決於Kernel是否原生支援、Dequantization是否融合,以及工作負載是否Memory-bound。沒有相容Kernel時,轉換成本可能抵消節省。

AWQ如何量化Weight?

Activation-aware Weight Quantization觀察Calibration Activation,找出對輸出較重要的Weight Channel,再以Scale調整保護這些權重。它通常屬Weight-only PTQ,不需要完整重新訓練。

  • 使用代表性Calibration Prompt。
  • 依Activation Magnitude決定Channel Scale。
  • Weight按Group量化到4-bit。
  • Runtime再解碼或使用專用Kernel。
  • 品質依Group Size、Scale與模型而變。

AWQ對常見Activation分布有效,若正式流量和Calibration差異很大,受保護Channel可能不再匹配。

GPTQ如何運作?

GPTQ以近似二階資訊衡量Weight誤差對Layer Output的影響,逐列或逐Block量化並更新剩餘權重補償誤差。

minimize || W X - Q(W) X ||²
using approximate Hessian from calibration activations
  • 通常比單純Round-to-nearest保留更多品質。
  • 量化過程較慢且需要Calibration。
  • Group Size和Activation Order影響結果。
  • 不同Runtime需要相容Packing Layout。
  • 量化Checkpoint不能假設跨引擎通用。

SmoothQuant處理Activation Outlier

Activation常有少數Channel值特別大,讓INT8或FP8 Scale被Outlier支配。SmoothQuant透過等價縮放,把部分Activation難度轉移到Weight:

Y = X W
  = (X / s) (s W)

縮小Activation Outlier後更容易量化,Weight則承擔相反Scale。平衡參數需要Calibration,並要和AWQ、GPTQ及Kernel配方相容。

Scale Granularity

粒度優勢代價
Per-tensorMetadata少、Kernel簡單Outlier影響整個Tensor
Per-channelWeight Channel較準Scale讀取和布局
Per-group4-bit Weight常用平衡Group Size需調校
Per-tokenActivation適應每個TokenRuntime Amax與Scale成本
Blockwise貼近局部分布Scale Metadata與硬體要求

KV Cache量化

KV Cache在每個Layer為每個Token保存Key與Value。將BF16 KV改成FP8,理論容量約減半;NVFP4可進一步下降,但格式和Scale更複雜。

KV格式容量方向硬體/軟體風險
BF16/FP16基線最廣容量高
FP8約50%Hopper、Ada、Blackwell及相容引擎Scale和長Context誤差
NVFP4更低Blackwell特定路徑4-bit誤差、配方限制

TensorRT-LLM目前的NVFP4 KV Cache需要搭配FP8 Weight/Activation量化Checkpoint。支援組合會隨版本變化,不能只看格式名稱。

TensorRT-LLM目前有哪些配方?

  • FP4。
  • FP8 Per-tensor。
  • FP8 Block Scaling。
  • FP8 Rowwise。
  • FP8 KV Cache。
  • NVFP4 KV Cache。
  • W4A16 AWQ/GPTQ。
  • W4A8 AWQ/GPTQ。

並非每個模型和GPU支援全部組合。正式選型要同時查Model Support Matrix、Hardware Matrix與Feature Combination Matrix。

硬體矩陣怎麼看?

GPU常見可用方向
AmpereW4A16、FP8 KV部分支援;W4A8依官方矩陣
AdaFP8、FP8 KV、W4A8/W4A16
HopperFP8多配方、FP8 KV、W4A8/W4A16
Blackwell SM100/103FP4、MXFP4、FP8、NVFP4 KV、W4A8/W4A16
Blackwell SM120支援組合較特定,需查當前矩陣

硬體支援不等於特定模型支援。Architecture、Attention、MoE、Multimodal和Backend都可能限制配方。

Calibration資料怎麼選?

  • 覆蓋正式使用語言與Domain。
  • 包含短、中、長Context。
  • 包含System Prompt與Tool Schema。
  • 包含Coding、數學、格式和拒答。
  • 避免只有通用Web文字。
  • 保存Tokenizer和Chat Template版本。
  • Calibration和Evaluation分開。

Activation-aware與Scale估計高度依賴Calibration分布。只用幾十條簡單聊天容易低估Outlier和長Context風險。

本機與Production的選擇順序

  1. 確認模型原始BF16/FP16品質和顯存。
  2. 先測W4A16 AWQ或GPTQ。
  3. 硬體支援時再測W4A8。
  4. 長Context容量不足時測FP8 KV。
  5. Blackwell與相容配方再測NVFP4 KV。
  6. 比較Accepted Task Rate、TPOT與P99。
  7. 建立Fallback到較高精度版本。

低精度格式原理可閱讀FP8、MXFP8和NVFP4差在哪?;KV容量可閱讀KV Cache是什麼?

任務驗收

任務檢查
聊天Instruction、語氣和一致性
CodingBuild、Tests、跨檔和Tool Call
數學精確答案和長推理
長ContextNeedle、引用、排序和KV誤差
結構化輸出JSON Schema、Function Arguments
安全拒答、PII和Policy Regression
  • 顯存和最大Concurrency。
  • TTFT、TPOT與Goodput。
  • Kernel是否真正走量化路徑。
  • Dequantization與CPU開銷。
  • 模型更新後回歸。

常見問題

AWQ和GPTQ哪個一定較好?

沒有固定答案。AWQ通常更依賴Activation重要性,GPTQ使用二階近似;模型、Group Size、Runtime和任務會改變結果。

W4A8一定比W4A16快嗎?

不一定。只有硬體和Kernel原生支援、Activation Bandwidth是瓶頸時才可能明顯受益。

KV Cache量化會改變短回答嗎?

可能影響較小,但仍需測試。誤差通常在長Context、多輪和精確引用更容易累積。

官方資料

量化選型要先分清Weight、Activation和KV Cache。AWQ與GPTQ決定權重如何壓縮,W4A8要求更完整硬體路徑,FP8與NVFP4 KV則決定長Context容量。真正答案來自模型、GPU與任務的共同測試。

作者與編輯責任

本文署名作者:

YOLO LAB 的文章由署名作者或編輯團隊完成。主編 Dex 負責編輯制度、重要事實查核原則、AI 協作規範與重大更正;文章中的分析與判斷以公開來源、作品內容及可驗證資料為依據。

文章若有需要補充或修正的資料,可透過聯絡頁提供原始來源、日期與具體段落,編輯團隊會依出版政策檢查。

發表迴響

探索更多來自 YOLO LAB 的內容

立即訂閱即可持續閱讀,還能取得所有封存文章。

繼續閱讀