跳到正文
芯元一

洞察

不加 GPU,怎么降低大模型推理的首 token 延迟?

发布于

问题

不增加 GPU,怎么降低大模型推理的首 token 延迟(TTFT)?

结论

长上下文场景里,首 token 延迟高的主要原因往往是被逐出显存的会话在整段重算,而不是算力不够。给推理集群加一层外置全闪存储保存 KV Cache,会话回来时直接读回:480B 模型实测,相对本地 NVMe 单盘,TTFT p50 降低 26–32%R2。

先确认延迟花在哪里

首 token 延迟主要由预填充阶段决定:模型要先处理完全部输入,才能输出第一个 token。输入越长,预填充越久。

如果一个会话的 KV Cache 还在显存里,新一轮请求只需要处理新增的那部分输入。如果它已经被逐出,整段历史上下文都要重新算。在 480B 模型、并发 16 的实测里,这样一次整段重算的 TTFT p50 是 149.5 sR2。

所以第一步是看监控:延迟高的请求,是不是集中在隔了一段时间才回来的长会话上。

三个不加卡的办法

这三件事都是在存储和软件上做文章,不需要新增算力卡。

  • 把被逐出的 KV Cache 存下来:用 vLLM + LMCache 把它写到外置全闪存储,命中时读回,跳过这部分预填充。
  • 让读回足够快:LMCache 并行读补丁把单卡、并发 16 冷读盘的 TTFT 从 37.97 s 降到 9.30 s,读带宽从 0.98 GB/s 提高到 5.23 GB/sR1。
  • 让多个实例共用一份缓存:fs:// 共享池的跨实例热共享已经验证通过,会话被调度到另一个实例时不必重算R3。

实测能降多少

下面是 Qwen3-Coder-480B-FP8、TP=8、8 × AMD MI308X 的读数,对照基线是本地 NVMe 单盘。

  • 并发 8:TTFT p50 从 10.17 s 降到 7.53 sR2。
  • 并发 16:TTFT p50 从 17.31 s 降到 11.85 sR2。
  • 并发 32:TTFT p50 从 35.73 s 降到 26.35 sR2。

什么情况下还是得加卡

外置缓存省掉的是重复的预填充。如果请求的上下文从来没有出现过,没有缓存可读,这一层帮不上忙。

如果瓶颈在输出阶段,也就是每个 token 的生成速度不够,那是算力问题,需要的是更多或更快的卡。先分清延迟属于哪一种,再决定钱花在哪里。

相关实测报告

外部参考资料

  1. 01
    Efficient Memory Management for Large Language Model Serving with PagedAttention · arXiv (SOSP '23)

    vLLM 的 PagedAttention 显存管理与 KV Cache 分页的设计动机

  2. 02
    LMCache (GitHub repository) · LMCache Project

    LMCache 的源码、架构与存储后端说明

延伸阅读

全部文章

先联测,后决策

先联测,后决策

合作从一次约 10 周的门禁化联测开始。四道门禁逐级放行,任何一道不达标就在那里停下,不必为没有被证实的收益买单。

联系人
王利民
电话
13161818898
邮箱
mingxin@agentmail.to

邮箱由 AI 自动接收与分拣,7×24 小时在线