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

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 条评论
登录 后参与评论

相关文章

来自专栏机器之心

研学社•架构组 | CoCoA:大规模机器学习的分布式优化通用框架

机器之心原创 作者:Yanchen Wang 参与:panda 去年,Michael I. Jordan 实验室发表论文《CoCoA: A General Fr...

2656
来自专栏机器之心

斯坦福完全可解释深度神经网络:你需要用决策树搞点事

3556
来自专栏机器之心

教程 | 从超参数到架构,一文简述模型优化策略

模型可以在训练过程中通过修正超参数而逐步建立。这在迁移学习中最为常见,在这种环境中,我们试图将现有模型的知识应用到新领域或新任务中。这是持续学习中更常见的问题,...

533
来自专栏大数据文摘

识辨 | 什么是分类?什么是聚类?

1484
来自专栏人工智能头条

基于Kaggle数据的词袋模型文本分类教程

1042
来自专栏人工智能LeadAI

《机器学习基石》课程学习总结(二)

01 寻找函数g的pocket算法 前文提到,PLA算法有效的前提是D要是线性可分的,D中的数据可以看做由f产生而来。这样的假设过于理想化,现实中,D里面总会...

3776
来自专栏新智元

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

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

2925
来自专栏大数据文摘

秒懂词向量Word2vec的本质

2435
来自专栏Coding迪斯尼

由深入浅,人工智能原理的大白话阐述

1255
来自专栏机器之心

百度NLP | 神经网络模型压缩技术

百度NLP专栏 作者:百度NLP 引言 近年来,我们在神经网络模型与 NLP 任务融合方面深耕,在句法分析、语义相似度计算、聊天生成等各类方向上,均取得显著的进...

3445

扫码关注云+社区