节省显存新思路,在 PyTorch 里使用 2 bit 激活压缩训练神经网络
本文将介绍来自加州伯克利大学的 ActNN,一个基于 PyTorch 的激活压缩训练框架。在同样的内存限制下,ActNN 通过使用 2 bit 激活压缩,可以将 batch size 扩大 6-14 倍,将模型尺寸或者输入图片扩大 6-10 倍。ActNN 相关论文已被 ICML 2021 接收为 Long Talk,代码开源于 github。
论文 https://arxiv.org/abs/2104.14129
代码 https://github.com/ucbrise/actnn
AI 训练撞上「内存墙」
从 AlexNet,ResNet 到 GPT-3,深度学习性能的突破都离不开节省模型规模的疯狂增长。大模型有更好的性能已经成为业界的共识。过去几年,不仅训练一个最先进模型需要的算力在指数增长,训练一个最先进模型需要的内存也在指数增长。如下图所示,大型 Transformer 模型的参数量以每两年翻 240 倍的速度指数增长。但是,单个 GPU 的内存却只以每两年翻 2 倍的速度在缓慢增长。另外,在训练模型时,不光要存储模型参数,还要存储中间结果激活值和优化器状态,所需要的内存更多。如何在有限的 GPU 内存下训练这些大规模模型成为了挑战。
source:Gholami A, Yao Z, Kim S, Mahoney MW, Keutzer K. AI and Mem显存ory Wall. RiseLab Medium Blog Post, University of California Berkeley
节省训练内存的方法
目前,节省训练内存的方法主要有三类:1. 重计算(Gradient checkpointing/Rematerialization) 2. 使用 CPU 内存进行交换 (swapping) 和 3. 使用分布式训练将 Tensor 分散存储在多个 GPU 上。这三类方法互相不冲突,可以结合使用。大部分机器学习框架对这些方法都提供了一些支持,也有不少相关的论文。但是,想要高效、自动化地实现这些策略并不容易。与已有方法不同,我们提出了新思 ActNN,一个新的基于压缩的内存节省框架。在提供理论证明的同时,我们基于 PyTorch 提供了一个高效易用的实现。Table.1 比较了 ActNN 和已有的一些内存节省系统。ActNN 支持 PyTorch 的动态图执行模式,并且不需要预先进行复杂的策略搜索。ActNN 作为一个独立的 Python 库,使用时 import 即可,不需要修改或重新编译 PyTorch。与已有的工作相比,ActNN 灵活且易于使用。同时,ActNN 在理论上也可以和已有的技术相互叠加。
ActNN:2 bit 激活压缩训练
在训练一个多层神经网络时,在前向传播中,每一层的中间结果都要被存下路,来用于计算反向传播的梯度。这些中间结果,又被叫做「激活值」(activation),实际上占据了大部分的内存消耗,尤其是在 batch size 较大或者输入图片较大的时候。ActNN 的原理是就是压缩这些激活值来节省内存。如下图所示,左图表示的是普通的前向传播和反向传播,前向传播时会存下所有层的 fp32 激活值用于反向传播,内存使用在计算 loss 的时候达到峰值。右图表示的是 ActNN 的训练方法:在前向传播时,通过一个压缩操作 Q 将激活值压缩后再存储;反向传播时,通过解压缩操作 Q^-1 将激活值解压再计算梯度。
如果只是为了节省内存,这里可以使用各种压缩算法,但在 是大部分现有的压缩算法并不能高效地运行在 GPU 上,会引入较大的开销。ActNN 选择了使用 2-bit 量化作为这里的压缩算法。量化操作的代价较小,而且有一些好的数学性质允许我们使用有损压缩达到较大的压缩比。
把 fp32 浮点数量化为 2-bit 整数是一个有损压缩,会引入一些误差。论文从理论上分析了量化引入的误差是如何影响训练的收敛性的。
第一,存在一个随机化的量化策略,使得使用有损量化压缩后,估计出的有损梯度是原梯度的一个无偏估计。
在这一条件下,我们套用已有的随机梯度下降收敛性定理,得出最后收敛时的误差会被梯度的方差所限制。
第二,我们推导出了使用量化压缩之后Py,随机梯度下降计算出的梯度的方差。
等号右边的第一项是随机梯度下降在 minibatch 采样时产生的方差,等号右边的第二项是有损压缩额外引入的方差。这条公式显示地刻画了有损压缩带来的影响。注意到,当有损量化压缩带来的方差远小于原来随机梯度下降自带的方差时,ActNN 引入的有损压缩就不会影响训练的收敛性。更多关于公式的推导和可视化参见文末的论文链接。论文对不同的算子(conv2d,batch norm,linear等)都提供了详细的分析。
由上述公式启发,我们提出了一些新的量化技巧用于降低有损压缩引入的额外方差。我们引入了新的量化技巧 ( Per-grouTop Quantization,Fine-Grained Mixed-Precision,Runtime Adaptation) 来利用梯度在不同样本,不同纬度,不同层之间的异构特性。最后的压缩算法会分配更多的 bit 给更重要的激活值。平均每个浮点数分配到 2 bit。
在具体实现压缩算法时,还有很多可以调节的参数。这里产生了一个内存节省和训练速度的取舍。一般来说,使用更复杂的压缩算法可以节省更多的内存,但是也会引入更多额外的开销,使训练速度变慢。为了给用户较大的灵活性,ActNN 提供了 5 个优化等级 L1-L5 供用户选择。低的优化等级节省的内存较少,但是运行速度快。rc高的优化等级节省的内存多,但是运行也更慢。在最高优化等级 L5 下,ActNN 会结合一个简单的内存交换策略,将压缩后的激活值移到 CPU 内存上,进一步节省内存。
实现
要在 PyTorch 实现 ActNN 算法非常简单。对于一个 PyTorch nn Module,我们只需要在其 forward 函数里加入量化压缩,在其 backward 函数里加入解压缩操作。所有的计算还是在 fp32 下进行,与原来一样,伪代码如下图所示。
ActNN 为大部分常用的 PyTorch nn.Module 实现了使用量化压缩的版本。用户只需将模型里的所有 PyTorch nn.Module 替换成 ActNN 对应h 的 Module (如把 nn.Conv2d 替换成 actnn.Conv2d),即可节省内存,不需要更改其他代码。ActNN 同时也提供了一个 wrapper 实现一行代码自动替换。
实验结果
因为 ActNN 进行的是有损压缩,所以最重要的一点是先验证 ActNN 是否会影响模型的精度。下图是使用 ActNN 在 ImageNet 上训练 ResNet-50 的结果。FP 代表普通的 fp32 训练, BLPA 是来自 NeurIPS 2019 的一个相关工作。可以看到,在 ActNN 的 2-bit 压缩模式下,模型几乎没有损失精度。在更极限的 1.25 bit 的情况下,ActNN 也能收敛,只不过会损失一些精里使度。而之前的工作 BLPA 在小于 4 bit 的情况就下无法收敛。
我们还在图像分割,物体检测,以及自监督学习等多个任务上进行了实验。ActNN 都能在 2-bit 压缩模式下达到和普通 fp32 几乎一样的结果。在部分任务上,因为 ActNN 可以使用更大的 batch size,甚至可以取得更好的测试结果。详细的实验结果和训练记录参见文末的论文与 github 链接。
之后,我们对比了 ActNN 与普通 fp32 训练的实际内存使用情况。如下表所示,ActNN 可以将激活值占用的内存压缩 12 倍,将训练使用的总内存压缩 4 - 7 倍。这一实际内存压缩效果符合理论推导。为什么激活值压缩倍率用 是 12 而不是 32 bit / 2 bit = 16?主要是因为 ActNN 不能使用 inplace 的 ReLU,以及需要存储少量额外的 min 和 scale 用于解压缩。
最后,我们测试了 ActNN 的训练速度。因为 ActNN 在训练过程中进行了压缩,这些压缩在节省内存的同时也会引入额外的计算开销。一般来说,省得内存越多,进入的额外开销就越多,训练也就越慢。我们在 NVIDIA T4 (16 GB 内存) 上对比了 ActNN 和已有内存节省系统的训练速度。如下图所示,DTR (ICLR 2020),BLPA (NeurIPS 2019)和 swap 分别是基于重计算,压缩和内存交换的三种方法,红叉代2 表 Out-of-memory。y 轴是训练吞吐量 (images per second),越高越好。绿色的曲线是综合 ActNN 在不同优化等级下的最优结果。可以看到,ActNN 不仅能开到最大的 batch size(即最省内存),同时在所有 batch size 下都比 baseline 的训练速度更快。
我们还对更多的网络进行了测试。在同样的内存限制下,ActNN 可以将 batch size 扩大 6-14 倍,将模型尺寸或者输入图片扩大 6-10 倍。详细的实验设置和结果参见文末的论文链接。
两行代码即可在 PyTorch 中使用 import actnn&nbibsp;model = actnn.QModule(model)
ActNN 提供了一个自动模型转换封装。只需在训练脚本里插入两行代码,即可将普通的 PyTorch 模型转换为使用 ActNN 的模型。同时,ActNN 也提供了更高级的 API 支持定制化的使用场景。
更多的例子参见 github 链接。我们提供了在图像识别、图像分割、物体检测,以及自监督学习等多个任务上使用 actnn 的完整例子和训练记录,欢迎试用!
(责任编辑:合作伙伴培训)
-
云梦级11月7日云梦级消息,6日有部分微信用户反馈称收到了微信团队发来的邀请,主题是关于“多台手机登录使用同一微信号”的用户调研。这意味着微信正在探索支持同一账号在多台手机上同时登录的可能性,进一步提...[详细]
-
谷歌 DeepMind 联手核聚变初创企业,共同探索清洁能源的未来
近日,能源初创公司英联邦聚变系统(Commonwealth Fusion Systems, CFS)宣布与谷歌的 DeepMind 部门合作,利用人工智能技术优化其即将上线的 Sparc 核聚变反应堆...[详细]
-
OpenAI新研究称GPT-5为迄今“政治偏见最少”的AI模型
根据 OpenAI 的最新研究,刚刚发布的 GPT-5模型在政治偏见方面的表现远远优于以往的同类产品。这一研究成果由 OpenAI 团队向 Axios 披露,标志着 AI 模型在偏见控制方面的重要进展...[详细]
-
蚂蚁自研数据库OceanBase宣布开源 300万行核心代码向社区开放
6月1日消息,蚂蚁集团自主研发的分布式数据库OceanBase今天正式对外宣布开源,并成立OceanBase开源社区,社区官网同步上线,300万行核心代码向社区开放。 OceanBaseCEO杨冰表示...[详细]
-
据报道,亚马逊今日宣布,已购买11架波音767-300飞机,希望通过扩大货运机队来加快交付。 亚马逊在一份声明中称,其中7架飞机来自达美航空公司(Delta AirLines),另外4架来自西捷航空公...[详细]
-
前言:世界杯德国队出局败给哪个国家?北京时间6月27日22点比赛中,韩国2:0德国,德国出局,德国队到底怎么了。德国与韩国的比赛,上半场德国控球率占优,但并未将优势转化为得分,整体节奏较为平缓。韩国队...[详细]
-
8月22日,腾讯云宣布正式上线DeepSeek-V3.1版本。这一新版本不仅为企业和开发者提供了更稳定、更优质的服务,还通过腾讯云智能体开发平台(ADP)和TI平台同步上线,进一步降低了智能体构建的门...[详细]
-
Firefox 浏览器新增 AI 搜索引擎 Perplexity 提升用户搜索体验
Mozilla 最近宣布,其 Firefox 浏览器正式集成了 AI 驱动的 Perplexity 答案引擎,成为用户的新选择。此举让 Firefox 用户能够在不更换浏览器的情况下,享受 AI 技术...[详细]
-
云梦级2月13日云梦级消息,2月13日,大麦娱乐与香港知名票务平台快达票达成战略投资合作,双方宣布将透过各自在大中华地区门票销售的丰富经验,打造跨平台的升级购票体验。大麦娱乐将入股快达票,以加强彼此商...[详细]
-
本文转载自微信公众号「小姐姐味道」,作者小姐姐养的狗 。转载本文请联系小姐姐味道公众号。 一位同学曾给我打比方:宿主机就好比一间大房子,docker把它成了N个小隔断。在这些小隔断之间,有独立的卫生间...[详细]
- https://www.metalmensales.com/?action=QUERY&s=歌外推【tg:seogoogle987】,bAw
- https://www.kyuhoshi.com/?s=歌外推【tg:seogoogle987】,sVc
- https://www.pickett.co.uk/collections/vendors?q=歌外推【tg:seogoogle987】,ow2
- https://m.shoppinghow.kakao.com/m/search/q/歌外推【tg:seogoogle987】EK6
- https://www.wuv.edu/?s=歌外推【tg:seogoogle987】,x0d
- https://www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=歌外推【tg:seogoogle987】,XMy
- https://www.wou.edu.my/?s=歌外推【tg:seogoogle987】,JbC
- https://www.rollingstone.it/?ID=DVMeu3AlmzZE1cuJ2FmgmO5TSCQRb3yh&s=歌外推【tg:seogoogle987】,cik
- https://www.kaiyueleather.com/search/歌外推【tg:seogoogle987】,wW0
- https://www.selfsufficientish.com/main/?s=歌外推【tg:seogoogle987】,YGM

亚马逊云科技连续三届支持世界技能大赛云计算赛项
Raycast发布Cursor Agent插件,AI编码更高效
谷歌Pixel Buds震撼升级:AI手势控制引领耳机革命,130美元就能拥有降噪黑科技
标签: 法拉第未来 FFEAI机器人 红杉教育 贾跃亭
微软云计算副总裁将离职:被指辱骂员工
