当前位置: 首页 > news >正文

LLM 推理性能优化:从 vLLM 到投机解码的工程实践

LLM 推理性能优化:从 vLLM 到投机解码的工程实践

关键词:LLM 推理、vLLM、PagedAttention、量化、投机解码、KV Cache

1. 为什么要关心推理性能

训练 LLM 是少数大公司的游戏,但推理(Inference)是每一个落地团队都绕不开的成本中心。一个真实的数字:

  • 一张 A100-80G,跑 13B 模型 FP16,朴素 HuggingFace pipeline 大约只能稳定支撑5~10 QPS
  • 同一张卡,用 vLLM + 量化 + 投机解码,可以稳定到40~60 QPS

5~6 倍的差距,全部来自工程优化。本文系统梳理这些手段。


2. 先看瓶颈:LLM 推理为什么慢

LLM 推理分两阶段:

阶段计算特性瓶颈
Prefill(处理 prompt)计算密集算力(FLOPs)
Decode(逐 token 生成)访存密集显存带宽

绝大多数线上场景,输入长、输出短,但总耗时 70%+ 花在 Decode 上。Decode 阶段每生成 1 个 token,都要把整个模型权重从显存搬一遍——这就是为什么 LLM 推理是带宽 bound而不是算力 bound

理解这一点,所有优化手段都能归类:

  • 降低权重大小→ 量化
  • 减少搬运次数→ Batching、KV Cache 优化
  • 减少生成步数→ 投机解码、并行解码

3. KV Cache:理解一切优化的基石

Transformer 自回归生成时,每一步只新增 1 个 token,但需要它和前面所有 token 做 Attention。如果每次都重算,复杂度是 O(n²)。

KV Cache把历史 token 的 Key 和 Value 缓存下来,每步只算新 token 的 K/V,复杂度降到 O(n)。

但 KV Cache 本身特别吃显存

KV_Cache_Size = 2 (K和V) × num_layers × num_heads × head_dim × seq_len × batch × dtype_size

以 LLaMA-13B、seq_len=2048、batch=16、FP16 为例,KV Cache 单独占用约26 GB——比模型权重还大。

显存利用率往往不是被模型撑爆的,而是被 KV Cache 撑爆的。


4. vLLM 与 PagedAttention:把显存当虚拟内存管

传统框架给每个序列预分配max_seq_len大小的连续显存——一旦短请求多,显存碎片严重,利用率不到 30%。

PagedAttention(vLLM 的核心创新)借鉴 OS 虚拟内存:

  • KV Cache 切成固定大小的block(如 16 个 token)。
  • 每个序列维护一张block table,逻辑连续物理离散。
  • 不同序列可以共享 block(如 prefix caching、beam search)。

收益:

  1. 显存利用率从 ~30% 提升到>90%
  2. 同一张卡能容纳的并发请求数翻倍以上。
  3. 系统 prompt 相同时,prefix block 可全局复用,prefill 时间几乎为 0。

实践建议:除非你有特殊原因,否则 LLM 服务直接用 vLLM 起步,不要自己写 generate 循环。


5. Continuous Batching:吞吐的秘诀

朴素的 batching(Static Batching):把 N 个请求凑齐再一起跑,跑完一起返回。问题:

  • 短请求要等长请求一起结束(队头阻塞)。
  • 凑批等待引入额外延迟。

Continuous Batching(也叫 in-flight batching):

  • 每个 decode step 之后,已完成的序列立刻退出 batch。
  • 新到达的请求随时插入空位,立即开始 prefill。

效果:吞吐提升 2~3 倍,尾延迟显著下降。vLLM、TGI、TensorRT-LLM 都内置了这一机制。


6. 量化:用精度换带宽

量化把 FP16 权重压成 INT8 / INT4,访存量直接减半甚至 1/4。

6.1 主流方案对比

方案精度性能部署难度适用
GPTQINT4通用,社区生态成熟
AWQINT4比 GPTQ 精度损失更小
SmoothQuantINT8精度敏感场景
FP8 (H100)FP8极快有 H100 直接用

6.2 实操经验

  • 7B~13B 模型:INT4(AWQ)几乎无损,强烈推荐。
  • 70B 以上:INT4 也能接受,但建议先做评测。
  • 微调过的模型:量化前一定要重新跑一次业务评测集,不能只看 PPL。

6.3 KV Cache 量化

很多人忘记 KV Cache 也能量化。FP8 / INT8 KV Cache 在长上下文场景下,显存能再省 50%,对 32K+ context 应用是刚需。


7. 投机解码(Speculative Decoding):减少生成步数

Decode 阶段每步只产 1 个 token,无论模型多大都得跑一遍前向。投机解码用一个小模型先"猜"K 个 token,再用大模型并行验证:

小模型快速生成: t1', t2', t3', t4' 大模型一次性验证(一次前向,输出 5 个位置的 logits): - t1' 接受? → t2' 接受? → ... - 第一个被拒绝的位置开始重新生成

由于大模型的一次前向能并行验证多个位置(计算密集而非访存密集),整体步数从 N 降到 ~N/3。

收益:通常2~3 倍 latency 提升,且输出与原大模型完全一致(采样意义下等价)。

变种:

  • Medusa:不用小模型,给主模型加几个并行预测头。
  • EAGLE:在特征空间投机,比 Medusa 接受率更高。
  • Lookahead Decoding:完全无 draft 模型的并行解码。

