找回密码
 请使用中文注册

百度英伟达联手推混合精度训练,同样性能只需一半内存

2023-5-6 09:31| 发布者: 开心| 查看: 9| 评论: 0

阅读字号:

摘要:   这几年来,各科技大厂搞出了越来越大的神经网络,达到了越来越高的准确率,但同时,这些模型对内存和计算力的要求也越来越高。于是,有一部分研究者想要通过降低计算 ...
      这几年来,各科技大厂搞出了越来越大的神经网络,达到了越来越高的准确率,但同时,这些模型对内存和计算力的要求也越来越高。于是,有一部分研究者想要通过降低计算精度,来节约计算力。但运用混合精度或低精度运算往往会造成模型准确率的降低,还需要对网络进行修改。现在,这个问题有了新进展。

  百度和英伟达今天展示了一项双方的联合研究,用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基准。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-9-2 07:15 , Processed in 0.160546 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部