Amazon SageMaker 分散データ並列処理ライブラリに関するよくある質問 - Amazon SageMaker

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

Amazon SageMaker 分散データ並列処理ライブラリに関するよくある質問

以下を使用して、SMDDP ライブラリに関するよくある質問に対する回答を見つけます。

Q: このライブラリを使う場合、allreduce をサポートする CPU インスタンスはどのように管理されますか。異種 CPU-GPU クラスターを作成する必要がありますか、それとも SageMaker SMDDP ライブラリを使用するジョブ用にサービスによって追加の C5s が作成されますか?

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

Q: ハイパーパラメータ H1 (学習レート、バッチサイズ、オプティマイザなど) のセットを使って、1 つの ml.p3.24xlarge インスタンスで 5 日間かかるトレーニングジョブがあります。 SageMakerのデータ並列処理ライブラリと 5 倍の大きなクラスターは、約 5 倍の高速化を実現するのに十分ですか? または、SMDDP ライブラリをアクティブ化した後、トレーニングハイパーパラメータを再確認する必要がありますか?

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

Q: SMDDP ライブラリはスポットをサポートしていますか?

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

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

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

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

トレーニングデータセットは、Amazon S3 バケットまたは Amazon FSx ドライブに保存できます。こちらの「document for various supported input file systems for a training job」を参照してください。

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

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

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

いいえ。SMDDP ライブラリでサポートされているインスタンスタイプを確認するには、「」を参照してくださいサポートされるインスタンスタイプ

Q: 起動時に SMDDP ライブラリで現在サポートされているフレームワークとフレームワークのバージョンは何ですか?

SMDDP ライブラリは現在、 PyTorch v1.6.0 以降および TensorFlow v2.3.0 以降をサポートしています。 TensorFlow 1.x はサポートされていません。 AWS 深層学習コンテナ内にパッケージ化されている SMDDP ライブラリのバージョンの詳細については、「深層学習コンテナのリリースノート」を参照してください。

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

はい。SMDDP ライブラリは、すぐに使える自動混合精度 (AMP) をサポートしています。AMP を使用するには、トレーニングスクリプトにフレームワークレベルの変更を加える以外、特別なアクションは必要ありません。勾配が FP16 にある場合、 SageMaker データ並列処理ライブラリは FP16 でそのAllReduceオペレーションを実行します。トレーニングスクリプトへの AMP API の実装に関する詳細は、次のリソースを参照してください。

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

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

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

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

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

を呼び出すValueError: Invalid backend: 'smddp'ときにエラーメッセージが発生した場合はinit_process_group、SMDDP ライブラリ v1.4.0 以降で重大な変更が発生したことが原因です。ライブラリの PyTorch クライアント をインポートする必要があります。これはsmdistributed.dataparallel.torch.torch_smddp、 のバックエンドsmddpとして登録されます PyTorch。詳細については、「 PyTorch トレーニングスクリプトでSMDDPライブラリを使用する」を参照してください。

Q: (SMDDP ライブラリ v1.4.0 以降の場合) torch.distributedインターフェイスの集合プリミティブを呼び出したい。smddp バックエンドは、どのプリミティブをサポートしていますか。

v1.4.0 では、SMDDP ライブラリは torch.distributedインターフェイスbarrierall_reducebroadcastreduceall_gather、および をサポートしています。

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

SMDDP ライブラリは、 torch.distribtuedモジュールを使用する他のサードパーティーの分散データ並列ライブラリとフレームワーク実装でテストされています。カスタム DDP クラスで SMDDP ライブラリを使用することは、カスタム DDP クラスで使用される集合演算が SMDDP ライブラリでサポートされている限り機能します。サポートされている集合体のリストについては、前の質問を参照してください。これらのユースケースがあり、さらにサポートが必要な場合は、 AWS サポートセンターまたは AWS Amazon のデベロッパーフォーラム SageMakerから SageMaker チームにお問い合わせください。

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

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