Skip to content

显存优化与性能调优正文

这页只做显存问题的判断框架:不重复 intro 的路线入口,也不写 walkthrough 的连续故事。

同一机制的显存目标

显存专题与推理专题可以共享同一份机制 Notebook,但这里把 checkpoint、offload、paging、KV Cache 和量化看成资源预算策略:先确认减少了哪类状态的驻留,再判断代价转移到了重算、带宽、通信还是质量。

共同机制显存侧要回答的问题主要指标项目输出
Checkpointing少保存了多少 activation,重算代价是否可接受peak memory、step time、吞吐训练显存策略选型
Offload状态搬到 CPU 或其他层级后是否仍值得GPU 显存、搬运时间、带宽、吞吐offload 范围决策
PagedAttention / KV Cachecache 碎片和驻留是否限制并发每请求显存、cache 容量、并发、质量cache 预算决策
权重 / 激活 / KV Cache 量化哪类状态被压缩,模型是否因此装得下权重或 activation 占用、peak memory、质量、吞吐量化预算决策

量化在本专题中首先是显存工具:先回答模型是否装得下、上下文或并发是否能提高,再验证速度和质量;不能从单项显存下降直接推出优化成功。

判断表

先分清问题在训练侧还是推理侧,再分清主要资源对象是 activationoptimizer stateKV cache 还是临时 buffer,最后判断省下来的显存有没有把时间代价一起控制住。

现象优先判断先看哪条线常见动作
训练前几步正常,中后段突然 OOMtraining activation pressure02, 03检查 batch、accumulation、checkpointing、offload
推理能跑,但 cache 一直涨,batch 上不去inference cache pressure04检查 paging、prefix reuse、eviction、KV cache quant
峰值显存下降了,但 benchmark 没改善trade-off mismatch06比较 peak memory、step time、TTFT、TPOT、throughput
理论账本和实测差很多ledger mismatch01, 06对齐理论账本、运行时 buffer、碎片和流程开销
检查项主要回答什么常见误判
activation训练侧主峰值是不是来自前反向中间状态把所有问题都归到 batch 太大
optimizer state更新状态是不是把预算继续抬高只看参数量,不看更新状态驻留
KV cache推理侧预算是不是被缓存增长顶高看到延迟差就直接改 decode
peak memory + time省显存是否把时间和吞吐一起赔掉峰值降了就默认 adopt

最终判断不该停在“省了多少显存”,而要落回“系统是不是因此更可运行、更稳定、更值得保留”。

本节要点

这页的职责不是列出更多省显存的方法名,而是把显存问题里最常见的判断点压成一张表。路线入口留给 intro,连续故事留给 walkthrough,项目证明留给 benchmark 和项目页。

Released under the MIT License.