题目
在线大模型服务中,首 token 延迟(TTFT)是用户体验关键指标。请说明其瓶颈与优化手段。
参考答案
关键指标定义:
- TTFT(Time To First Token):从请求到第一个 token 输出的时间,由 prefill 阶段主导。
- TPOT(Time Per Output Token):生成阶段每 token 时间,由 decode 主导。
- 端到端延迟 = TTFT + (输出 token 数 - 1) × TPOT。
TTFT 瓶颈:
- Prefill 计算密集:要处理整个 prompt(可能数千 token),是计算瓶颈(与 decode 的访存瓶颈不同)。
- 长 prompt:上下文越长,prefill 越慢,TTFT 线性增长。
- 调度等待:请求排队等 batch 槽位。
- KV Cache 重建:无前缀复用时每次都重算。
优化手段:
1. Prefill 阶段优化
- Chunked Prefill:把长 prompt 切块,与 decode 请求混批调度,避免长 prefill 阻塞短请求。vLLM、SGLang 都支持。
- Flash Attention:加速 prefill 注意力计算(见 Flash Attention 题)。
- 张量并行:多卡切分 prefill 计算。
2. 前缀复用
- Prefix Caching / RadixAttention:复用系统提示、few-shot 示例等公共前缀的 KV,跳过重算。多轮对话受益最大。
- Session 复用:同一会话的历史 KV 保留,下轮只算新增部分。
3. 调度优化
- 优先级调度:交互请求优先于批量请求。
- 抢占:高优请求可抢占低优请求的显存(vLLM 支持)。
- 预留预算:给 prefill 预留计算预算,避免被 decode 占满。
4. 模型侧
- 更小模型:用蒸馏/量化的小模型处理简单请求(模型路由)。
- GQA/MLA:减少 KV 量,间接加速 prefill。
- 稀疏注意力:长上下文用滑动窗口等降低 prefill 复杂度。
5. 工程侧
- 流式输出:第一个 token 立刻返回,体感延迟 = TTFT 而非端到端。
- 预加载:热门模型常驻显存,避免冷启动。
- 连接优化:HTTP/2、流式 SSE 减少网络延迟。
面试加分点:
- 强调 prefill 是计算瓶颈、decode 是访存瓶颈,二者优化思路完全不同。
- TTFT 对体验极敏感(用户等待感),TPOT 影响吞吐——在线服务重 TTFT,离线批处理重吞吐。
- Chunked prefill 是 vLLM 0.5+ 的关键改进,显著降低长 prompt 下的尾延迟。
出处:vLLM/SGLang 文档、推理服务化面经。
内容来源
整理自推理服务化面经与 vLLM/SGLang 文档
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。