28 分钟
大模型与 AI Agent 前沿工程

推理是怎么变快变便宜的:量化、KV Cache 与服务化

搞懂大模型推理的性能瓶颈和主流优化手段,能跟工程团队同频聊延迟和成本

  • 理解推理两阶段:预填充与解码
  • 理解 KV Cache、批处理与并发
  • 理解量化(INT8/FP8/INT4)的收益与代价
  • 认识主流推理服务化手段与流式输出

为什么大模型推理又慢又贵

训练是“一次性把知识学进去”,推理是“每一次回答都要现场做海量矩阵运算”。要搞懂优化手段,先得把推理过程本身的两个阶段和它的瓶颈在哪弄明白。

1.1 预填充(Prefill)与解码(Decode)

大模型一次生成内容分两个阶段走。第一个是预填充阶段,一次性把你输入的所有 Prompt 全处理完,并行算出每层的表示。输入越长,这阶段的计算量就越大,属于计算密集型的活。第二个是解码阶段,逐个 Token 自回归生成输出,每生成一个 Token 都得把模型前向跑一遍,这阶段偏访存密集。

这能解释两个常见现象:为什么长 Prompt 的“首字延迟”高——预填充阶段计算量大;为什么输出越长总耗时越久——解码得一步步走。用户能感知到的两个关键指标,就是 TTFT(首 Token 时间)和 TPOT/吞吐(后续每个 Token 的生成速度)。

配对题概念与含义

1.2 KV Cache:避免重复计算

生成第 n 个 Token 时,前面 n-1 个 Token 的注意力键值(Key/Value)其实已经算过,KV Cache 把它们缓存下来复用,避免每步都重算整段序列,是推理加速的基础。代价是占显存:上下文越长、并发越高,KV Cache 占用越大,甚至成为显存瓶颈。

KV Cache 有不少工程优化,比如 PagedAttention,就是像操作系统管理内存分页那样管 KV,减少内存碎片;还有前缀缓存,相同的系统提示或前缀只算一次,多请求共享。

选择题

KV Cache 的主要作用与代价分别是?

1.3 批处理与连续批处理(Continuous Batching)

GPU 一次能同时处理多个请求。把多个请求凑成一个批次并行计算,能明显拉高吞吐、摊薄成本。传统的静态批处理,得等一批里最慢的请求跑完才能换下一批,GPU 很容易空转;连续批处理允许请求动态加入或退出,谁这一步算完就先返回,立刻补进新请求,是现代推理服务做高吞吐的核心手段。

1.4 量化:用更低精度换速度和显存

模型参数默认常用 16 位浮点(FP16/BF16)。量化是把权重/计算降到更低比特(INT8、FP8、INT4 等),从而减小显存占用、提升吞吐、降低成本。位宽越低越省,但与原模型的偏差风险也越大,需要用校准数据或评测集验证效果损失是否可接受。

ℹ️常见量化概念辨析

权重量化只压缩权重;权重—激活(W8A8 等)同时量化权重与激活,加速更明显但对数值更敏感;GPTQ、AWQ 等是常见的离线权重量化方法。要不要量化、选哪种,别光看理论上能省多少显存,得拿量化前后在你自己评测集上的效果对比,加上延迟、显存的实际测试结果来定。

选择题

关于量化,最准确的认识是?

1.5 服务化与用户体验

工程上还会用到这些:推理框架/引擎做高性能内核与调度;模型并行/张量并行把超大模型拆到多张卡;流式输出(SSE/WebSocket)让用户边生成边看到,能降低等待的焦虑(总时长不变的话,体感也更快);还有请求排队、优先级、限流、自动扩缩容这些服务治理的内容。

协作清单

和工程团队对齐时该问什么

做产品决策别拍脑袋,先把这几个问题摸清楚,才不会脱离工程现实:目标并发、P95 首字延迟、吞吐分别是多少;用什么精度、做不做量化、效果损失的评测结果怎么样;KV Cache 和显存够不够、最长上下文能支持到多少;开不开连续批处理和前缀缓存;高峰时段的排队和降级策略是什么;单 Token 成本和月度账单怎么测算。

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

MoE 模型把前馈层换成多个「专家」子网络,再加一个门控(router):每个 token 只激活少数几个专家。于是总参数量可以很大(知识容量大),但单次推理实际计算的参数却不多(速度快、成本低)。代价是显存仍要装下全部专家、门控路由可能负载不均。理解「总参数 ≠ 激活参数」,才看得懂这类模型的性能与成本宣传。