で:zengzeyu 2019年1月16日
1.はじめに
私たちは、ニューラルネットワークの学習過程におけるFP16の形で直接ネットワークパラメータを計算する場合による精密FP16の質問の損失に、状況が数値的安定性モデルのパフォーマンスの出現につながる可能性があります。この点で、中百度研究所NVIDIA 混合精密トレーニングモデルの正確さを保証するために加速計算のFP16の利点を最大限に活用しながら、この紙方法の混合精度のトレーニングを提案しました。ここでは彼らの論文の主なポイントがあります。
weigthsのFP32マスターコピー
ネットワークメンテナンスFP32 FP16精度精度パラメータのコピーであるFP32原盤。計算は、以下に行わFP16精度マスターコピー型変換動作によって得られたパラメータを用いて、順方向伝搬プロセスを示し、勾配を計算した後、勾配マスターコピーFP32精度に反対方向に伝搬するように作用しますパラメータ更新。
FP32マスターコピー
そうするには、2つの主な理由があります。
最初は0の小さすぎる値を生じる勾配の存在下で直接パラメータ更新FP16精度が更新された場合ということです。図は、ネットワークトレーニングプロセス要約勾配順モデルパラメータのヒストグラムである、勾配値の5%2-24未満の範囲内に分布しています。オプティマイザは、更新されたパラメータFP16の精度に勾配効果を乗じた学習率のこの部分を指示する場合、更新された値はゼロになります。これは、モデルの精度に影響を与えます。更新された値は、FP32精度のマスターコピーに適用された場合でも、その後、更新された値で0にオーバーフローは表示されません。
第二のパラメータは、その更新された値と比較された場合に大きすぎる、それはまた、浮動小数点に更新値を得られた加算器機構はゼロであってもよいです。浮動小数点加算処理では、必要な数は、2つの動作位置合わせします。パラメータが2048倍以上の更新値の大きさである場合、範囲外である前者と整列する少なくとも11の必要性の右側に小数点以下の更新された値は、FP16精度を発現しました。これは、一般的にFP32の精度の問題ではありません。
勾配ヒストグラム
損失のスケーリング
損失値の損失をスケーリングすることはすぐ勾配バックプロパゲーション処理はFP16の精度範囲を表すことができ、落下それらの間に確実にするために拡大されます。
図マルチボックスSSDは、ネットワークアクティベーション勾配分布はトレーニングプロセス中手段です。67%の勾配2-24未満の範囲内である、請求項精度がFP16では表現できません。勾配が増幅しない場合は、ネットワークを訓練することは発散FP16精度になります。活性化勾配増幅し、次に勾配を対応倍の減少パラメータは、この問題を解決することができます。
活性化勾配
最も簡単な方法の勾配の勾配を算出するチェーンルールは、拡大増幅損失です。無固定サイズの選択基準の増幅率は、マルチボックスSSD上のネットワークのために、8-32Kの増幅率を試みた著者は、成功を訓練しています。それは限り勾配を増幅精度FP16(65504)を超えないように上限を表し、副作用のより大きな増幅率を選択します。[1]
2.関連材料
- NvidiaのReources:https://github.com/NvidiaResources/nvidia_mixed_precision_training
- Nvidiaのディープニューラルネットワークの混合精度トレーニング:https://devblogs.nvidia.com/mixed-precision-training-deep-neural-networks/
3.方法
2.1直接変更するにはpython2のpytorch訓練中の枠組みの中で達成することができます:
https://github.com/suvojit-0x55aa/mixed-precision-pytorch
2.2を使用するNvidiaの頂点ライブラリー
図書館住所:https://github.com/NVIDIA/apex
Nvidiaの公式頂点チュートリアル:http://on-demand.gputechconf.com/gtc-cn/2018/pdf/CH8302.pdf
参照
オリジナル:ビッグボックス ディープニューラルネットワークの混在精密トレーニング