同一个模型,训练和推理是两种完全不同的负载。
训练时显存大头是梯度、优化器状态和激活值缓存;推理只需要权重和中间激活。所以同一个模型,推理能塞进更小的卡,或者用更大的 batch。
自回归生成时,每生成一个 token 都要「回看」之前所有 token。为避免重复计算,把每层的 Key/Value 缓存下来 —— 这就是 KV cache。
它的代价是:显存随上下文长度线性增长。一个 32K 上下文的请求,KV cache 可能比模型权重还占地方。这也是长上下文服务贵的根本原因。
| 策略 | 好处 | 代价 |
|---|---|---|
| 静态批处理 | 实现简单、吞吐高 | 要等最慢的请求,短请求被拖住 |
| 连续批处理(continuous batching) | 请求完成即刻换入新请求 | 实现复杂,显存管理要精细 |
| 不分批 | 延迟最低 | 吞吐极低,GPU 大量空转 |
实践结论:在线服务优先看尾延迟(P99),离线批任务优先看总吞吐 —— 这两者的最优配置往往不一样,不能共用一套参数。