实践中,对话类应用上 Medusa / EAGLE 性价比最高。


8. 系统层优化清单

除了模型层,系统层也有大量可挖空间:

  1. CUDA Graph:消除每个 step 的 kernel launch 开销,decode 阶段提速 10%~20%。
  2. FlashAttention-2/3:注意力算子重写,prefill 阶段性能翻倍。
  3. Tensor Parallel:单卡放不下时按列切分权重,跨 NVLink 通信。
  4. Pipeline Parallel:多机部署时按层切分,配合 micro-batch 隐藏通信。
  5. PD 分离(Prefill/Decode Disaggregation):把 prefill 和 decode 部署到不同节点,避免互相干扰,是 2024 年大型推理集群的趋势。

9. 一个真实的优化路径

我们对一个内部 13B 客服模型做的优化(A100-80G 单卡):

阶段配置QPSTTFT(ms)显存
baselineHF transformers FP16680028G
+ vLLMPagedAttention + ContBatch2235060G
+ AWQ INT4权重量化3828022G
+ FP8 KVCacheKV 量化4527016G
+ Medusa投机解码6227018G

10 倍提升,硬件没换。这就是工程优化的力量。


10. 选型建议

不同规模团队的推荐路径:

  • 小团队 / 起步:直接用 vLLM 或 TGI,开 AWQ 量化,足够支撑前期 99% 的需求。
  • 中型团队 / 自有模型:vLLM + 自定义调度 + Medusa head 微调,吞吐再提一档。
  • 大型集群 / 高 SLA:TensorRT-LLM + PD 分离 + 多级缓存,配合自研调度系统。

11. 结语

LLM 推理优化的本质是“让显存带宽花在刀刃上”。所有手段——量化、Paging、投机解码——都是在回答同一个问题:

如何在每次访存中产出更多 token?

理解这一点,再面对铺天盖地的新论文与新框架,你就不会迷失在术语里。先用 vLLM 和量化拿到 5 倍提升,再考虑投机解码和 PD 分离,工程上够用很久了。


至此,《AI 应用工程化》三部曲完结:

  1. RAG:让模型有知识
  2. Agent:让模型能做事
  3. Inference:让模型跑得起、跑得快

希望对正在落地 AI 应用的你有所帮助。

http://www.jsqmd.com/news/912317/

相关文章:

  • 2026北京海淀区公司注册哪家好?3家靠谱机构TOP排名 - 小柏云
  • lat.md:将任意项目代码转换为可查询的知识图谱
  • PVE Tools:如何在30分钟内为虚拟化架构师实现运维效率提升300%的技术杠杆
  • 经营分析怎么做?打通经营分析的4个环节:收入、成本、利润、业财
  • Kali365 钓鱼工具包绕过 MFA 窃取 Microsoft 365 账号的机理与防御研究
  • Java还有前景吗?2026年还能学吗?过来人谈谈见解
  • AgentScope:一个多Agent框架
  • AI健康助手如何重塑医疗:从症状分诊到慢性病管理的实践
  • 题解:洛谷 P13019 [GESP202506 八级] 树上旅行
  • 四川盛世钢联|成都钢材销售厂家|本地现货供货商|代理商批量拿货价优 - 四川盛世钢联营销中心
  • 文旅 GEO×AIAGC:OPD 一人部门如何引爆文旅内容与获客效率革命
  • 全网音乐免费下Go Music 音乐工具,听歌下载全搞
  • 魔兽争霸3终极优化指南:5分钟让经典游戏在现代电脑完美运行
  • 【AI面试临阵磨枪-088】Skill 如何做参数校验、依赖注入、权限控制、超时、重试、幂等?
  • 别再纠结QCustomPlot、QtChart和QWT了!手把手教你用PyQt5为Arduino/STM32数据选对绘图库
  • 炒股要有激情,就不聊股票的 怎么可能赚钱 股灾空仓最好,平时也要复盘的,有没有职业炒股的,要怎么做?
  • 设计师的“数字武器库”:CAD库分类解析与选型指南
  • 小红书怎么无水印保存视频到相册?2026详细操作攻略 - 科技大爆炸
  • 基于云端OpenClaw的情绪互动机器人系统-Milk-V Duo S + 机器人 端开发(7)
  • 2026最新台州玉环黄金回收+白银回收+铂金回收店铺门店权威榜单TOP1~5家推荐地址电话 - 诚信金利回收
  • 中文语境钓鱼即服务(PhaaS)产业链演化与闭环防御研究
  • 测试开发干货:用 Python 玩转数据库,告别 pymysql 的繁琐操作!
  • 华硕笔记本终极控制指南:用G-Helper替代Armoury Crate的完整教程
  • 淘宝淘金币自动化脚本终极指南:快速解决8大常见问题
  • 工装集成墙板十大品牌推荐
  • 如何轻松管理游戏DLSS版本:DLSS Swapper使用指南
  • JavaScript 垃圾回收机制详解
  • 【字节跳动】江苏苏州江南水乡临水低碳液冷算力集群
  • Claude商业分析报告合规性危机预警:GDPR/CCPA/《生成式AI服务管理暂行办法》三重穿透审计清单(含6份可直接套用模板)
  • UE5 蓝图 FPS 02 Event Beginplay