【llm-algo-leetcode学习笔记】训练侧显存优化

梯度累积

为什么需要梯度累积

Step1: 核心机制

  • 一个完整batch被切成K个micro-batch
  • 每个micro-batch各自前向 + 反转,梯度在.grad中累加。
  • 攒够k次后统一执行一次optimizer.step(), 再zero_grad()清零。

Step2: 数学等价性

Step3: 代码实现框架

代码测试输出

完整学习参考

Gradient Accumulation源码示例

激活检查点与激活卸载

痛点: 显存压力不只来自参数

  • 前向传播为了反向传播,必须把每层中间输出(激活值)一直保存到显存里;层级越深、序列越长、batch越大,激活值占比越高。
  • 显存占用等于 O(L X B X S X D), L-层级数,B-batch size, S-序列长度, D-隐藏维度。
  • 问题:能不能少存激活,仍然完成反向传播?

Step1: 两条优化路线

  • Activation Checkpointing(重计算换显存):不保存所有层激活,每隔几层存一个"检查点(Checkpoint)"
  • Activation Offload(搬运换显存): 把部分激活临时搬到CPU或者其他存储层级。
  • 代价对比: checkpointing多花约20% ~ 30%时间,节省成倍甚至数倍显存;本质是"时间换空间"

Step2: 显存节省分析

Step3: 代码实现部分

工程优化要点

完整学习参考

Activation Checkpointing源码示例

总结

  • 梯度累积:决定batch能开多大,训练稳不稳

  • 激活检查点与卸载: 决定显存怎么省

相关推荐
Dovis(誓平步青云)几秒前
切换语言后按钮被截断,本地化审计怎样发现长度风险
开发语言·前端·javascript·人工智能·机器学习·华为·harmonyos
科起点AI2 分钟前
初稿写作指南:用科起点AI从文献阅读到初稿生成
人工智能·aigc·ai写作
打工仔折腾 AI7 分钟前
后端部署避坑:吃透IPv4地址、网络接口与CIDR前缀的实际应用
arm开发·人工智能·后端·python·性能优化
非凸科技7 分钟前
非凸科技助阵第51届ICPC亚洲区域赛
人工智能·科技
a puppy slide 葱8 分钟前
ICML | 2026 | MFH‑NAS:面向多模态融合目标检测的混合神经架构搜索框架
人工智能·yolo·目标检测·计算机视觉·架构·nas·神经网络架构搜索
街头便衣11 分钟前
OpenRouter周榜复算:164万亿token,输出2.55%,DeepSeek账单占1.4%
android·java·开发语言·人工智能·语言模型·开源
shark-chili11 分钟前
从需求到架构:我如何用 AI 写好design.md
人工智能·架构
人工智能AI技术13 分钟前
Flink AM 启动链路解析
人工智能
LCD液晶屏14 分钟前
立煌科技代理京东方液晶屏的核心优势与应用价值
大数据·人工智能·科技