显存不够怎么优化
训练或推理时弹出显存不足,是开发者常见的一类报错之一。在加卡之前,先试试这几招软件层面的优化,往往能省下一笔硬件开销。很多情况下,问题不在卡小,而在用法。显存优化是工程基本功,值得每个开发者掌握。 3.jpg 先搞清楚显…

训练或推理时弹出显存不足,是开发者常见的一类报错之一。在加卡之前,先试试这几招软件层面的优化,往往能省下一笔硬件开销。很多情况下,问题不在卡小,而在用法。显存优化是工程基本功,值得每个开发者掌握。
3.jpg
先搞清楚显存去哪了
· 模型权重本身占用基础显存
· 激活值随批次大小线性增长
· 优化器状态常比权重还占空间
· 碎片化分配会放大实际需求
· 框架缓存与临时张量也悄悄吃内存
立竿见影的手段
· 减小批次大小,激活显存随之下降
· 开启混合精度,用半精度压缩张量
· 梯度累积,用小批次模拟大批次效果
· 及时释放无用张量,避免引用残留
· 清理计算图,避免反向传播保留多余引用
进阶一些的方案
· 梯度检查点,用计算换显存
· 模型并行或流水线切分到大显存卡
· 推理时用量化,降低权重精度
· 启用内存高效注意力实现
别忘了监控
· 用工具观察峰值显存与碎片情况
· 先定位瓶颈,再决定加卡还是优化
· 优化到位仍不足,再考虑扩容
几个常见坑
· 只降批次不查泄漏,治标不治本
· 混合精度用错,反而更占显存
· 量化后不验证精度,上线才发现问题
什么时候才该加卡
· 优化后峰值仍超标,且业务在增长
· 监控显示显卡长期接近满载
· 预算允许且回报周期可预期
· 加卡前通信瓶颈已提前解决
总结一下顺序
· 先诊断:是不是显存真的满了
· 再优化:批次、精度、检查点三板斧
· 后监控:用数据确认优化生效
· 最后才扩容:把钱花在刀刃上
显存优化是性价比很高的第一步。很多时候,调一调配置就能跑起来的任务,不必急着加钱买卡。把每一兆显存用在刀刃上,才是工程功力。
