← 返回题目列表

大模型推理中的 TTFT、TPOT、吞吐量和端到端延迟分别是什么?

高频 中等 第 3 / 25 题 更新于 2026/09/25
TTFTTPOT吞吐量推理性能
学习 AI 实战项目

简化版

四个核心指标:TTFT(首 token 延迟) 是请求到达后吐出第一个 token 的时间,主要受排队和 Prefill 影响;TPOT(平均每输出 token 时间) 通常用首 token 后的生成时长除以后续 token 数,ITL 则记录相邻 token 的单次间隔,二者相关但统计口径不完全相同;端到端延迟(E2E) 是整个请求从开始到最后一个 token 的总时间;吞吐量 是单位时间处理的 token 数或请求数。它们互相牵制,报告时必须同时说明输入/输出长度、并发和统计口径,否则数字不可比。

详细版

常用指标:

  • TTFT:客户端发请求 → 收到第一个输出 token(含排队 + Prefill);
  • TPOT:首 token 后的生成时长除以后续输出 token 数;ITL 是逐个相邻 token 的时间间隔,可进一步报告其分布;
  • 端到端延迟 E2E:请求开始 → 最后一个 token 返回;
  • 输出吞吐:每秒生成的输出 token 数;
  • 总 token 吞吐:每秒处理的输入 + 输出 token 数;
  • 请求吞吐(QPS):每秒完成的请求数。

平均值会掩盖尾延迟,生产报告必须给 P50/P95/P99,并区分冷启动与稳态。不同输入长度、输出长度、并发下的数字不能直接横向比较。

完整版教学

一、延迟如何分解:一个公式和一次请求的旅程

一次请求大致经历:网关 → 排队 → Tokenize → Prefill → 逐 token Decode → 流式返回。TTFT 覆盖「首 token 之前」的全部环节,E2E 再加上后续所有 Decode。粗略关系:

E2E ≈ TTFT + (M − 1) × TPOT     (M = 输出 token 数)

举个数字例子:TTFT = 400ms,TPOT = 20ms,输出 200 token:

E2E ≈ 400 + 199 × 20 = 400 + 3980 ≈ 4380ms ≈ 4.4 秒

可以看出:短输出时 TTFT 主导 E2E,长输出时 TPOT 主导。想优化一个 500 token 的长回答,压 TPOT 比压 TTFT 更划算(4380ms 里 Decode 占了 90%)。这只是平均近似——动态批处理、网络抖动、每轮调度会让 token 间隔并不均匀。

二、TTFT 受什么影响,怎么优化

TTFT = 排队时间 + Prefill 时间。影响因素:

  • 长 prompt → Prefill 计算和显存访问增多 → TTFT 高;标准全注意力整段 Prefill 的注意力计算量对序列长度近似二次增长,不能笼统写成总计算量与长度严格成正比;
  • 队列拥塞、大批次 → 请求排队等待,TTFT 升高;
  • Prefix Cache 命中 → 跳过重复前缀的 prefill,显著降 TTFT(但缓存查找、跨节点传输、未命中部分仍有成本)。

交互式聊天对 TTFT 极敏感(用户盯着屏幕等第一个字),离线批量任务则更看总吞吐。所以优化目标要按场景定。

三、TPOT 受什么影响,怎么优化

TPOT 是 Decode 每轮的耗时。Decode 每轮为每个活跃序列生成一个 token,要反复读权重和 KV Cache。影响因素:

  • 并发序列数(batch):batch 越大,权重读取被更多 token 摊薄,单 token 平均更快(但总延迟可能升);
  • 上下文长度:KV Cache 越大,每轮读取越多,TPOT 升高;
  • 模型并行的通信、调度抢占:都会拖慢每轮。

易错点:流式输出改善的是”体感”,不降低模型实际 Decode 时间——它只是把已生成的 token 尽早推给用户,TPOT 该多少还是多少。

四、吞吐量为什么最容易误导

