上一篇我们打好了地基推理的 Prefill/Decode 两阶段、显存账本权重 KV Cache 激活值、四个核心指标TTFT / TPOT / 吞吐 / 显存。这一篇进入核心提升区——学完这一层你才真正看懂 vLLM 那些参数背后到底在干嘛。这一篇讲三件事都是 vLLM 这类推理框架的命根子量化怎么把模型瘦身省显存、提速度KV Cache为什么每次推理都要存一堆中间记忆以及怎么省吞吐优化怎么让一张卡同时服务更多人、每个请求更快文章目录01 量化给模型瘦身为什么需要量化FP16 → INT8 → INT4各掉多少精度三种主流量化方法① GPTQ —— 逐层事后量化Post\-Training Quantization② AWQ —— 按重要程度加权量化③ SmoothQuant —— 把难量化的转移走一张表看懂三种方法02 KV Cache推理的中间记忆什么是 KV Cache为什么 KV Cache 这么占显存PagedAttentionvLLM 的命根子GQA / MQA给注意力减配03 吞吐优化一张卡服务更多人Continuous Batching别等最慢的那个人投机解码Speculative Decoding小模型起草大模型校验04 一页纸总结05 学完你能看懂 vLLM 的什么01 量化给模型瘦身为什么需要量化回想上一篇的显存账本权重显存 参数量 × 每参数字节数。FP32 4 字节FP16 / BF16 2 字节INT8 / FP8 1 字节INT4 / FP4 0.5 字节一个 70B 模型精度每参数字节权重显存FP162140 GBINT8170 GBINT40.535 GB同样是 70B从 FP16 压到 INT4显存直接砍掉 75%。这决定了你能不能把它塞进一张卡或者能不能省下卡数。量化 用更少的比特数去表示权重。就像一张照片从 4K 压到 1080p——体积小了但画质会有损失。FP16 → INT8 → INT4各掉多少精度精度显存精度损失适用场景FP16/BF16基准无追求极致精度显存够用INT8减半很小通常 1% 质量损失大多数生产场景性价比最高INT4减 75%明显复杂任务可能掉 1-3%显存紧张、端侧/单卡部署关键认知精度损失不是均匀的。简单任务摘要、翻译几乎无感复杂推理数学、代码、长链推理损失更明显。所以选精度要看任务下菜。三种主流量化方法① GPTQ —— 逐层事后量化Post-Training Quantization做法模型训练完拿一小批校准数据逐层把权重压到 INT4/INT8同时用误差补偿把每层的量化误差尽量抹平。原理不是简单粗暴地四舍五入而是量化完一层后用最小化输出误差的方式微调这一层的权重让量化前后的输出尽量一致。适用离线一次性量化。量化过程较慢要跑校准数据但量完就固定了推理时零额外开销。代表AutoGPTQ、GPTQ-for-LLaMa。② AWQ —— 按重要程度加权量化做法也是事后量化但核心洞察是——权重不是一样重要的。只有少数重要通道对应激活值大的通道对精度影响大其余大部分可以大胆量化。原理先分析校准数据找出哪些通道的激活值大重要对这些通道保留更高精度少量化一点其余通道狠量。相当于重点保护关键少数。适用比 GPTQ 在同等精度下通常质量更好推理速度也快同样适合离线量化。代表vLLM 内置支持 AWQ。③ SmoothQuant —— 把难量化的转移走做法针对**激活值activation**难量化的问题。权重好量化但激活值波动大、有离群值直接量化会爆。原理把激活值里的尖峰通过一个缩放系数迁移到权重上——让激活值变得平滑好量化代价是权重稍微难一点但权重好量。两边都好量了就能用 INT8 同时量化权重和激活。适用W8A8权重和激活都 INT8场景适合追求推理加速不只省显存还提速的部署。一张表看懂三种方法方法量化对象核心思想适用场景代表工具GPTQ权重为主逐层误差补偿离线量化、INT4 省显存AutoGPTQAWQ权重保护重要通道离线量化、质量优先vLLM 内置SmoothQuant权重激活激活尖峰转移给权重W8A8、追求推理加速vLLM / TensorRT-LLM一句话GPTQ 是逐层找补AWQ 是重点保护SmoothQuant 是把刺拔掉再量化。02 KV Cache推理的中间记忆什么是 KV Cache上一篇讲过注意力机制每个 token 都要和之前所有 token 算注意力。如果每次都重新算一遍前面所有 token 的 Key/Value那代价是 O(n²)慢到爆炸。KV Cache 把已经算过的 Key 和 Value 缓存下来新 token 来了直接复用不用重算。它就是你上一篇显存账本里的第二项随上下文长度 × 并发数增长是推理显存的大头。为什么 KV Cache 这么占显存公式上一篇讲过KV Cache 大小 ≈ 2K 和 V× 层数 × hidden_size × 上下文长度 × 精度字节 × 并发数一个 7B 模型8K 上下文、8 并发KV Cache 就能到32GB——比权重14GB还大。这就是为什么长上下文 高并发是显存杀手。PagedAttentionvLLM 的命根子问题传统推理框架给每个请求预先分配一整块连续显存像数组。但每个请求实际用多少 token 是动态的——预分配多了浪费少了不够。显存碎片化严重。PagedAttention 的核心洞察把 KV Cache 切成固定大小的小块page像操作系统分页一样按需分配。请求用多少就分配多少块块可以不连续地散落在显存各处。为什么省显存按需分配不再预分配整块利用率大幅提升可到 90%消除碎片小块可以散落存放不浪费边角显存共享多个请求如果前缀相同比如系统提示词一样可以共享同一批 KV Cache 块进一步省显存一句话PagedAttention 把 KV Cache 从整块预分配变成按页按需分配像内存分页一样让显存利用率从 60% 拉到 90%。这就是 vLLM 快、省显存的核心秘密。GQA / MQA给注意力减配注意力计算里有多个头multi-head attention。每个头都有自己的 K、VKV Cache 也就跟着翻倍。MHA多头注意力每个头都独立存 K、V → KV Cache 最大。GQA分组查询注意力把多个查询头共享同一组K、V 头。比如 32 个查询头只配 8 个 KV 头 → KV Cache 直接砍到 1/4。MQA多查询注意力更极端所有查询头共享 1 个KV 头 → KV Cache 最小但质量略有损失。方法KV 头数KV Cache质量MHA全部如 32基准最大最好GQA分组如 8减到 1/4几乎无损MQA1 个最小略降现状现在的模型包括 Llama 3、Mistral、DeepSeek普遍用GQA——在几乎不掉质量的前提下把 KV Cache 砍掉一大截。这也是为什么同样上下文新模型的 KV Cache 比老模型小得多。03 吞吐优化一张卡服务更多人Continuous Batching别等最慢的那个人问题传统批处理static batching是一整车一起出发——一批请求必须全部完成才处理下一批。如果批里有个超长请求其他短请求得干等GPU 大量空闲。Continuous Batching连续批处理谁先结束谁先走随时有新请求就插进来。GPU 上永远有活干不空转。一个请求的 token 生成完了 → 立即腾出位置让新请求进来短请求不用等长请求GPU 利用率大幅提升一句话Continuous Batching 让 GPU 像流水线而不是班车吞吐量通常能提升 2-10 倍。这是 vLLM 吞吐高的另一大秘密。投机解码Speculative Decoding小模型起草大模型校验问题Decode 阶段是逐字串行的每生成一个 token 都要完整跑一遍大模型而且 Decode 受带宽限制不是算力GPU 算力大量闲置。投机解码的核心思想让一个快的小模型先草拟接下来几个 token大模型一次性并行校验这几个 token 对不对。小模型draft model起草 3-5 个候选 token大模型target model一次性校验如果都对就一次接受多个 token对的部分直接采纳错的部分从错处重新起草效果一次校验能批发多个 tokenDecode 速度提升 2-3 倍取决于接受率。因为小模型快、大模型省了多次串行调用。一句话投机解码用小模型猜、大模型验的方式把串行的逐字生成变成批量的并行校验是当前最火的 Decode 加速手段。04 一页纸总结L2 推理优化三件套 ① 量化省显存 FP16 → INT8减半几乎无损→ INT4减 75%有损 GPTQ逐层误差补偿离线 AWQ 保护重要通道离线质量好 SmoothQuant激活尖峰转移给权重W8A8提速 ② KV Cache省显存 PagedAttentionKV Cache 按页按需分配 → 显存利用率 60%→90% GQA/MQA多个查询头共享 KV 头 → KV Cache 砍到 1/4 甚至更小 ③ 吞吐提速度 Continuous Batching谁先完谁先走 → 吞吐提升 2-10 倍 投机解码小模型起草 大模型校验 → Decode 提速 2-3 倍05 学完你能看懂 vLLM 的什么现在回头看你 vLLM 配置里那些参数vLLM 参数对应本篇知识--quantization awq / gptq量化方法选型AWQ 质量好 / GPTQ 省显存--kv-cache-dtype fp8KV Cache 也用低精度省显存--gpu-memory-utilization给 KV Cache 预留多少显存PagedAttention 按需用--max-num-seqs并发序列数上限影响 Continuous Batching 效果--speculative-model投机解码的起草小模型--enable-prefix-caching前缀共享 KV CachePagedAttention 的共享块一句话这一层学完vLLM 那些参数不再是玄学而是每个都能对应到一个具体的优化原理——你知道调它是在省显存、提吞吐还是加速度。