吞吐量关键指标:吞吐量、延迟、首Token延迟、TTFT、TPOT等

在优化大模型推理服务时,我们首先需要建立一套统一的“度量语言”。如果团队对“快”和“好”的定义不一致,任何性能优化都无从谈起。本节将聚焦于吞吐量场景下最核心的六个指标:吞吐量(Throughput)、延迟(Latency)、首Token延迟(TTFT)、单Token生成时间(TPOT),以及由它们推导出的端到端延迟与每秒请求数(QPS)。理解这些指标的定义、测量方式与相互制约关系,是后续所有调优策略(如Continuous Batching、PagedAttention)的前提。

核心原理:为什么单一指标会误导优化?

大模型推理服务是一个典型的多阶段流水线:请求先经过预填充(Prefill)阶段处理输入Token,再进入解码(Decode)阶段逐Token生成输出。这两个阶段的计算特征截然不同——预填充是计算密集型的矩阵乘法,解码则是访存密集型的自回归生成。因此,任何单一指标都无法完整反映服务质量。

吞吐量与延迟之间存在经典的倒挂关系:当系统同时处理更多请求(提高吞吐)时,单个请求在队列中等待的时间变长,延迟随之上升。反之,若追求极低延迟(如串行处理每个请求),GPU算力将被大量闲置,吞吐量急剧下降。优化的本质是在资源利用率与用户体验之间寻找平衡点。

关键认知:吞吐量衡量的是“系统整体产出能力”,延迟衡量的是“单个请求的体验”。两者并非对立,而是通过并发度这一杠杆相互关联。理解这一关系,是读懂后续所有优化策略的基础。
推理服务关键指标时序关系图 时间 → 请求到达 排队等待 调度器排队 预填充 Prefill 处理输入Token 计算密集 解码 Decode(循环) 逐Token生成输出 访存密集 TPOT = 每步耗时 完成 循环 TTFT(首Token延迟) TPOT(每Token生成时间) 端到端延迟 = 排队 + TTFT + TPOT × 输出Token数 吞吐量 吞吐量 = 并发请求数 × 平均输出Token数 ÷ 平均完成时间(Tokens/s)

指标定义与测量方法

下表汇总了各核心指标的定义、单位与测量要点,是后续分析的基础工具。

指标 定义 单位 测量要点
吞吐量 系统单位时间内生成的Token总数 Tokens/s 需在稳定并发下持续测量,避免冷启动影响
QPS 每秒完成的请求数量 req/s 与输出长度强相关,需注明平均输出Token数
TTFT 从请求发出到收到第一个Token的时间 ms 包含网络、排队、预填充时间;对交互式应用至关重要
TPOT 解码阶段生成单个Token的平均耗时 ms/Token 通常取稳定解码阶段的平均值,排除首Token
端到端延迟 从请求发出到完整响应返回的总时间 ms ≈ TTFT + TPOT × (输出Token数 - 1)

方法流程:如何正确测量与解读指标

在实际压测中,建议按照以下流程获取可靠指标:

  1. 确定负载模型:明确并发数、请求到达分布(固定速率或泊松分布)、输入Token长度与输出Token长度的比例。不同负载模型下,指标表现差异巨大。
  2. 预热系统:先发送少量请求触发CUDA Kernel加载、显存分配等初始化操作,等待GPU利用率稳定后再开始正式测量。
  3. 分位点统计:不要只关注平均值,应同时记录P50、P95、P99分位值。P99 TTFT能反映长尾延迟,对用户体验影响更大。
  4. 区分阶段测量:在服务端日志中分别记录排队时间、预填充耗时、每步解码耗时,便于定位瓶颈。
# 压测工具输出示例(vLLM benchmark_serving)
# 并发数=16,输入长度=512,输出长度=256
Throughput: 2,847 tokens/s
Total time: 45.2s
Requests: 128
Successful requests: 128

TTFT (ms):
  P50 = 385.2 | P95 = 612.8 | P99 = 890.3
TPOT (ms):
  P50 = 42.1  | P95 = 58.7  | P99 = 76.4

End-to-end latency (ms):
  P50 = 11,204 | P95 = 15,876 | P99 = 19,432
解读要点:上述输出中,P50 TPOT为42.1ms意味着平均每秒生成约23.7个Token。若用户感知“打字机效果”流畅,TPOT应低于50ms(即每秒至少20个Token)。若P99 TTFT超过1秒,交互式应用将明显感觉“卡顿”。

案例场景:聊天机器人的指标权衡

假设我们部署一个面向终端用户的聊天机器人,平均输入200 Token,输出300 Token。通过压测得到两组配置数据:

  • 配置A(低并发):并发数=4,吞吐量=850 Tokens/s,P50 TTFT=180ms,P50 TPOT=35ms
  • 配置B(高并发):并发数=32,吞吐量=2,400 Tokens/s,P50 TTFT=650ms,P50 TPOT=55ms

配置B的吞吐量是A的2.8倍,但TTFT增加了3.6倍,TPOT也恶化了57%。对于聊天场景,用户能容忍约1秒的初始等待,但若每个Token间隔超过80ms,打字机效果就会变得断断续续。因此,配置B虽然吞吐更高,但已接近体验红线。此时应通过动态批处理或抢占调度策略,在保持高吞吐的同时将TPOT压回50ms以内。

误区与复盘:常见指标解读陷阱

误区一:只报吞吐量,不报延迟分布。“我们的服务吞吐达到5,000 Tokens/s”这句话没有意义——如果P99 TTFT高达5秒,该吞吐量对交互式应用毫无价值。正确做法是同时报告吞吐量与P95/P99延迟,并注明负载条件。
误区二:忽略输出长度对QPS的影响。两个系统QPS相同,但一个平均输出100 Token,另一个平均输出500 Token,后者的实际计算量是前者的5倍。比较QPS时必须固定输出长度,或直接使用Tokens/s作为统一度量。