学界 | 百度联合英伟达发布最新论文:使深度学习效率事半功倍的混合精度训练

AI科技评论消息: 在10月10日-11日在加拿大蒙特利尔召开的Rework Deep Learning Summit会议上,百度高级研究员Greg Diamos介绍了由百度硅谷AI实验室(SVAIL)与NVIDIA合作的最新成果:一种名为“混合精度训练”(Mixed Precision Training,简称MPT)的深度学习模型。

Greg Diamos在Rework Deep Learning Summit上演讲中

据了解,大多数的深度学习模型使用的是32位单精度浮点数(FP32)来进行训练,而混合精度训练的方法则通过16位浮点数(FP16)进行深度学习模型训练,从而减少了训练深度学习模型所需的内存,同时由于FP16的运算比FP32运算更快,从而也进一步提高了硬件效率。

通过用半精度运算替代全精度运算来提高效率,这一技术原理听起来很简单明了,但将其付诸实施并不像听起来那么简单。此前也有团队尝试过使用更低精度进行混合计算(如二进制,甚至4-bit),但问题在于这往往不可避免地造成结果的准确性和在主要网络变换上的损失,而百度的MPT模型不仅解决了这一问题,更重要的是MPT无需改变网络超参数(雷锋网注:超参数指Bayes统计理论先验分布的参数, 它不像其他的参数可以用统计量估计),并保持与单精度相同的准确性。

在百度研究院博客中,百度进一步解释了这一模型的原理:

深度学习模型由各种层(Layer)组成,包括完全连接的层,卷积层和反复层。层与层之间的转换可以通过通用矩阵乘法(GEMM)来实现,而对深度学习训练的过程其实很大程度是GEMM计算的过程。

如下图所示,GEMM操作可以分解为若干个几个乘法运算和后续的加法运算。

当使用FP16代表神经网络中的数据时,GEMM操作的输入矩阵由16位数组成。我们需要可以使用16位计算执行乘法的硬件,但是需要使用32位计算和存储来执行加法。使用少于32位的加法操作训练大型深度学习模型会非常困难。

为此,百度不仅与NVIDIA共同解决了硬件支持的问题,双方还对训练流程进行了一些修改,模型中的输入,权重,梯度和激活以FP16格式表示。但是如之前介绍,与FP32数字相比,半精度数字的范围有限,只是通过简单地更改存储格式,某些模型无法达到与单精度相同的精度。为此,NVIDIA和百度采用了两种关键技术:

第一项关键技术被称为“混合精密钥匙”(mixed precision key)。如下图所示,在MT模型中仍然保留FP32格式的主副本,将FP16用于正向和反向传播,优化器中的梯度更新将被添加到主FP32副本当中,该FP32副本被简化为一个FP16副本在训练期间使用,这个过程在每次训练迭代中重复,直至模型收敛且足以恢复损失的精度,从而达到较低内存使用、内存带宽压力更低和更快速执行的优点。

深度学习模型的混合精度训练示意图

第二种关键技术则是“损耗缩放”(loss-scaling)。该技术可以够恢复一些小数值的梯度。在训练期间,一些权重梯度具有非常小的指数,其FP16格式可能会变为零。为了克服这个问题,我们使用缩放因子在反向传播开始时缩放损失,通过连锁规则,梯度也逐渐扩大,并在FP16中可表示。在将其更新应用于权重之前,梯度确实需要缩小;而为了恢复某些型号的精度损失,必须进行损耗调整。关于这两种技术的更多细节可以在我们的论文中找到。

百度已使用这种方法使用FP16训练其DeepSpeech 2模型。结果表明,对于英文和普通话模型和数据集和使用相同的超参数、模型架构进行混合精度训练实验,可以得到到FP32训练的精度。

同时,使用FP16训练减少了深度学习模型的内存需求,使得百度能够使用一半的处理器来训练这些模型,从而有效地加倍了集群大小。此外,FP16算术的峰值性能(如上所述)通常高于单精度计算。

AI科技评论发现,NVIDIA博客也公布了应用混合精度训练的ImageNet数据集上训练卷积神经网络的结果。如果读者希望了解有关混合精度培训和全套结果和实验的更多详细信息,可点此参阅ArXiv上的论文。

应用混合精度训练的ImageNet数据集上训练卷积神经网络的结果:

https://devblogs.nvidia.com/parallelforall/mixed-precision-training-deep-neural-networks/

原论文地址:http://arxiv.org/abs/1710.03740

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-10-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【重磅】AI 学会“脑补”:神经网络超逼真图像补完从 0 到 1

1 新智元编译 来源:arXiv、Github 编译:张易 【新智元导读】自动图像补全是计算机视觉和图形领域几十年来的研究热点和难点。在神经网络的帮助下,来...

3065
来自专栏人工智能头条

机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size

1524
来自专栏人工智能的秘密

用机器学习来预测天气Part 2

  这篇文章我们接着前一篇文章,使用Weather Underground网站获取到的数据,来继续探讨用机器学习的方法预测内布拉斯加州林肯市的天气。上一篇文章我...

3416
来自专栏机器之心

训练的神经网络不工作?一文带你跨过这37个坑

选自Medium 作者:Slav Ivanov 机器之心编译 参与:黄小天、Smith 近日,Slav Ivanov 在 Medium 上发表了一篇题为《37 ...

33910
来自专栏人工智能

机器学习教程:最大熵文本分类器

在本教程中,我们将讨论最大熵文本分类器,也称为MaxEnt分类器。最大熵分类器是自然语言处理,语音和信息检索问题中常用的判别分类器。使用像JAVA...

8268
来自专栏目标检测和深度学习

CVPR2018 | CMU&谷歌Spotlight论文:超越卷积的视觉推理框架

选自arXiv 作者:陈鑫磊等 机器之心编译 参与:张倩、李泽南 人类在看到图像时可以进行合理的推理与预测,而目前的神经网络系统却还难以做到。近日,来自卡耐基梅...

2866
来自专栏量化投资与机器学习

【年度系列】使用LSTM预测股票市场基于Tensorflow

在本文开始前,作者并没有提倡LSTM是一种高度可靠的模型,它可以很好地利用股票数据中的内在模式,或者可以在没有任何人参与的情况下使用。写这篇文章,纯粹是出于对机...

3123
来自专栏小鹏的专栏

自己写个 Prisma

Sirajology的视频链接 前一段时间特别火的 Prisma 大家都玩了么,看了这篇文章后,你也可以自己写一个 Prisma 迷你版了。 ? 这个 i...

2265
来自专栏算法channel

@all: 新浪 机器学习算法岗 面试实录

二面面试官来了。是个算法大佬。是个专门做算法的。直接手出题,他说时间不多,就让我说思路。

1392
来自专栏量子位

调试神经网络让人抓狂?这有16条锦囊妙计送给你

问耕 编译整理 量子位 出品 | 公众号 QbitAI ? 这一篇的作者还是Andrey Nikishaev,一位创业者兼开发者。量子位前两天搬运了他的另外一篇...

2737

扫码关注云+社区