15 大模型训练 内存优化

先看GPU结构,我们常说显存的时候,说的一般就是Global memory

训练的过程中,我们为了反向传播过程,必须将中间的结果(激活值)存储下来。

在训练的过程中,那些会消耗内存呢?

  • model weights
  • optimizer sates
  • intermediate activation values

对于有N层的神经网络来说,内存的消耗是O(N)的。

检查点技术

在前向传播的时候,只选择保留部分数值,当进行反向传播时,所需要的中间值会进行重计算。

这样虽然会增减计算成本,但是也大大减少了内存占用。

模型并行

将模型进行拆分

数据并行

将minibatch 划分成更小的micobatch,训练每个batch的时候,每个工作节点获得一个microbatch,

梯度更新

各个节点之间计算出来的梯度要统一,可以使用 all-reduce或者 使用一个参数服务器用来统一更新各个节点之间的梯度。

为了加快训练,可以使得参数传递和计算过程互相掩盖

READING LIST:

  • ZeRO
  • Beyond Data and Model Parallelism for Deep Neural Networks
  • GSPMD: General and Scalable Parallelization for ML Computation Graphs
相关推荐
九章云极AladdinEdu2 天前
Scikit-learn通关秘籍:从鸢尾花分类到房价预测
人工智能·python·机器学习·分类·scikit-learn·gpu算力
程序员JerrySUN16 天前
GPU 基础矩阵精规组织教程:从基础作用到实战应用
数据库·系统架构·gpu算力
努力一点94817 天前
ubuntu22.04系统实践 linux基础入门命令(三) 用户管理命令
linux·运维·服务器·人工智能·ubuntu·gpu算力
weixin_3077791319 天前
设计Mock华为昇腾GPU的MindSpore和CANN的库的流程与实现
c++·算法·华为·系统架构·gpu算力
努力一点94820 天前
ubuntu22.04系统入门 linux入门(二) 简单命令 多实践以及相关文件管理命令
linux·运维·服务器·人工智能·gpu算力
weixin_3077791320 天前
设计Mock CUDA库的流程与实现
c++·算法·gpu算力
努力一点94821 天前
ubuntu22.04系统入门 linux入门 简单命令基础复习 实现以及实践
linux·运维·服务器·ubuntu·gpu算力
九章云极AladdinEdu1 个月前
GitHub新手生存指南:AI项目版本控制与协作实战
人工智能·pytorch·opencv·机器学习·github·gpu算力
努力一点9481 个月前
linux系统底层逻辑 开机顺序 ubuntu22.04系统
linux·运维·服务器·ubuntu·ai·gpu算力
努力一点9481 个月前
在 Ubuntu 22.04 上安装并优化 Nginx nginx入门操作 稍难,需要有一定理论 多理解 多实践
linux·运维·服务器·nginx·ubuntu·云原生·gpu算力