[論文レビュー] Revisiting BFloat16 Training
本稿では、標準的な最近傍丸めを確率的丸めに置き換え、重み更新にカハン加算を適用することで、BFloat16を用いた16ビットFPU訓練が、32ビット訓練と同等またはそれを上回るモデル精度を達成できることを示している。これらの数値的技術により、更新のキャンセルと収束の劣化が低減され、純粋な16ビットハードウェア上でも高精度な訓練が可能となり、7%の絶対的精度向上と、7つのモデルにおける32ビット訓練よりも0.1%〜0.2%高い検証精度が達成された。
State-of-the-art generic low-precision training algorithms use a mix of 16-bit and 32-bit precision, creating the folklore that 16-bit hardware compute units alone are not enough to maximize model accuracy. As a result, deep learning accelerators are forced to support both 16-bit and 32-bit floating-point units (FPUs), which is more costly than only using 16-bit FPUs for hardware design. We ask: can we train deep learning models only with 16-bit floating-point units, while still matching the model accuracy attained by 32-bit training? Towards this end, we study 16-bit-FPU training on the widely adopted BFloat16 unit. While these units conventionally use nearest rounding to cast output to 16-bit precision, we show that nearest rounding for model weight updates often cancels small updates, which degrades the convergence and model accuracy. Motivated by this, we study two simple techniques well-established in numerical analysis, stochastic rounding and Kahan summation, to remedy the model accuracy degradation in 16-bit-FPU training. We demonstrate that these two techniques can enable up to 7% absolute validation accuracy gain in 16-bit-FPU training. This leads to 0.1% lower to 0.2% higher validation accuracy compared to 32-bit training across seven deep learning applications.
研究の動機と目的
- 16ビットFPU専用訓練が、ディープラーニングモデルにおいて32ビット訓練と同等の精度を達成できるかどうかを検証すること。
- 特に重み更新の最近傍丸めに起因する、標準的な16ビットFPU訓練における精度劣化の根本的原因を特定すること。
- 確立された数値解析技術(確率的丸めとカハン加算)が、16ビットFPU訓練におけるモデル精度の回復に有効であるかどうかを評価すること。
- 16ビット未満の低精度訓練の可能性と、Float16と比較してBFloat16が16ビットFPU訓練においてなぜ優れているかを評価すること。
- 適切なソフトウェア技術を組み合わせることで、32ビットFPUsが高精度訓練に必要でないことを実証し、将来のハードウェア設計を支援すること。
提案手法
- 重み更新における標準的な最近傍丸めを確率的丸めに置き換えることで、重み推定のバイアスを排除し、収束速度を維持する。
- 16ビットFPU訓練における勾配および最適化子状態の累積における浮動小数点誤差の蓄積を低減するため、カハン加算を適用する。
- 8ビットの指数部と7ビットの仮数部を持つBFloat16フォーマットを用い、Float16と比較してより広い動的範囲を活用する。
- 確率的丸めとカハン加算の2つの技術を同時にモデル重みに適用し、それらのロバスト性と相乗効果をテストする。
- CIFAR-10、Criteo Kaggle、Terabyteデータセットを用いて、7つのディープラーニングモデル(ResNet-18、DLRM、BERTなど)に対してアブレーションスタディを実施する。
- 32ビット、標準的な16ビットFPU(最近傍丸め)、および強化された16ビットFPU(確率的丸めおよび/またはカハン加算を含む)の設定における訓練精度と検証精度を比較する。
実験結果
リサーチクエスチョン
- RQ116ビットFPU訓練における最近傍丸めが、ディープラーニングモデルの収束劣化と精度損失を引き起こすか?
- RQ2確率的丸めとカハン加算が、32ビットFPUsを必要とせずに、16ビットFPU訓練における精度劣化を効果的に是正できるか?
- RQ3BFloat16の動的範囲は、Float16と比較して、安定した16ビットFPU訓練を実現するためにどの程度優れているか?
- RQ416ビット未満の精度低減がモデル精度に与える影響は何か?また、追加の技術的対策は必要か?
- RQ5最適化された丸めと加算技術を用いた16ビットFPU訓練が、多様なディープラーニングモデルにおいて32ビット訓練の精度に達するか、それを上回るか?
主な発見
- 最近傍丸めを用いた標準的な16ビットFPU訓練では、32ビット訓練と比較して、最大16%の訓練精度低下と7%の検証精度低下が生じる。
- DLRMモデルでは、中〜後期の訓練段階において、非ゼロ重み更新の80%以上が最近傍丸めによってキャンセルされていることが判明し、特に一定または減少する学習率の下で顕著であった。
- 確率的丸めとカハン加算を併用することで、16ビットFPU訓練が32ビット訓練と同等またはそれを上回る検証精度を達成でき、最大7%の絶対的精度向上が達成された。
- 平均して、7つの多様なディープラーニングアプリケーションにおいて、これらの技術を用いた16ビットFPU訓練は、32ビット訓練よりも0.1%低いか、0.2%高い検証精度を達成した。
- Float16精度で訓練しても、仮数部の精度がBFloat16と同等であるにもかかわらず、動的範囲が限られているため、精度劣化が顕著に現れ、確率的丸めやカハン加算を適用しても改善が不十分であった。
- 追加の技術的対策なしに10ビット、12ビット、14ビットの低精度訓練を実施した場合、16ビットまたは32ビット訓練よりも精度が低かったため、一般向けモデル訓練の実用的下限として16ビットが適切であると示された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。