

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 分散トレーニングの最適化
<a name="distributed-training-optimize"></a>

ユースケースとデータに合わせてハイパーパラメータをカスタマイズすることで、最高のスケーリング効率を実現できます。次の説明では、最も影響力のあるトレーニング変数にハイライトを当て、最先端の実装へのリファレンスを提供します。これにより、オプションについての理解が深まります。また、選好するフレームワークの分散トレーニングのドキュメントを参照することをお勧めします。
+  [Apache MXNet 分散トレーニング](https://mxnet.apache.org/versions/1.7/api/faq/distributed_training) 
+  [PyTorch 分散トレーニング](https://pytorch.org/tutorials/beginner/dist_overview.html) 
+  [TensorFlow 分散トレーニング](https://www.tensorflow.org/guide/distributed_training) 

## バッチサイズ
<a name="batch-size-intro"></a>

SageMaker AI の分散ツールキットでは、通常、より大きなバッチでトレーニングできます。例えば、モデルが 1 つのデバイス内に収まるが、小さなバッチサイズでしかトレーニングできない場合、モデル並列トレーニングまたはデータ並列トレーニングを使うことで、より大きなバッチサイズを試すことができます。

バッチサイズは、各反復でのモデル更新のノイズの量をコントロールすることにより、モデルの精度に直接影響することに注意してください。バッチサイズを大きくすると、勾配推定のノイズの量が減少します。これは、非常に小さなバッチサイズから大きくする場合には有効ですが、バッチサイズが大きな値になるにしたがい、モデルの精度が低下する可能性があります。  

**ヒント**  
ハイパーパラメータを調整して、バッチサイズを大きくしても、必ずモデルが満足のいく収束にトレーニングされるようにします。

バッチを大きくする際にモデルの収束を良好に保つために、多くの手法が開発されています。

## ミニバッチサイズ
<a name="distributed-training-mini-batch"></a>

SGD では、ミニバッチサイズは勾配推定に存在するノイズの量を定量化します。ミニバッチが小さいと、非常にノイズの多いミニバッチ勾配となり、データセット全体の正しい勾配を表すものではありません。ミニバッチが大きいと、ミニバッチ勾配はデータセット全体の正しい勾配に近くなり、十分なノイズがない可能性があり、無関係な最小値でロックされたままになる場合があります。

これらの手法の詳細については、次のドキュメントを参照してください。
+ [正確で大規模なミニバッチ SGD: 1 時間で ImageNet をトレーニングする](https://arxiv.org/pdf/1706.02677.pdf)、Goya ら。
+ [PowerAI DDL](https://arxiv.org/pdf/1708.02188.pdf)、Cho ら。
+ [大規模ミニバッチ SGD のスケールアウト: 精度の向上とトレーニング時間短縮のある ImageNet-1K の残差ネットワークトレーニング](https://arxiv.org/pdf/1711.04291.pdf)、Codreanu ら。
+ [数分間の ImageNet トレーニング](https://arxiv.org/pdf/1709.05011.pdf)、You ら。
+ [畳み込みネットワークの大規模バッチトレーニング](https://arxiv.org/pdf/1708.03888.pdf)、You ら。
+ [深層学習のための大規模なバッチ最適化: 76 分で BERT をトレーニング](https://arxiv.org/pdf/1904.00962.pdf)、You ら。
+ [BERT トレーニング前の大量バッチ最適化を 54 分で高速化](https://arxiv.org/pdf/2006.13484.pdf)、Zheng ら。
+ [深層勾配圧縮](https://arxiv.org/abs/1712.01887)、Linet ら。