推理与训练差在哪:从显存占用到批处理

同一个模型,训练和推理是两种完全不同的负载。

一、没有反向传播,显存用在别处

训练时显存大头是梯度、优化器状态和激活值缓存;推理只需要权重和中间激活。所以同一个模型,推理能塞进更小的卡,或者用更大的 batch。

二、LLM 推理的特殊性:KV cache

自回归生成时,每生成一个 token 都要「回看」之前所有 token。为避免重复计算,把每层的 Key/Value 缓存下来 —— 这就是 KV cache。

它的代价是:显存随上下文长度线性增长。一个 32K 上下文的请求,KV cache 可能比模型权重还占地方。这也是长上下文服务贵的根本原因。

三、批处理的两难

策略好处代价
静态批处理实现简单、吞吐高要等最慢的请求,短请求被拖住
连续批处理(continuous batching)请求完成即刻换入新请求实现复杂,显存管理要精细
不分批延迟最低吞吐极低,GPU 大量空转

实践结论:在线服务优先看尾延迟(P99),离线批任务优先看总吞吐 —— 这两者的最优配置往往不一样,不能共用一套参数。

四、我们实际怎么选