夏乙 编译整理
量子位 出品 | 公众号 QbitAI

这几年来,各科技大厂搞出了越来越大的神经网络,达到了越来越高的准确率,但同时,这些模型对内存和计算力的要求也越来越高。

于是,有一部分研究者想要通过降低计算精度,来节约计算力。但使用混合精度或低精度运算往往会造成模型准确率的降低,还需要对网络进行修改。

现在,这个问题有了新进展。

百度和英伟达今天展示了一项双方的联合研究,用16bit半精度浮点数(FP16)来训练神经网络,降低了训练所需内存的同时,在同样的超参数下达到了和32bit单精度浮点数(FP32)相同的准确率。

他们在一篇题为Mixed Precision Training的论文中展示了这项训练神经网络的新技术。还分别在官方博客上发文(通俗地)介绍了这种“混合精度训练”。

为什么要用混合精度,而不是直接改成FP16呢?这要从神经网络中的通用矩阵乘法运算说起。

深度学习模型中包含各种层,比如全连接层、卷积层、循环层等等,其中每一层都能用通用矩阵乘法(GEMM)运算来实现。在训练过程中,GEMM占据了大部分计算。

如下图所示,GEMM可以分个成几个乘法运算,在加上加法运算。

 矩阵乘法

当使用FP16表示神经网络中的数时,GEMM运算的输入矩阵由16 bit的数字构成,我们需要能执行16 bit计算来做乘法的硬件,同时还需要用32 bit计算和存储来做加法。没有32 bit来完成加法运算,训练大型深度神经网络就会非常困难。

于是,研究员们对训练流程进行了一些修改。模型中的输入、权重、梯度和激活以FP16表示。

但只是简单地更改存储格式,有些模型无法达到与FP32基准相同的准确率。为了解决这个挑战,百度和英伟达联手提出了两项技术。

第一,

维护一个FP32格式的权重的主副本,用FP16权重来做正向和反向传播,优化器中的梯度更新会被添加到主FP32副本里,这个FP32副本会再舍入到FP16,在训练中使用。

这个过程,每次训练迭代都会重复一遍,直到模型收敛。

通过在训练中使用FP16的权重,可以使用适用于半精度的、更快的硬件。下图显示了混合精度训练中的一次迭代:

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

第二,

引入了损失缩放(loss-scaling)技术,损失缩放能恢复一些小的重要梯度,对恢复某些模型的准确率损失来说很有必要。

在训练期间,一些权重梯度指数很小,在FP16格式下会变成0。为了解决这个问题,研究团队在反向传播开始时引入一个换算系数,来缩放损失,梯度也通过链式法则同时逐渐扩大,并能在FP16中表示出来。

在更新应用于权重之前,这些梯度还需要缩小。

百度在DeepSpeech 2模型上对这种方法进行了测试。

他们用这种方法来训练了DeepSpeech 2模型,进行语音识别。在使用同样模型架构和超参数的情况下,混合精度模型在英语和普通话数据集上,都达到了与FP32模型同样的准确率。

 用混合精度训练与FP32训练DeepSpeech2模型的英语、汉语语音识别字错率(CER)

通过使用FP16格式的权重,训练深度学习模型的内存需求也可以降低到单精度的一半。也就是说,训练同样一个模型、达到同样的性能,我们现在只需要原来一半的处理器。

另外,FP16算术的峰值性能通常远高于FP32计算,因此,混合精度训练通过运用FP16的计算单元,能够实现更快的速度。

而英伟达在博客上还介绍了混合精度训练在图像分类、对象检测等任务上的性能。

如上图所示,混合精度训练的各种深度神经网络模型在图像分类上,不需要损失缩放就能达到与单精度训练差不多的准确率。

而在对象检测任务上,混合精度训练实现的准确率甚至略高于FP32基准。

有关混合精度训练和全套结果和实验的更多详细信息,可以参考以下链接:

- 论文

Mixed Precision Training

作者:Paulius Micikevicius, Sharan Narang, Jonah Alben, Gregory Diamos, Erich Elsen, David Garcia, Boris Ginsburg, Michael Houston, Oleksii Kuchaev, Ganesh Venkatesh, Hao Wu

https://arxiv.org/abs/1710.03740

- 百度博客

http://research.baidu.com/mixed-precision-training/

- 英伟达博客

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

加入社群

量子位AI社群9群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot3入群;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进群请加小助手微信号qbitbot3,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI

վ'ᴗ' ի 追踪AI技术和产品新动态

