60 秒回答模板

多卡推理的瓶颈不能只看 GPU 数量。显存上,模型权重、KV Cache、激活临时缓冲和通信 buffer 都要放进预算;长上下文和高并发时,KV Cache 往往成为主要压力。计算上,prefill 阶段处理整段输入,计算密集且适合较大 batch;decode 阶段每次生成一个 token,更容易受内存带宽、调度和小 batch 影响。通信上,tensor parallel 需要跨卡 all-reduce 或 all-gather,pipeline parallel 会引入阶段气泡,expert 或混合并行还会有路由和负载不均。吞吐和延迟受 batch、序列长度、并发、采样参数、调度策略和网络拓扑共同影响。优化时要分阶段测量 TTFT、tokens/s、P95/P99、显存占用、通信时间和 GPU 利用率,再决定量化、KV 分页、连续批处理、prefill/decode 分离、并行策略或硬件拓扑优化。

考点 显存结构
难度 真实面经题
回答目标 讲清机制、训练与评估取舍

深入解析

01

显存先决定能不能跑

多卡推理首先要放下模型权重,还要为 KV Cache、临时激活、通信 buffer 和运行时预留空间。模型越大、上下文越长、并发越高,KV Cache 越容易从辅助开销变成主瓶颈。

02

prefill 和 decode 性质不同

prefill 处理完整输入序列,矩阵计算量大,GPU 利用率通常更容易做高;decode 每步只生成一个 token,但要读取全部历史 KV,容易受内存带宽、batch 组织和调度开销影响。两阶段混在一起看平均值会误判瓶颈。

03

并行策略带来通信成本

tensor parallel 把矩阵或 attention 头切到多卡,需要频繁同步;pipeline parallel 把层切到不同卡,会有流水线气泡;多机多卡还受 NVLink、PCIe、RDMA 和拓扑影响。卡越多不一定越快,通信可能抵消计算收益。

04

调度影响吞吐和长尾

在线服务要处理不同输入长度、输出长度和到达时间的请求。batch 太小吞吐低,batch 太大 TTFT 和排队延迟高;长请求可能拖慢短请求。连续批处理、长度分桶和优先级调度可以改善资源利用和长尾延迟。

05

采样和输出长度也会放大瓶颈

max tokens、temperature、top-p、beam 或多候选生成都会影响 decode 步数和并发资源。很多线上性能问题不是单次 forward 慢,而是输出过长、取消不及时、队列堆积或 KV Cache 无法回收。

06

优化要靠分阶段指标

应分别记录 TTFT、prefill 耗时、decode tokens/s、每卡显存、GPU 利用率、通信占比、排队时间、batch 规模、P95/P99 和失败率。根据瓶颈选择量化、KV 优化、并行重切分、批处理调度或硬件拓扑调整。

易错点

  • 只说加 GPU 就能提升吞吐,忽略通信和调度成本。
  • 把 prefill 和 decode 混成一个平均耗时,不分阶段定位。
  • 只算模型权重显存,漏掉 KV Cache 和运行时 buffer。
  • 忽略长短请求混跑导致的排队和 P99 延迟。
  • 没有结合硬件拓扑评估 tensor parallel 或 pipeline parallel。
  • 优化建议只停留在量化,没有说明瓶颈证据。

面试官追问

为什么多卡后反而可能更慢?

如果计算被切得太细,跨卡同步、通信拓扑、流水线气泡和负载不均可能超过并行带来的收益。

TTFT 主要受哪些因素影响?

主要受排队、prefill 计算、输入长度、batch 调度、模型大小、并行通信和服务冷启动影响。

decode 阶段为什么容易成为瓶颈?

decode 每次只生成一个 token,但要读取历史 KV,计算粒度小、步骤多,容易受内存带宽和调度开销限制。

显存不够时有哪些方向?

可以考虑量化、张量并行、KV Cache 分页或压缩、限制上下文和输出长度、降低并发、offload 或换更合适的模型。