夏乙 编译整理
量子位 出品 | 公众号 QbitAI
这几年来,各科技大厂搞出了越来越大的神经网络,达到了越来越高的准确率,但同时,这些模型对内存和计算力的要求也越来越高。
于是,有一部分研究者想要通过降低计算精度,来节约计算力。但使用混合精度或低精度运算往往会造成模型准确率的降低,还需要对网络进行修改。
现在,这个问题有了新进展。
百度和英伟达今天展示了一项双方的联合研究,用16bit半精度浮点数(FP16)来训练神经网络,降低了训练所需内存的同时,在同样的超参数下达到了和32bit单精度浮点数(FP32)相同的准确率。
他们在一篇题为Mixed Precision Training的论文中展示了这项训练神经网络的新技术。还分别在官方博客上发文(通俗地)介绍了这种“混合精度训练”。
为什么要用混合精度,而不是直接改成FP16呢?这要从神经网络中的通用矩阵乘法运算说起。
深度学习模型中包含各种层,比如全连接层、卷积层、循环层等等,其中每一层都能用通用矩阵乘法(GEMM)运算来实现。在训练过程中,GEMM占据了大部分计算。