这是一篇百度和 nvidia 合作的论文
实际上在 MPT 之前,已经有一些论文在做减少精度训练相关的工作了,比如:
- Binaryconnect: Training deep neural networks withbinary weights during propagations @2015
- Binarized neural networks. InAdvances in Neural Information Processing Systems @2016
1. 背景
随着现在深度神经网络模型越来越大,万亿参数,百万亿参数,深度学习训练所需要的GPU内存越来越多,内存优化迫在眉睫
Year
|
Name
|
Param
|
From
|
2018
|
110M
|
OpenAI
|
|
2018
|
349M
|
Google
|
|
2020
|
175B
|
OpenAI
|
|
2022
|
540B
|
Google
|
传统的神经网络训练里面,都是用FP32来保存权重、梯度等数据。但是FP32在大模型场景下(万亿参数)内存开销太大了
为了解决这个问题,MPT 论文提出了一种使用 FP16 精度来训练神经网络,同时基本不影响训练效果的方法
2. 实现
使用FP16会有很多好处:
- 大幅减少内存消耗:50%?
- 运算加速,FP16肯定要比FP32要快
但是随之带来的问题是:精度损失
IEEE标准中的FP16格式如下:
取值范围是5.96× 10−8 ~ 65504,而FP32则是1.4×10-45 ~ 3.4×1038
精度损失在神经网络训练里面可是比较致命的,可能会训练出截然相反的结果
为了解决这个问题,论文提出了3种方法