真实面经题目 · 原创解析
什么是 TTFT,如何降低大模型首字延迟?
TTFT 是 Time To First Token,表示从请求发出或服务端接收请求到模型返回第一个 token 的时间。它直接影响用户对大模型应用是否“响应快”的感知,优化要覆盖排队、网络、鉴权、Prompt 构造、预填充计算、调度和流式返回。
真实面经题目 · 原创解析
TTFT 是 Time To First Token,表示从请求发出或服务端接收请求到模型返回第一个 token 的时间。它直接影响用户对大模型应用是否“响应快”的感知,优化要覆盖排队、网络、鉴权、Prompt 构造、预填充计算、调度和流式返回。
TTFT 可以理解为首字延迟,通常指请求开始后到客户端收到第一个生成 token 的时间。它由多段组成:客户端到服务端网络、网关鉴权、请求排队、检索和 Prompt 构造、模型 prefill、调度等待以及流式传输启动。降低 TTFT 不能只盯模型推理,要先分段埋点。常见优化包括减少 Prompt 长度和检索上下文、缓存系统 Prompt 与 KV、使用更快模型或 speculative decoding、预热实例、降低队列等待、按请求长度调度、启用流式输出、边检索边生成可行部分、优化网关和连接复用。要同时关注 TTFT、总时延、吞吐、成本和答案质量,避免为了首字快牺牲正确性。
TTFT 全称 Time To First Token,是大模型服务中衡量首个输出 token 到达速度的指标。不同团队的起点可能不同,有的从客户端发起请求算起,有的从服务端接收请求算起,因此指标口径必须统一。它不同于总生成耗时,TTFT 只关注第一个 token 之前的等待;用户在流式对话里通常先感受到 TTFT,再感受到后续 token 速度。
第一个 token 出来之前,系统已经做了很多工作:请求经过 DNS、TLS、网关、鉴权和限流;应用层可能要做用户上下文加载、RAG 检索、重排、Prompt 拼接和安全检查;模型侧要排队、分配显存、做 prefill,把输入 prompt 编码成 KV cache,然后才能开始 decode 第一个 token。任何一段变慢都会抬高 TTFT。
模型侧最大的影响通常来自 prefill 和排队。Prompt 越长,prefill 计算越重;并发越高,调度等待越明显。优化方式包括减少上下文长度、裁剪无关历史、对稳定前缀做 KV cache、按输入长度分桶调度、连续批处理、模型量化、选择更合适的小模型、预热实例和减少冷启动。对于可接受轻微复杂度的场景,还可以探索推测解码或草稿模型降低首个 token 等待。
应用侧往往也有很大空间。RAG 检索要控制召回数量、重排耗时和上下文拼接长度;用户画像、权限和配置应尽量缓存;网关要复用连接并减少串行依赖;流式响应要尽早 flush,避免中间层缓冲。对于复杂 Agent,不能等所有工具都完成后才响应,可以先返回状态 token 或把可并行步骤并发化,但前提是不会误导用户。
降低 TTFT 必须先把链路分段观测清楚,包括网络、网关、应用、检索、排队、prefill、decode 首 token 和客户端渲染。优化时要看 p50、p95、p99,而不是只看平均值。过度缩短 Prompt 可能伤害答案质量,过小 batch 可能降低吞吐并增加成本,过早输出可能带来错误承诺。成熟方案会在用户体验、质量、吞吐和成本之间做可量化权衡。
TTFT 衡量第一个 token 到达前的等待,TPOT 通常衡量后续每个 token 的平均生成时间。前者影响响应是否立刻开始,后者影响持续输出是否顺滑。
因为模型需要先对输入做 prefill,计算每个输入 token 的表示并建立 KV cache。输入越长,首个输出 token 前的计算量越大。
不一定。流式输出主要减少客户端等待完整答案的时间,并确保首个 token 生成后尽快发送。模型 prefill 和排队时间仍然存在。
先统一指标口径并分段埋点,确认瓶颈在检索、排队、prefill、网络还是客户端渲染。没有分段数据时很容易误判。