M4-108M4: Sequences & TransformersQuantization & AccelerationMedium
Mastery:

Quantization & Acceleration: 解释 W8A8 与 W4A16 的差异与取舍。

📐 Mathematical Definition
W8A8: weights INT8+activations INT8;W4A16: weights INT4+activations FP16\text{W8A8}:\ \text{weights INT8}+\text{activations INT8};\qquad \text{W4A16}:\ \text{weights INT4}+\text{activations FP16}
⚡ Executive Summary
Core Concept: W8A8 同时量化权重与激活(速度最快但激活难量化);W4A16 只量化权重到 4-bit(精度最稳、显存省 4 倍)。

📌 Key Takeaways

  • •
    W8A8:权重与激活都量化 → 可用 INT8 张量核心(最快)
  • •
    W4A16:只量化权重 → 显存省 4 倍、精度稳、但算力仍是 FP16
  • •
    激活比权重难量化(动态 + 离群值)

📐 Mathematical Derivations

数学机理:<strong>量化方案的命名</strong>为 W{权重比特}A{激活比特}。<strong>(1) W8A8</strong>——权重与激活都量化到 INT8;<strong>优点</strong>——(a) <strong>可用 INT8 张量核心</strong>(算力是 FP16 的 2 倍、带宽减半);(b) 权重与激活都省(显存与带宽)。<strong>难点</strong>——<strong>激活的量化</strong>:(a) 激活是<strong>动态</strong>的(随输入变化,范围不定);(b) 含<strong>离群值</strong>(少数通道极大);故需 (i) per-token 动态量化、(ii) 离群值处理(如 LLM.int8() 的离群分离、SmoothQuant 的缩放转移)。<strong>(2) W4A16</strong>——权重量化到 INT4、激活保持 FP16;<strong>优点</strong>——(a) <strong>精度最稳</strong>(激活不量化,避免了最难的部分);(b) <strong>显存省 4 倍</strong>(权重是显存主体,尤其大模型);(c) 实现相对简单(只需处理静态的权重分布)。<strong>缺点</strong>——(a) <strong>算力不加速</strong>(激活是 FP16,故仍需 FP16 的乘加;INT4 权重需反量化到 FP16 再算);(b) <strong>带宽收益有限</strong>(虽然权重读取量降 4 倍,但激活与 KV 仍是大头)。<strong>取舍</strong>——(a) <strong>显存受限(如单卡部署大模型)</strong> → W4A16(省显存最重要);(b) <strong>算力/吞吐受限(高并发服务)</strong> → W8A8(利用 INT8 张量核心);(c) <strong>追求极致</strong> → W4A8/W4A4(同时省显存与算力,但激活量化极难、需先进方法);(d) <strong>精度敏感场景</strong> → W8A16 或 W4A16(激活不量化)。<strong>实践现状</strong>——(a) <strong>W4A16</strong>(GPTQ/AWQ)是<strong>最流行的开源方案</strong>(vLLM/TGI 支持,精度好、部署简单);(b) <strong>W8A8</strong>(SmoothQuant/LLM.int8())在需要吞吐时使用;(c) <strong>W4A8/W4A4</strong> 是前沿(需专门 kernel 与算法)。<strong>关键判据</strong>——先判断瓶颈是<strong>显存/带宽</strong>还是<strong>算力</strong>(roofline 分析);decode 阶段多为 memory-bound(故 W4A16 有效)、prefill 阶段为 compute-bound(故 W8A8 有效)。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>'激活难量化'是核心约束</strong>——它决定了量化方案的演进顺序:先量化权重(静态、容易)、再量化激活(动态、难)。故 W4A16 先于 W4A8/W4A4 出现并成熟。② <strong>'W4A16 不加速算力'的常见误解</strong>——很多人以为'W4 就快 4 倍';实际上 (a) 权重读取快 4 倍(对 memory-bound 的 decode 有帮助);(b) 但计算仍是 FP16(需反量化);故加速比远小于 4 倍(通常 1.5~2.5 倍,来自带宽节省)。③ <strong>与 KV cache 量化的组合</strong>——长上下文场景中 KV cache 是显存大头,故常'权重 W4A16 + KV INT8'组合,同时压缩权重与 KV。④ <strong>per-token 动态量化的必要性</strong>——激活的范围随 token 变化(不同 token 的激活分布差异大),故需 per-token 计算 scale(动态量化);这带来额外开销(需先算 max),但精度提升显著。⑤ <strong>与 Flash Attention 的兼容</strong>——量化注意力需要专门 kernel(如 FP8 注意力);Hopper 的 FP8 张量核心使 FP8 注意力可行(FA3 支持)。⑥ <strong>面试要点</strong>——被问'W8A8 vs W4A16',应给出'<strong>量化对象 + 瓶颈(算力 vs 显存/带宽)+ 精度难度(激活难)+ 适用场景</strong>'的对比,并强调'<strong>W4A16 省显存但不加速算力</strong>'与'<strong>先判断瓶颈(roofline)再选方案</strong>';能提到'per-token 动态量化'与'KV 量化组合'是深度理解的标志。
⚠️ Common Interview Pitfalls
  • ✕
    以为 W4A16 能带来 4 倍算力加速
  • ✕
    在算力受限场景选 W4A16(应选 W8A8)
🎯 Interviewer Follow-ups
  • ?
    为什么 W4A16 不能加速算力?
  • ?
    什么场景选 W8A8?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM4-107: Quantization & Acceleration: 解释 NF4 与 INT4 的差异。📋Back to BankNext →M4-109: Quantization & Acceleration: 解释 KV Cache 量化的收益与风险。