百度英伟达联手推混合精度训练,同样性能只需一半内存 | 附论文相关推荐

  1. 5300亿参数,SOTA屠榜!最大NLP预训练模型新王登基,微软英伟达联手称霸

    来自:新智元 [导读]微软和英伟达联合发布了迄今为止最大.最强的人工智能语言模型:Megatron-Turing自然语言生成模型(MT-NLG).其包含5300亿个参数,在一系列自然语言任务包括阅读理 ...

  2. 英伟达联手Arm CPU打造AI超算,百万兆级性能,主攻气候变化和核武建模

    雷刚 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI超算怎么搞?老黄祭出联谊招. 在国际超算大会上,英伟达宣布正式支持Arm CPU,为高性能计算行业开辟了一条全新途径,以构建具有极高能 ...

  3. 基于百度英伟达EasyDL公开课的学习笔记

    本文是基于智东西公开课<零算法基础的百度EasyDL定制化图像识别揭秘>整理的学习笔记 本文非广告,标注单纯是出于尊重智东西和EasyDL的知识产权 如若涉及侵权,请联系本人 作者:李皮皮 ...

  4. CGU APAC 2017盛大开幕,七彩虹与英伟达联手打造电竞盛宴

    提起CGU,不少电竞玩家一定都耳熟能详.作为由七彩虹(OLORFUL)主办并独立策划执行的游戏赛事品牌,CGU自从2013年开始,就为国内电竞舞台输送了不少新鲜血液. 而随着近年来全球电竞赛事的不断升 ...

  5. “半价买2080Ti”,英伟达发布RTX 30系列显卡,性能翻倍价格更低,网友高呼“NVIDIA YES”...

    晓查 贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 千呼万唤始出来!游戏玩家等待了2年的英伟达新显(he)卡(dan)终于来了,而且加量又减价. 今天,黄仁勋在自家厨房里正式发布新一代 ...

  6. gpu超算算法_英伟达推GPU加速Arm服务器参考设计!微软Azure启动GPU超算实例

    芯潮(ID:aichip001)文 | 韦世玮 芯潮11月20日消息,昨天,英伟达在2019国际超级计算大会(SC19)上推出用于构建GPU加速Arm服务器的参考设计,以及用于优化网络和存储数据处理的 ...

  7. 英伟达发布ChatGPT专用GPU,性能提升10倍,还推出云服务,普通企业也能训练LLM...

    Pine 发自 凹非寺 量子位 | 公众号 QbitAI "AI的iPhone时刻已至",英伟达或成最大赢家. 在GTC2023大会上,黄仁勋接连放出大招: 不仅发布了ChatGP ...

  8. 英伟达 | 深度学习GPU最新情况

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推 ...

  9. 源代码来了 | 英伟达开源行人生成/重识别代码

    前几天英伟达开源了DG-Net的源码.让我们来回顾一下这篇CVPR19 Oral的论文. 论文是英伟达(NVIDIA), 悉尼科技大学(UTS), 澳大利亚国立大学(ANU)的研究人员 在CVPR19 ...

最新文章

  1. linux驱动:设备-总线-驱动(以TI+DM8127中GPIO为例)
  2. 频繁项集挖掘之Aprior和FPGrowth算法
  3. 第13天学习Java的笔记(类定义)
  4. Fisher–Yates shuffle 算法
  5. Android Studio的快捷键图文并茂
  6. console线驱动安装_文通证件识别SDK和驱动安装使用说明
  7. Linux(Ubuntu)如何安装常用软件(chrome、输入法、远程桌面)
  8. T1164 统计数字 codevs
  9. 自定义Popwindow
  10. 扩展欧几里得算法超详解
  11. 【解决】联想拯救者/MT7921网卡 ubuntu里 wifi/蓝牙 无法识别连接
  12. robotframework 内置库DateTime,Dialogs,
  13. matlab 逆滤波,【CV】图像去模糊(逆滤波)
  14. 结构光三维重建(二)线结构光三维重建
  15. 哈希算法(哈希函数)基本
  16. 百度工程能力白皮书--对工程能力永无止境的追求
  17. 南京大学计算机系教材,模式识别-南京大学计算机系.pdf
  18. 问题:腾讯会议使用麦克风时没有声音(已解决)
  19. 软件工程-体系结构设计
  20. SpringBoot事务详解

热门文章

  1. 新东方java开发待遇_新东方教师薪酬与考核曝光!拿去即用(仅供参考)
  2. 第 22 章 备忘录模式
  3. select 实现类似多线程_redis中的网络IO有了解过吗,它是单线程的还是多线程的,为什么要用单线程?...
  4. 步骤mysql_mysql 安装 等步骤(一)
  5. vue一级分类和耳机分类_vue 无限级分类导航
  6. python爬虫判断cookie过期_当爬虫遇到cookie失效,怎样处理?
  7. mysql 执行计时_ps-top 用于MySQL的数据库top工具
  8. wrapper php,PHP流Streams、包装器wrapper概念与用法实例详解
  9. 全国计算机二级考试c语言指针,全国计算机等级考试二级C语言指针检测试题.doc...
  10. 依赖倒置原则_面向对象的设计原则你不要了解一下么?