

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

# Amazon SageMaker AI 分散データ並列処理ライブラリに関するよくある質問
<a name="data-parallel-faq"></a>

SMDDP ライブラリに関するよくある質問とその回答を以下でご確認ください。

**Q: このライブラリを使う場合、`allreduce` をサポートする CPU インスタンスはどのように管理されますか。異種の CPU-GPU クラスターを作成する必要がありますか、または SMDDP ライブラリを使うジョブに対して SageMaker AI サービスで追加の C5 が作成されますか。**

SMDDP ライブラリは GPU インスタンスのみをサポートしています。具体的には、NVIDIA A100 GPU を搭載した EFA 対応の P4d および P4de インスタンスのみがサポートされています。追加の C5 または CPU インスタンスは起動されません。SageMaker AI トレーニングジョブが 8 ノードの P4d クラスターで実行される場合、使用されるのは 8 つの `ml.p4d.24xlarge` インスタンスのみです。追加のインスタンスはプロビジョンされません。

**Q: ハイパーパラメータ H1 (学習レート、バッチサイズ、オプティマイザなど) のセットを使って、1 つの `ml.p3.24xlarge` インスタンスで 5 日間かかるトレーニングジョブがあります。SageMaker AI のデータ並列処理ライブラリと 5 倍大きいクラスターを使用すると、約 5 倍のスピードアップを実現できますか。それとも、SMDDP ライブラリを有効にした後、トレーニングハイパーパラメータを再調整する必要がありますか。**

このライブラリは全体的なバッチサイズを変更します。新しい全体的なバッチサイズは、使用されるトレーニングインスタンスの数に応じて直線的にスケールされます。その結果、収束を確実にするために、学習レートなどのハイパーパラメータを変更する必要があります。

**Q: SMDDP ライブラリはスポットに対応していますか。**

はい。マネージドスポットトレーニングを利用できます。SageMaker トレーニングジョブのチェックポイントファイルへのパスを指定します。「[TensorFlow トレーニングスクリプトで SMDDP ライブラリを使用する (非推奨)](data-parallel-modify-sdp-tf2.md)」と「[PyTorch トレーニングスクリプトで SMDDP ライブラリを使用する](data-parallel-modify-sdp-pt.md)」の最後のステップで説明したとおり、トレーニングスクリプトでチェックポイントを保存および復元します。

**Q: SMDDP ライブラリは、シングルホスト、マルチデバイスの設定に適していますか。**

このライブラリはシングルホストのマルチデバイストレーニングに使用できますが、パフォーマンスの向上をもたらすのはマルチホストトレーニングの場合のみです。

**Q: トレーニングデータセットはどこに保存すべきですか。**

