TTFT 是什么
TTFT(Time To First Token,首 token 延迟)指从请求发出到第一个输出 token 返回的时间,拆开是:排队等待 + 输入 prefill + 首个解码步。它是交互体验的第一指标,用户先感知到的是「多久开始出字」。TTFT 很容易被排队拖垮:队列一深,模型再快也救不回来,因此它常常不是模型问题而是容量问题。
基本信息
| 定义 | 请求发出到第一个输出 token 到达的时间 |
|---|---|
| 组成 | 排队等待 + prefill(与输入长度相关)+ 首个解码步 |
| 典型指标形态 | 分位数(P50/P95/P99),很少用平均值 |
| 观测位置 | 引擎侧 TTFT 直方图 + 网关侧首块到达时间 |
| 权限要求 | 读引擎指标通常无需特权,抓取端点需网络可达 |
典型使用场景
- 交互产品体验指标:与点击后的可感知停顿直接对应,是前端与产品最关心的那个数
- 排查「用起来很慢」的投诉:先看 TTFT 落在模型侧还是排队侧,定位方向完全不同
- 定并发上限:用 TTFT 的 SLO 反推可接受的排队深度,再折算实例数
- 上线前后对比:模型或参数一改,TTFT 的变化最能说明问题
- 区分长输入与短输入的体验差异:长文档问答的 TTFT 天然更高,需要单独设目标
拆解与观测
拆解与观测
# 引擎侧:TTFT 直方图(指标名随版本微调,先看实际输出)
curl -s http://127.0.0.1:8000/metrics | grep -i time_to_first_token
# 排队是否超标:等待请求数与运行中请求数一起看
curl -s http://127.0.0.1:8000/metrics | grep -E 'num_requests_waiting|num_requests_running'
# 网关侧:记录请求到达与首个数据块时间,流式场景可直接测出 TTFT
# 排查顺序:看队列 → 看输入长度分布 → 再看模型侧算子与硬件状态TTFT 偏高的定位表
| 组成项 | 判断依据 | 对应动作 |
|---|---|---|
| 排队等待 | 等待请求数上涨、运行数接近饱和 | 扩容或限流,先解决容量 |
| prefill | 输入长度明显变长、命中率下降 | 启用前缀缓存、控制输入长度 |
| 首个解码步 | 批很小仍然慢、伴随降频 | 检查功耗温度与算子配置 |
流式场景里 TTFT 就是用户看到第一个字的时间;非流式场景用户看不到首 token,但 TTFT 仍计入总响应时间,所以它同样影响端到端指标。
瞬时 TTFT 波动很大:请求稀疏时快、高峰时慢,判断是否需要动作要用较长窗口的分位数而非单次采样。