节省显存新思路,在 PyTorch 里使用 2 bit 激活压缩训练神经网络( 三 )
之后 , 我们对比了ActNN与普通fp32训练的实际内存使用情况 。 如下表所示 , ActNN可以将激活值占用的内存压缩12倍 , 将训练使用的总内存压缩4-7倍 。 这一实际内存压缩效果符合理论推导 。 为什么激活值压缩倍率是12而不是32bit/2bit=16?主要是因为ActNN不能使用inplace的ReLU , 以及需要存储少量额外的min和scale用于解压缩 。 
文章图片
最后 , 我们测试了ActNN的训练速度 。 因为ActNN在训练过程中进行了压缩 , 这些压缩在节省内存的同时也会引入额外的计算开销 。 一般来说 , 省得内存越多 , 进入的额外开销就越多 , 训练也就越慢 。 我们在NVIDIAT4(16GB内存)上对比了ActNN和已有内存节省系统的训练速度 。 如下图所示 , DTR(ICLR2020) , BLPA(NeurIPS2019)和swap分别是基于重计算 , 压缩和内存交换的三种方法 , 红叉代表Out-of-memory 。 y轴是训练吞吐量(imagespersecond) , 越高越好 。 绿色的曲线是综合ActNN在不同优化等级下的最优结果 。 可以看到 , ActNN不仅能开到最大的batchsize(即最省内存) , 同时在所有batchsize下都比baseline的训练速度更快 。 
文章图片
我们还对更多的网络进行了测试 。 在同样的内存限制下 , ActNN可以将batchsize扩大6-14倍 , 将模型尺寸或者输入图片扩大6-10倍 。 详细的实验设置和结果参见文末的论文链接 。
两行代码即可在PyTorch中使用
importactnnmodel=actnn.QModule(model)ActNN提供了一个自动模型转换封装 。 只需在训练脚本里插入两行代码 , 即可将普通的PyTorch模型转换为使用ActNN的模型 。 同时 , ActNN也提供了更高级的API支持定制化的使用场景 。
更多的例子参见github链接 。 我们提供了在图像识别、图像分割、物体检测 , 以及自监督学习等多个任务上使用actnn的完整例子和训练记录 , 欢迎试用!
- 长跑者官栈的618新思路
- NVIDIA|一夜回到5年前 N卡遗老GT 1030显卡降价到599元:4GB大显存
- 港珠澳大桥为何是弯的,直线不是更节省成本吗?佩服工程师的智慧
- 显卡|玩家入手RTX 3080二手矿卡:2GB显存不翼而飞
- 显卡|玩家入手RTX 3080二手矿卡:2GB显存人家蒸发
- 中小企业运维“新思路”:ITSM与MSP一道扛起IT管理大旗
- Intel|Intel Arc A550M中端显卡首次现身:8GB超大显存
- 金融科技|容联七陌助力某大型证券公司,服务效率提升41%,人力成本节省45%
- 显卡|A380显卡开售,6GB显存,1030元,对标RX 6500
- 手性分子|我学者提出手性自发拆分结晶新思路
