芯元一科技
XINYUANYI

首页 / 知识库 / 长上下文首 token 延迟为什么高?

知识库

长上下文首 token 延迟为什么高?

长上下文会话的首 token 延迟高,多半是因为这段上下文的 KV 缓存已被挤出显存,模型要先把历史内容重算一遍才能输出。上下文越长,这一步越久。

更新于 · 芯元一(天津)半导体设备有限公司

首 token 延迟由哪几段时间组成?

首 token 延迟主要由排队时间和 prefill 时间组成。prefill 是模型读完全部输入并建立 KV 缓存的过程,输入越长算得越久;缓存如果还在,这一步几乎可以跳过。

所以同一个请求,缓存命中和不命中的体验差别很大。R2 和 R3 记录的一组读数是:同一前缀的第二次请求,首字延迟从 29.15 秒降到 0.37 秒。

三种处理办法实测差多少?

R2 在 480B 模型、并发 16 的条件下对比了三种办法:现场重算,首 token 延迟中位数 149.48 秒;缓存放本地 NVMe 单盘,17.31 秒;缓存放 FX100,11.85 秒。

480B 模型,八卡单实例,并发 16,长上下文冷恢复。出处:R2。
办法首 token p50吞吐特点
现场重算149.48 秒4.1 tok/s不需要额外存储,但 GPU 在重复计算
本地 NVMe 单盘17.31 秒53.6 tok/s便宜,但缓存不能跨节点共享
FX100 外部全闪11.85 秒74.9 tok/s可跨实例共享,容量大
并发 856.643.9并发 1674.953.6并发 3271.653.9
■ FX100 ■ 本地 NVMe 单盘 · 480B 模型推理吞吐(tok/s)· 出处 R2

并发升高以后会怎样?

并发从 8 升到 32,三种办法的首 token 延迟都会变长,但差距一直存在:FX100 的中位数是 7.53 到 26.35 秒,本地 NVMe 单盘是 10.17 到 35.73 秒,降幅保持在 26% 到 32%。

并发 87.5310.17并发 1611.8517.31并发 3226.3535.73
■ FX100 ■ 本地 NVMe 单盘 · 首 token 延迟中位数(越短越好)(秒)· 出处 R2

吞吐在并发 16 时最高,再往上加并发基本持平,说明这台机器的最优工作点在并发 16 附近。选并发档位时,可以用同样的方法在自己的负载上找这个点。

我该从哪里开始优化?

先确认问题是不是出在重算上:统计会话恢复请求的占比和它们的首 token 延迟。如果恢复请求明显更慢,再评估缓存分层;否则瓶颈可能在别处。

分层方案的组成见 KV Cache 分层加速方案,原理见 KV Cache 分层是什么。

想用自己的模型和负载验证这些数字?从一次联测开始,不达标就停。
联系我们看联测流程

常见问题

TTFT 是什么意思?

TTFT 是 Time To First Token 的缩写,中文叫首 token 延迟或首字延迟,指从请求发出到模型吐出第一个 token 的时间,是在线推理的关键指标。

加显存能解决首 token 延迟吗?

能缓解,但成本高。显存越大,能留住的缓存越多;可是会话数一多还是会被挤掉。R5 的论证是:把 KV 缓存放到外部存储层,可以替代 128GB 级别的显存驻留。