トレーニングデータセットは、Amazon S3 バケットまたは Amazon FSx ドライブに保存できます。[こちらの「document for various supported input file systems for a training job」](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html#sagemaker.inputs.FileSystemInput)を参照してください。

**Q: SMDDP ライブラリを使う場合、FSx for Lustre にトレーニングデータを用意するのが必須ですか。Amazon EFS と Amazon S3 は使えますか。**

低レイテンシーで高スループットな Amazon FSx を一般的に使用することをお勧めします。ご希望の場合は、Amazon EFS または Amazon S3 を使用できます。

**Q: このライブラリは CPU ノードで使用できますか。**

いいえ。SMDDP ライブラリでサポートされているインスタンスタイプを確認するには、「[サポートされるインスタンスタイプ](distributed-data-parallel-support.md#distributed-data-parallel-supported-instance-types)」を参照してください。

**Q: SMDDP ライブラリが現時点で起動時にサポートしているフレームワークとフレームワークバージョンは何ですか。**

SMDDP ライブラリは、現時点では、PyTorch v1.6.0 以降と TensorFlow v2.3.0 以降をサポートしています。TensorFlow 1.x はサポートしていません。AWS Deep Learning Containers にパッケージ化されている SMDDP ライブラリのバージョンについては、「[Deep Learning Containers のリリースノート](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/dlc-release-notes.html)」を参照してください。

**Q: このライブラリは AMP をサポートしていますか。**

はい。SMDDP ライブラリは、自動混合精度 (AMP) を標準でサポートしています。AMP を使用するには、トレーニングスクリプトにフレームワークレベルの変更を加える以外、特別なアクションは必要ありません。勾配が FP16 の場合、SageMaker AI データ並列処理ライブラリは、FP16 で `AllReduce` オペレーションを実行します。トレーニングスクリプトへの AMP API の実装に関する詳細は、次のリソースを参照してください。
+ [フレームワーク - PyTorch](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#pytorch) (NVIDIA 深層学習パフォーマンスドキュメント)**
+ [フレームワーク - TensorFlow](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) (NVIDIA 深層学習パフォーマンスドキュメント)**
+ [深層学習の自動混合精度](https://developer.nvidia.com/automatic-mixed-precision) (NVIDIA デベロッパードキュメント)**
+ [NVIDIA GPUでの高速トレーニングのためのネイティブ PyTorch 自動混合精度の導入](https://pytorch.org/blog/accelerating-training-on-nvidia-gpus-with-pytorch-automatic-mixed-precision/) (PyTorch ブログ)**
+ [TensorFlow 混合精度 API](https://www.tensorflow.org/guide/mixed_precision) (TensorFlow ドキュメント)**

**Q: 自分の分散トレーニングジョブが I/O ボトルネックが原因で速度低下しているかどうかを確認するにはどうすればよいですか。**

クラスターが大きくなると、トレーニングジョブにはより多くの I/O スループットが必要になるため、トレーニングスループットが最大パフォーマンスに達するまでに時間がかかる (エポック数が増える) 可能性があります。これは、I/O がボトルネックになっており、ノードのスケールアップに従いキャッシュの蓄積が難しくなる (スループット要件がより高くなり、ネットワークトポロジがより複雑になる) ことを示しています。CloudWatch での Amazon FSx スループットのモニタリングの詳細については、*FSx for Lustre ユーザーガイド*の「[FSx for Lustre をモニタリングする](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring_overview.html)」を参照してください。

**Q: データ並列処理で分散トレーニングジョブを実行している場合、I/O ボトルネックを解決するにはどうすればよいですか。**

Amazon S3 を使用している場合、データチャネルとして Amazon FSx を使用することを強くお勧めします。既に Amazon FSx を使っているにもかかわらず I/O ボトルネックの問題がある場合は、Amazon FSx ファイルシステムを低い I/O スループットと小さなストレージ容量で設定している可能性があります。I/O スループット容量の適切なサイズを見積もり、選択する方法の詳細については、「[Amazon FSx を使って最適なストレージとスループット容量を設定する](data-parallel-config.md#data-parallel-config-fxs)」を参照してください。

**Q: (ライブラリ v1.4.0 以降用) プロセスグループを初期化する際の `Invalid backend` エラーを解決するにはどうすればよいですか。**

`init_process_group` の呼び出し時にエラーメッセージ `ValueError: Invalid backend: 'smddp'` が表示される場合、これは v1.4.0 以降の SMDDP ライブラリで大幅な変更が加えられたことが原因です。このライブラリの PyTorch クライアント `smdistributed.dataparallel.torch.torch_smddp` をインポートする必要があります。これは、`smddp` を PyTorch のバックエンドとして登録します。詳細については[PyTorch トレーニングスクリプトで SMDDP ライブラリを使用する](data-parallel-modify-sdp-pt.md)を参照してください。

*Q: (v1.4.0 以降のライブラリの場合) [https://pytorch.org/docs/stable/distributed.html](https://pytorch.org/docs/stable/distributed.html) インターフェイスの集合演算プリミティブを呼び出したいです。`smddp` バックエンドは、どのプリミティブをサポートしていますか。*

v1.4.0 では、SMDDP ライブラリは `torch.distributed` インターフェイスの `all_reduce`、`broadcast`、`reduce`、`all_gather`、`barrier` をサポートしています。

**Q: (v1.4.0 以降の SMDDP ライブラリの場合) この新しい API は、Apex DDP のような他のカスタム DDP クラスやライブラリでも動作しますか。**

SMDDP ライブラリは、`torch.distribtued` モジュールを使用する他のサードパーティーの分散データ並列処理ライブラリやフレームワーク実装でテストされています。カスタム DDP クラスで使用される集合演算が SMDDP ライブラリでサポートされている限り、そのカスタム DDP クラスで SMDDP ライブラリを使用できます。サポートされている集合体のリストについては、前の質問を参照してください。これらのユースケースがあり、さらにサポートが必要な場合は、[AWS サポートセンター](https://console.aws.amazon.com/support/)または [Amazon SageMaker AI の AWS デベロッパーフォーラム](https://forums.aws.amazon.com/forum.jspa?forumID=285)を通して、SageMaker AI チームに連絡してください。

**Q: SMDDP ライブラリはコンテナ持ち込み (BYOC) オプションをサポートしていますか。その場合、カスタム Dockerfile を作成してライブラリをインストールし、分散型トレーニングジョブを実行するにはどうすればよいですか。**

SMDDP ライブラリとその最小限の依存関係を独自の Docker コンテナに統合したい場合は、BYOC が適切なアプローチです。このライブラリのバイナリファイルを使用して独自のコンテナを構築できます。推奨されるプロセスは、このライブラリとその依存関係を含むカスタム Dockerfile を作成し、Docker コンテナを構築して Amazon ECR でホストし、ECR イメージの URI を使用し SageMaker AI 汎用推定器クラスでトレーニングジョブを起動することです。SMDDP ライブラリを使用して SageMaker AI で分散トレーニングを実行するためのカスタム Dockerfile を準備する方法については、「[SageMaker AI 分散データ並列ライブラリを使用して独自の Docker コンテナを作成する](data-parallel-bring-your-own-container.md)」を参照してください。