9.2 量化与高效推理:AWQ、GPTQ、Mooncake 与推测解码
1.为什么要把模型压小
9.1 节讲了推理服务怎么优化,但有个根本矛盾没解:模型太大了。一个 70B 的模型,FP16 下光权重就要 140GB,单张 80G 的卡都装不下,更别说边缘部署。量化(quantization)就是把模型的权重(有时也包括激活)从高精度浮点(FP16/FP32)压到低精度整数(INT8/INT4),让显存占用和计算量大幅下降,同时尽量不掉精度。
这一节我们讲清量化的基本原理、两种主流方法(AWQ/GPTQ)的区别,以及一个 2026 年的新趋势——KV cache 的分离式架构(Mooncake)。
2.量化的基本原理:浮点变整数
量化的核心操作很简单——把一个浮点数 映射到一个低 bit 的整数 :
这里 是缩放因子(scale), 是目标 bit 数(比如 4)。 越小越省,但精度损失越大。反量化时 。
关键难题是:不是所有参数都同样重要。如果全局用一个 scale,那些数值小但重要的权重会被量化噪声淹没。所以好的量化方法都在想办法"区别对待"——给重要的权重更细的粒度。这就是 AWQ 和 GPTQ 的出发点。
3.GPTQ:基于二阶信息的逐层量化
GPTQ(Generalized Post-Training Quantization)是经典的后训练量化方法。它的思路是逐层量化:对每一层,用一批校准数据观察该层的输入输出,然后基于误差的二阶信息(Hessian),贪心地决定每个权重该怎么量化才能让该层输出误差最小。
直觉上:GPTQ 知道每个权重对输出误差的"敏感度"(二阶信息),敏感的权重量化时格外小心,不敏感的大胆压。它能做到 INT4 权重量化,精度损失通常在 1% 以内。GPTQ 的缺点是量化过程本身要算 Hessian,比较慢。
4.AWQ:保护"重要"权重
AWQ(Activation-aware Weight Quantization)走了另一条路。它的关键观察是:不是权重大小决定重要性,而是该权重对应的激活(activation)大小决定重要性。如果某个权重连接的输入激活经常很大,那这个权重对输出影响就大,量化时要保护。
AWQ 的做法是:先跑一批校准数据找出"重要"权重(激活大的那些),然后给这些权重一个保护性缩放(per-channel scaling),让它们量化后的相对精度更高,其余正常量化。AWQ 比 GPTQ 快(不用算 Hessian),效果相当甚至更好,INT4 下几乎不掉精度,是 2026 年最流行的权重量化方法之一。
两者对比:GPTQ 基于二阶误差信息逐层优化,AWQ 基于激活重要性做通道缩放保护。实际选型上 AWQ 因为快、效果好,用得更多。
5.W8A8 vs W4A16:量化的两种档位
量化不只是压权重,还可以压激活,组合成不同档位:
- W8A8(权重 INT8 + 激活 INT8):权重激活都量化,用 INT8 矩阵乘法加速,速度收益大,但激活量化对精度影响更敏感,需要校准。
- W4A16(权重 INT4 + 激活 FP16):只压权重,激活保持高精度。显存大降(权重是大头),精度损失小,但矩阵乘仍是 FP16,速度收益不如 W8A8。AWQ/GPTQ 通常做这个档位。
选哪个看场景:要极致显存压缩(边缘部署)选 W4A16;要兼顾速度(服务端有 INT8 加速核)选 W8A8。
6.Mooncake:KV cache 的分离式架构
到 2026 年,长上下文推理的 KV cache 大到单机存不下,于是出现了 KV cache 分离式架构——代表是 Mooncake(月饼,Moonshot 提出的分离式推理架构)。
传统推理里,KV cache 和模型权重在同一组 GPU 上。Mooncake 的思路是把 KV cache 从 GPU 池里分离出去,放到专门的、更便宜的 KV cache 存储池(可以是 CPU 内存、SSD、甚至是网络存储),GPU 只在需要时按需取。这把"显存存 KV"变成了"便宜存储存 KV + 按需搬运",让长上下文推理的显存瓶颈被解耦。
这个思路和 PagedAttention(9.1 节)是一脉相承的——都在解决"KV cache 太大"。PagedAttention 是在单机 GPU 内做分页管理,Mooncake 是跨机做分离池化。长上下文 + 高并发的生产场景,两者经常配合。
7.推测解码:用小模型加速大模型
再补一个推理加速利器——推测解码(speculative decoding)。思路是:训练(或找)一个小模型(draft model),它生成速度快但质量略差。推理时让小模型先快速"猜"几个 token,然后大模型一次性并行验证这几个猜的 token——猜对的直接采纳,猜错的从第一个错处开始由大模型重新生成。
收益:大模型每前向一次能确认多个 token(而不是只生成一个),延迟下降。代价:要维护一个小模型,且猜错率不能太高。DeepSeek 的 MTP 头(8.1 节)天然就是草稿模型,所以 DeepSeek 推理用推测解码很顺手。
8.练习
Q1. 量化的基本公式是什么?为什么不能全局用一个 scale?
,。全局一个 scale 会让数值差异大的区域要么下溢要么上溢,重要的小数值被噪声淹没。所以要分通道/分块给不同 scale(AWQ/GPTQ 都这样做)。
Q2. AWQ 判断权重"重要性"的依据是什么?这和 GPTQ 有什么不同?
AWQ 依据是该权重对应的激活大小(激活大则该权重重要),给重要权重保护性缩放。GPTQ 依据是二阶误差信息(Hessian),逐层贪心优化让输出误差最小。AWQ 不用算 Hessian、更快。
Q3. W4A16 和 W8A8 各适合什么场景?
W4A16(权重 INT4 + 激活 FP16)显存大降、精度损失小,适合边缘部署和极致显存压缩;W8A8(权重激活都 INT8)能用 INT8 矩阵乘加速,速度收益大,适合服务端有 INT8 加速核的场景。
Q4.(面试题) Mooncake 这种 KV cache 分离式架构解决了什么问题?和 PagedAttention 是什么关系?
解决长上下文 KV cache 大到单机 GPU 存不下的问题,把 KV cache 从 GPU 池分离到便宜的专用存储池,按需搬运。和 PagedAttention 同源(都解决 KV 太大),但层级不同:PagedAttention 是单机 GPU 内分页,Mooncake 是跨机分离池化,长上下文高并发场景两者配合。
9.小结
量化让大模型能塞进小显存(AWQ/GPTQ 压到 INT4),分离式 KV 架构(Mooncake)解耦长上下文的显存瓶颈,推测解码用小模型加速大模型。这三者加上 9.1 的 vLLM,构成 2026 年 LLM 推理工程的核心工具箱。下一篇我们往应用层走,看怎么把模型搭成能干活的智能体(Agent)。
下一章见。