マルチノードの並列ジョブ - AWS Batch

マルチノードの並列ジョブ

マルチノードの並列ジョブでは、複数の Amazon EC2 インスタンスにまたがる単一のジョブを実行できます。AWS Batch のマルチノード並列ジョブ (ギャングスケジューリングとも呼ばれる) では、Amazon EC2 リソースを直接起動、設定、管理する必要なく、ラージスケールで密結合された高パフォーマンスのコンピューティングアプリケーションと分散された GPU モデルトレーニングを実行できます。1つの AWS Batch マルチノード並列ジョブは、IPベースのノード間通信をサポートするあらゆるフレームワークと互換性があります。例としては、アパッチMXネット(Apache MXNet)、TensorFlow、Caffe2、メッセージパッシングインターフェイス (MPI) などがあります。

マルチノードの並行ジョブは、単一のジョブとして送信されます。ただし、ジョブ定義 (あるいは、ジョブ送信ノードの上書き) は、ジョブに作成するノードの数および作成するノードグループを指定します。各マルチノードの並列ジョブには主要なノードが含まれ、まずこれが起動されます。主要なノードが確立したら、子ノードが起動されて開始します。ジョブは、メインノードが終了した場合にのみ終了します。その後、すべての子ノードが停止します。詳細については、ノードグループを参照してください。

マルチノードの並列ジョブは、シングルテナントです。つまり、各 Amazon EC2 インスタンスごとに、単一のジョブコンテナのみが実行されます。

最終的なジョブステータス (SUCCEEDED あるいは FAILED) は、主要なノードの最終的なジョブステータスによって決定されます。マルチノードの並列ジョブのステータスを取得するには、ジョブの送信時に返されるジョブ ID を使用して、ジョブを記述できます。子ノードの詳細が必要な場合には、各子ノードごとに個別に記述する必要があります。ノードは #N 表記を使用して対処されます (0 から開始)。たとえば、ジョブの 2 番目のノードの詳細にアクセスするには、AWS Batch DescribeJobs API アクションを使用してaws_batch_job_id#1 と記述する必要があります。マルチノードの並列ジョブの startedstoppedAtstatusReasonexit 情報は、主要なノードから入力されます。

ジョブの再試行を指定した場合、メインノードに障害が発生すると、別の試行が行われます。子ノードに障害が発生しても、再試行回数は発生しません。マルチノードの並列ジョブの新しい試行ごとに、関連付けられた子ノードに対応する試行が更新されます。

AWS Batch でマルチノードの並列ジョブを実行するには、アプリケーションコードに分散された通信に必要なフレームワークとライブラリが含まれている必要があります。