吞吐是最容易被「刷」出来好看、也最容易误导的指标:

  • 增大 batch 通常提高总 token 吞吐,却抬高 TTFT 和尾延迟——吞吐和延迟是跷跷板。
  • 请求吞吐(QPS)高度依赖输出长度:一个只答几个字的服务,天然每秒完成更多请求;不能拿它和长文生成服务比。

所以任何吞吐数字都必须附带:输入/输出长度分布、并发模型、硬件、精度、并行方式、SLA 目标。脱离这些条件的「我们能跑 X tokens/s」是没有意义的。

记忆钩子:TTFT 看”多久开始答”,TPOT 看”答得多流畅”,E2E 看”多久答完”,吞吐看”系统单位时间做多少活”——任何一个都必须连同负载条件一起解释。

五、为什么必须看分位数(P99)而非平均

平均延迟会掩盖尾部:99% 的请求很快,但 1% 因排队或超长输出而极慢,平均值看不出来,用户却真实地被那 1% 伤害到。所以生产必须报 P50/P95/P99:

P50 = 中位数(一半请求比它快)
P95 = 95% 请求比它快(常规体验)
P99 = 99% 请求比它快(最差体验,最能暴露问题)

尤其 P99 TTFT/TPOT 常是 SLO 的关键——它表示约 99% 的观测值不超过该阈值,用来约束尾部而不是描述绝对最慢的一次。优化时若平均下降但 P99 上升,往往说明拥塞、长请求或调度不公平正在伤害尾部体验。

六、正确的压测方法

  • 开放环(open-loop)压测:按目标到达率持续发请求,不管上一个是否完成——更真实,容易暴露过载排队。
  • 闭环(closed-loop)压测:等上一批完成再发下一批——会低估生产流量峰值,容易得出过于乐观的结论。
  • 步骤:先预热模型(避免冷启动污染数据),再同时观测延迟分位数、吞吐、显存、GPU 利用率、队列长度、错误率。
  • 流量分布要真实:输入/输出长度必须贴近线上,全用短请求测的结论上线会翻车。

七、用统一口径比较推理指标

指标比较必须固定起止点、聚合范围和负载条件。服务端测得的首 Token 写出时间不等于客户端收到时间,整机输出吞吐也不能与单请求生成速率直接比较;跨系统对比时应同时披露硬件、模型精度、输入/输出长度分布、到达率、并发和是否命中缓存。

指标起止点用户感知
TTFT请求到首 token等多久开始回答
TPOT相邻输出 token回答流是否顺畅
E2E Latency请求到完成总等待时间
Goodput满足 SLO 的吞吐有效服务能力

例如系统 A 输出 2,000 token/s,但只有 80% 请求满足 P99 SLO;系统 B 输出 1,850 token/s,却有 99.5% 请求满足 SLO。若业务以按时完成为成功条件,B 的 Goodput 可能更高,不能只用原始 Tokens/s 判定容量。

八、常见误区与追问

  • 误区:TTFT 包含整段输出时间。 TTFT 截止首个有效 token;后续生成速度可用 TPOT 的平均值和 ITL 的分布描述。
  • 误区:tokens/s 不需要说明分母。 它可能指单请求、单 GPU、整机或全服务吞吐,口径不同不可比较。
  • 误区:平均延迟能代表用户体验。 长提示、长输出和排队会形成重尾,必须报告 P95/P99 并按长度切片。
  • 追问:流式请求的端到端延迟怎么算? 从接收请求到最后一个 token 写出,等于排队、Prefill、逐 token Decode 与网络发送之和。
  • 追问:容量优化后看哪些指标? 同时看 TTFT、TPOT、完成吞吐、取消率、队列时间、显存水位和质量,防止只移动瓶颈。

九、加强记忆

四指标记「开始/流畅/答完/总产出」:TTFT 看首 token,TPOT 看首 token 后的平均生成间隔,ITL 保留逐间隔分布,E2E ≈ TTFT +(M−1)×TPOT,吞吐看 token/s 或 QPS。三条铁律钉死:吞吐与延迟常有取舍,平均值不能代替 P95/P99,任何数字都要附输入输出长度、并发和测量边界才可比。压测使用开放环、真实长度分布并先预热,最终用满足 SLO 的 Goodput 判断有效容量。