平均每次 LLM API 调用中,约有 40-60% 的输入 Token 被浪费在模型并不需要的上下文上。这包括陈旧的对话历史、冗长的系统提示词,以及明明只需三个关键函数却包含完整文件代码的情况。这种浪费不仅增加了 API 账单开销,还因为模型需要处理冗余填充(Padding)而导致额外的延迟。

成本困境
从 2025 年到 2026 年,LLM API 的价格大约下降了 80%。如今达到 GPT-4 级别的性能仅需每百万 Token 0.40 美元,远低于 2023 年 3 月的 30 美元。然而,推理量的增长速度超过了价格下跌的速度。那些每项任务需要调用 50-200 次 LLM 的 Agentic 工作流,会将原本低廉的单 Token 价格转化为高昂的任务总成本。
这个问题在三个方面不断加剧:
上下文膨胀
Agent 在多轮对话中会不断累积上下文。到了第 30 轮,单次调用的输入 Token 可能是第一轮的 5-10 倍。其中大部分 Token 都是无效的陈旧数据。
冗余计算
缺乏缓存机制时,模型在每次调用时都会重新计算相同的系统提示词和对话前缀的注意力。对于一个 10K Token 的前缀,这意味着每个请求都会浪费数十亿次的 FLOPs。
硬件资源闲置
默认的 serving 配置会导致 GPU 在请求间隔期间闲置。如果没有连续批处理,一台时薪 3 美元的 H100 可能只能处理 50 tok/s,而非其极限的 16,000+ tok/s。
优化的核心不在于压榨那几个百分点的性能,而在于消除默认配置带来的 3-10 倍额外开销。下述技术将从源头针对性地解决每一项浪费。
模型层级的优化
模型层级的技术旨在降低每个参数的计算成本。它们在模型处理请求之前,直接对模型本身进行修改。
量化
量化将权重精度从 FP16 降低至 INT8、INT4 或更低。其权衡在于:精度的下降意味着更小的内存占用和更快的矩阵乘法运算,代价是轻微的精度损失。
SmoothQuant 将量化的难点从激活值转移到权重上,在几乎无损精度的前提下实现了 2 倍的内存缩减。GPTQ 和 AWQ 利用校准数据来确定每一层的最佳量化参数。谷歌的 TurboQuant(2026 年 3 月)甚至能将 KV Cache 本身压缩至每个值仅 3 比特,在零精度损失的情况下将 KV Cache 内存占用削减了 6 倍。
剪枝
剪枝通过移除模型中的冗余参数来瘦身。结构化剪枝会移除整个注意力头或 MLP 列;非结构化剪枝则将单个权重置零。一个经过剪枝的 6B 参数模型运行速度比其稠密版本快 30%,且在 MMLU 上得分 72.5,击败了未剪枝的 4B 模型(70.0 分)。
知识蒸馏
知识蒸馏训练一个较小的“学生”模型来模拟大型“教师”模型的输出分布。学生模型的运行成本仅为前者的一小部分。最佳的压缩流水线是 P-K-D-Q:先剪枝,再蒸馏,最后量化。每一步的效果都会叠加。
使用场景
对于 API 提供商和自部署用户而言,量化提供了最高的性价比。剪枝和蒸馏虽然需要训练算力,但能产生永久性更廉价的模型。如果你通过 API 消费 LLM,这些由提供商处理。如果是自托管,建议从量化(零训练成本)开始,然后根据特定负载评估剪枝和蒸馏。
系统层级的优化
系统层级的技术在不改变模型的前提下,最大化硬件利用率。它们运行在模型与网络之间的 Serving 层。
连续批处理
静态批处理会等待批次内所有请求完成后才接受新请求。短请求必须等待长请求生成完毕。连续批处理则动态地在旧请求完成时插入新请求,确保 GPU 始终处于饱和状态。
吞吐量的差异显著:在相同硬件上可提升 3-10 倍。Anyscale 在生产负载中实测,开启连续批处理后,聚合吞吐量提升了 23 倍。
PagedAttention 与 KV Cache 管理
KV Cache 存储已计算的注意力键值,避免模型在每个 Token 上重复计算。问题在于:为最大序列长度预分配 KV Cache 内存会浪费高达 90% 的 GPU 内存,因为大多数请求根本用不满整个上下文窗口。
PagedAttention(vLLM)将 KV Cache 拆分为小的、可复用的页面,按需分配。这将内存浪费减少了高达 90%,并使服务吞吐量提升至 24 倍,因为内存中能同时容纳更多请求。
ChunkKV 将语义块而非孤立 Token 作为压缩单元,从而在激进压缩下保留语言结构。RocketKV 则采用两阶段流水线:先进行粗粒度的 KV 驱逐,再对幸存者进行细粒度压缩。
投机解码
自回归解码每次生成一个 Token,导致 GPU 在每次前向传播中利用不足。投机解码引入了一个小型、快速的草稿模型,提前预测多个 Token。目标模型则在一次并行传递中验证它们。被接受的 Token 在数学上与目标模型单独生成的结果完全一致。
2-3x 典型加速
在通用查询上使用现成的 EAGLE3 草稿模型的生产基准测试。这种加速本质上是免费的:输出质量完全一致。
高达 5x 优化加速
针对特定领域或硬件优化的实现,相比标准自回归解码,可实现 5-5.5 倍的加速。
草稿延迟最关键
最新的基准测试显示,草稿模型的准确率与吞吐量之间关联甚微。草稿模型的延迟才是决定端到端速度的更强因素。
FlashAttention
FlashAttention 通过分块计算以及将 Softmax 与矩阵乘法融合,重组注意力计算以最小化内存 I/O。FlashAttention-3 提供了目前最快的定制注意力内核,并已集成到 vLLM 和 SGLang 中。
推理引擎对比
2026 年,四大引擎主导了生产级 LLM Serving。它们采用了不同的优化路径。
| 引擎 | 版本 | 吞吐量 (H100) | 核心特性 | 最佳适用场景 |
|---|---|---|---|---|
| SGLang | v0.4.3 | 16,200 tok/s | RadixAttention 前缀缓存 | 重前缀负载(RAG、聊天) |
| LMDeploy | Latest | 16,200 tok/s | 持续批处理调度 | 高吞吐量服务 |
| vLLM | v0.7.3 | 12,500 tok/s | PagedAttention, Blackwell 支持 | 灵活性、频繁模型切换 |
| TensorRT-LLM | Latest | 高并发下最高 | 编译型 CUDA 内核 | 单模型、长期生产环境 |
SGLang/LMDeploy 与 vLLM 之间 29% 的吞吐量差距,在重前缀负载中会缩小,此时 SGLang 的 RadixEquality 能提供额外优势。TensorRT-LLM 需要编译步骤,但一旦完成,在规模化运行时能提供最高的吞吐量。
对大多数团队的推荐:vLLM 适合频繁切换模型且希望快速上线的场景;SGLang 适合负载具有共享前缀(聊天机器人、RAG、多轮对话)的情况;TensorRT-LLM 则适合运行单一模型且吞吐量是首要任务的长期生产环境。
应用层级的优化
应用层级的技术旨在减少发送给模型的 Token 数量。对于通过 API 消费 LLM 的团队来说,这是投资回报率(ROI)最高的优化,因为它们能与提供商已完成的模型层和系统层工作形成叠加效应。
Prompt Caching(提示词缓存)
Prompt Caching 复用之前计算过的注意力层 KV 张量。当连续请求共享共同前缀(如系统提示词、对话历史)时,缓存部分会完全跳过预填充阶段。
Anthropic、OpenAI 和 Google 均提供此功能。对于超过 10K Token 的上下文,缓存部分可实现 80-90% 的延迟降低。根据 Anthropic 的实现,缓存的输入 Token 不计入速率限制,在 80% 命中率下实际上将吞吐量提升了 5 倍。
语义缓存
语义缓存更进一步:它存储完整的请求-响应对,并为语义相似的查询返回缓存结果。一旦命中,LLM 推理调用被完全消除。AWS 基准测试显示,对于具有重复查询模式的负载,这能节省 3-10 倍的成本。
上下文压缩
在 Agentic 工作流中,大部分输入 Token 都是低信号量的:旧的对话轮次、样板化的文件头、模型已处理过的文件内容。上下文压缩旨在推理前将其移除。
像 LLMLingua 这样的技术通过排序并保留关键 Token,可实现高达 20 倍的压缩率。但重写内容的压缩方法会引入保真度问题。基于摘要的方法在生产评估中准确度得分仅为 3.4-3.7/5,因为它们会改写掉文件路径、错误码和具体决策。
逐字压缩 采取了不同的路径:它删除低信息 Token,同时逐字保留每个幸存的句子。不生成新内容,不重新排版。JetBrains 发现,相比逐字压缩,摘要会导致 Agent 的轨迹延长 13-15%,因为 Agent 需要重新推导被改写掉的信息。
Morph Compact
Morph Compact 在自定义推理引擎上以 33,000 tok/s 的速度运行逐字上下文压缩。它能将上下文缩减 50-70%,同时逐字保留每个幸存句子。速度足够快,可以在每次 LLM 调用前内联运行,而不仅仅是在 95% 容量极限时才启用。
模型路由
并非每个请求都需要最昂贵的模型。将分类和提取任务路由到 Haiku(输入 $0.25/M)而非 Sonnet(输入 $3/M),在质量差异极小的情况下可实现 12 倍的成本降低。生产环境中的路由通常能带来 2-5 倍的综合成本节省。
堆叠优化层级
每一层都针对不同的瓶颈,它们叠加互补,互不冲突。
| 层级 | 降低目标 | 典型节省 | 实施难度 |
|---|---|---|---|
| 量化(模型) | 单参数内存 | 2-4x 内存,~50% 成本 | 低(已有工具) |
| 连续批处理(系统) | GPU 空闲时间 | 3-10x 吞吐量 | 低(引擎配置) |
| PagedAttention(系统) | KV Cache 内存浪费 | 高达 24x 吞吐量 | 低(使用 vLLM/SGLang) |
| 投机解码(系统) | 解码延迟 | 2-5x 速度 | 中(草稿模型选择) |
| 上下文压缩(应用) | 输入 Token 发送量 | 减少 50-70% Token | 低(API 调用) |
| Prompt Caching(应用) | 冗余预填充 | 缓存部分 80-90% 延迟 | 低(API 开关) |
| 模型路由(应用) | 单次请求成本 | 2-5x 综合节省 | 中(需分类器) |
一个具体的例子:一个运行在量化版 Llama 70B 模型(2倍廉价)上的编码 Agent,通过 vLLM 提供服务并启用连续批处理(5倍吞吐量),且在每次调用前使用 Morph Compact 压缩上下文(减少 60% 输入 Token)。综合效果是:与使用全上下文的朴素 FP16 服务相比,每项任务的成本大约降低 80%。
对于使用托管 API(OpenAI、Anthropic、Google)的团队,模型层和系统层由提供商负责。应用层的优化——特别是上下文压缩、Prompt Caching 和模型路由——才是你能控制的杠杆。这也是 ROI 最高的环节,因为它们减少了进入一个已被提供商优化过的系统的 Token 数量。
衡量优化效果
错误的指标会掩盖浪费。请分别追踪以下指标:
单位任务 Token 数
完成单位工作所消耗的总 Token 数(而非单次请求)。这是直接映射成本的指标。一个需要 50 次请求且平均 8K Token 的编码 Agent,每项任务消耗 400K Token。