【论文阅读】Mixed Precision Training

【GiantPandaCV导语】混合精度是一个非常简单并且实用的技术,由百度和谷歌联合发表于ICLR2018,可以让模型以半精度的方式训练模型,既能够降低显存占用,又可以保持精度。这篇文章不是最先提出使用更低精度来进行训练,但是其影响力比较深远,很多现在的方案都是基于这篇文章设计的。

1. 摘要

提高网络模型的大小可以有效提升准确了,但是也增加了内存的压力和计算力的需求。本论文引入了半精度来训练深度神经网络,在不损失精度、不需要更改超参数的情况下,几乎可以减半内存占用。

权重、激活、梯度都是以IEEE半精度的方式存储的,由于半精度的表示范围要比单精度要小,本文提出了三种方法来防止关键信息的丢失。

  • 推荐维护一个单精度版本的权重weights,用于累积梯度。
  • 提出使用Loss scale来保证小的梯度值不会下溢出。
  • 在加载到内存之前,就将模型转化到半精度来进行加速。

2. 介绍

大的模型往往需要更多的计算量、更多的内存资源来训练,如果想要降低使用的资源,可以通过降低精度的方法。通常情况下,一个程序运行速度的快慢主要取决于三个因素:

  • 算法带宽
  • 内存带宽
  • 时延

使用半精度减少了一半bit,可以影响算法带宽和内存带宽,好处有:

  • 由于是用更少的bit代替,占用空间会减小差不多一半
  • 对于处理器来说也是一个好消息,使用半精度可以提高处理器吞吐量;在当时的GPU上,半精度的吞吐量可以达到单精度的2-8倍。

现在大部分深度学习训练系统使用单精度FP32的格式进行存储和训练。本文采用了IEEE的半精度格式(FP16)。但是由于FP16可以表示的范围要比FP32更为狭窄,所以引入了一些技术来规避模型的精度损失。

  • 保留一份FP32的主备份。
  • 使用loss scale来避免梯度过小。
  • FP16计算但是用FP32进行累加。

3. 实现

Mixed Precision

下面详细讲解第二节提到的三种技术。

3.1 FP32的主备份

这部分示意图

在混合精度训练中,权重、激活、梯度都采用的是半精度存储的。为了匹配单精度网络的精度,在优化的整个过程中,需要拷贝一份单精度模型FP32作为主备份,而训练过程中使用的是FP16进行计算。

这样做的原因有两个:

第一:溢出错误:更新的时候是学习率乘以梯度,这个值可能非常小,超过半精度最小范围(

fp16 mixed precision training 是指使用 16 位浮点数(half precision)来进行混合精度训练的技术。这种技术可以在保证训练速度的同时减少内存占用,提高模型训练效率。 amp(Automatic Mixed Precision)和 apex 是两个用于混合精度训练的优化工具库。amp 是 NVIDIA 提供的混合精度训练工具,而 apex 则是 PyTorch 提供的工具库。它们可以自动地将计算中的浮点数操作切换为精度格式,包括权重、梯度以及激活函数的计算。同时,它们还会调整学习率的缩放,以确保训练的准确性。 使用 --fp16 参数可以在 PyTorch 中启用 fp16 half precision 训练模式。fp16 half precision 可以减少内存占用,降低计算资源的需求,并在某些情况下提高模型训练速度。然而,由于 16 位浮点数的精度相对较低,有时会导致数值计算的精度损失。 结合 amp 或 apex 可以更好地利用混合精度训练的优势。它们可以自动地优化浮点数计算的精度和性能,使模型训练更高效,不需要手动调整和优化。此外,amp 和 apex 还提供了一些辅助功能,如动态损失缩放和梯度缩放,以进一步提高模型训练的稳定性和效果。 总结来说,fp16 mixed precision training 是使用 16 位浮点数进行混合精度训练的一种技术,而 amp 和 apex 则是用于优化和自动调整混合精度训练的工具库。它们可以在保证训练速度的同时减少内存占用和计算资源需求,并通过自动调整浮点数计算的精度和性能来提高模型训练效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*pprp*

如果有帮助可以打赏一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值