Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

SageMaker HyperPod クラスターの回復性

フォーカスモード
SageMaker HyperPod クラスターの回復性 - Amazon SageMaker AI

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

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

SageMaker HyperPod には、以下のクラスター回復機能が備わっています。

クラスターのヘルスチェック

このセクションでは、アクセラレーター (GPU コアと Trainium コア) やネットワーク (EFA) などのデバイスに関する問題について、SageMaker HyperPod がクラスターインスタンスのヘルスを定期的にモニタリングするために使用するヘルスチェックのセットについて説明します。

カテゴリ ユーティリティ名 インスタンスタイプの互換性 説明
アクセラレーター DCGM ポリシー GPU クラスター内の各インスタンスは、NVIDIA DCGM で XID エラーを含むすべての GPU 関連ポリシーを継続的にモニタリングします。
アクセラレーター NVIDIA SMI GPU nvidia-smi ユーティリティは、GPU を管理およびモニタリングするためのよく知られた CLI です。組み込みヘルスチェッカーは、nvidia-smi からの出力を解析して、インスタンスのヘルスを判断します。
アクセラレーター Neuron sysfs Trainium Trainium 搭載インスタンスの場合、Neuron デバイスのヘルスは、Neuron ドライバーによって直接伝達される Neuron sysfs からカウンターを読み取ることで決まります。
ネットワーク EFA GPU と Trainium Elastic Fabric Adaptor (EFA) デバイスの診断に役立つように、EFA ヘルスチェッカーはインスタンス内で使用可能なすべての EFA カードを使用して一連の接続テストを実行します。
ストレス DCGM 診断レベル 2 GPU DCGM 診断レベル 2 は、システム内の GPU を動作させ、ヘルスの詳細なインサイトを得るために負荷をかける目的で使用されます。
ストレス CPU ストレス GPU と Trainium CPU ヘルスは、Linux ストレスツールを使用して判断されます。このツールは、複数のスレッドを実行して CPU 使用率を 100% にし、I/O オペレーションを実行します。

自動再開

このセクションでは、SageMaker HyperPod の自動再開機能を使用してトレーニングジョブを実行する方法について説明します。これにより、16 ノードを超えるクラスターでハードウェア障害が発生した場合に、最後に保存したチェックポイントからトレーニングジョブを自動的に回復するゼロタッチ回復インフラストラクチャが提供されます。

自動再開機能を使用すると、ハードウェア障害またはトレーニング間の一時的な問題が原因でジョブが失敗した場合、SageMaker HyperPod 自動再開はノード置き換えワークフローを開始し、障害のあるノードが置き換えられた後にジョブを再開します。

注記

汎用リソース (GRES) が Slurm ノードにアタッチされている場合、Slurm は通常、ノードの置き換えなど、ノード割り当ての変更を許可しないため、失敗したジョブを再開することはできません。明示的に禁止されていない限り、HyperPod 自動再開機能は GRES 対応ノードに関連付けられた障害のあるジョブを自動的にキューに入れ直します。このプロセスでは、ジョブを停止して、ジョブキューに戻した後、最初からジョブを再開します。

Slurm で SageMaker HyperPod 自動再開機能を使用する

Slurm で SageMaker HyperPod 自動再開を使用する場合、salloc または sbatch を使用して取得した排他的割り当て内でジョブを実行する必要があります。いずれの場合も、ジョブを再開するときにすべての設定ステップが 1 つの srun コマンドで実行されるよう、エントリポイントスクリプトを変更する必要があります。エントリポイントスクリプトでは、停止前にジョブステップが実行されていた環境と一致するよう、置き換えられたノードに環境を設定することが重要です。次の手順は、環境の一貫性を保ち、1 つの srun コマンドとして実行するためにエントリポイントスクリプトを準備する方法を示しています。

ヒント

sbatch を使用する場合、環境を設定するための別個のスクリプトを作成し、1 つの srun コマンドを使用することにより、バッチスクリプトをシンプルに維持できます。

  1. 次のコード例を使用してスクリプトを作成し、train_auto_resume.sh として保存します。このスクリプトは、置き換えられたノードに対して以前に手動設定が行われていないことを前提として、トレーニング環境のセットアップをデプロイします。これにより、環境がノードに依存しなくなるため、ノードが置き換えられると、ジョブを再開する前にノードで同じ環境がプロビジョニングされます。

    注記

    次のコード例は、ジョブに関連付けられた Slurm ノードリストを検出する方法を示しています。SageMaker HyperPod がジョブを自動的に再開すると、その値が古くなる可能性があるため、Slurm が提供する $SLURM_JOB_NODELIST 環境変数を使用しないでください。次のコード例は、SLURM_JOB_NODELIST を置き換える新しい NODE_LIST 変数を定義し、NODE_LIST変数から MASTER_NODE および MASTER_ADDR 変数を設定する方法を示しています。

    #!/bin/bash # Filename: train_auto_resume.sh # Sample containerized script to launch a training job with a single srun which can be auto-resumed. # Place your training environment setup here. # Example: Install conda, docker, activate virtual env, etc. # Get the list of nodes for a given job NODE_LIST=$(scontrol show jobid=$SLURM_JOBID | \ # Show details of the SLURM job awk -F= '/NodeList=/{print $2}' | \ # Extract NodeList field grep -v Exc) # Exclude nodes marked as excluded # Determine the master node from the node list MASTER_NODE=$(scontrol show hostname $NODE_LIST | \ # Convert node list to hostnames head -n 1) # Select the first hostname as master node # Get the master node address MASTER_ADDR=$(scontrol show node=$MASTER_NODE | \ # Show node information awk -F= '/NodeAddr=/{print $2}' | \ # Extract NodeAddr awk '{print $1}') # Print the first part of NodeAddr # Torchrun command to launch the training job torchrun_cmd="torchrun --nnodes=$SLURM_NNODES \ --nproc_per_node=1 \ --node_rank=$SLURM_NODE \ --master-addr=$MASTER_ADDR \ --master_port=1234 \ <your_training_script.py>" # Execute the torchrun command in the 'pytorch' Conda environment, # streaming output live /opt/conda/bin/conda run --live-stream -n pytorch $torchrun_cmd
    ヒント

    上記のスクリプトを使用して、ジョブに追加の依存関係をインストールするためのコマンドを追加できます。ただし、依存関係インストールスクリプトは、クラスターの作成時に使用される一連のライフサイクルスクリプトに保持することをお勧めします。共有ディレクトリにホストされている仮想環境を使用する場合、このスクリプトを利用して仮想環境をアクティブ化することもできます。

  2. ハードウェア障害が発生した場合に srun コマンドを自動的に再試行する必要があることを示すフラグ --auto-resume=1 を追加することにより、SageMaker HyperPod 自動再開を有効にしてジョブを起動します。

    注記

    sbatch または salloc を使用してリソース割り当てを設定した場合、割り当て内で複数の srun コマンドを実行できます。障害が発生した場合、SageMaker HyperPod 自動再開機能は、フラグ --auto-resume=1 を持つ srun コマンドの現在のジョブステップでのみ動作します。つまり、srun コマンドで自動再開をアクティブ化しても、リソース割り当てセッション内で起動された他の srun コマンドには適用されません。

    auto-resume が有効な srun コマンドの例を次に示します。

    sbatch を使用する

    環境を設定するためのロジックのほとんどは既に train_auto_resume.sh にあるため、バッチスクリプトはシンプルであり、次のコード例のようになります。次のバッチスクリプトが batch.sh という名前で保存されるとします。

    #!/bin/bash #SBATCH --nodes 2 #SBATCH --exclusive srun --auto-resume=1 train_auto_resume.sh

    次のコマンドを使用して前のバッチスクリプトを実行します。

    sbatch batch.sh

    salloc を使用する

    まず排他的割り当てを取得し、--auto-resume フラグとエントリポイントスクリプトを使用して srun コマンドを実行します。

    salloc -N 2 --exclusive srun --auto-resume=1 train_auto_resume.sh

HyperPod によって自動的に再開されていない、障害のあるノードを置き換える方法

HyperPod 自動再開機能は、Slurm ノードの状態が fail または down に変わるかどうかをモニタリングします。sinfo を実行することで、Slurm ノードの状態を確認できます。

問題が残っているノードがあり、HyperPod 自動再開機能では修正されない場合、次のコマンドを実行してノードの状態を fail に変更することをお勧めします。

scontrol update node=<ip-ipv4> state=fail reason="Action:Replace"

前のコマンド例では、<ip-ipv4> を、置き換え対象の障害のあるインスタンスの Slurm ノード名 (ホスト名) に置き換えます。

このコマンドを実行すると、ノードは fail 状態になって、現在実行中のジョブが終了するのを待機し、正常なインスタンスに置き換えられて、同じホスト名で回復されます。このプロセスにかかる時間は、アベイラビリティーゾーンで使用可能なインスタンスとライフサイクルスクリプトの実行にかかる時間によって異なります。更新および置き換えプロセス中は、ノードの状態を手動で変更したり、Slurm コントローラーを再起動したりしないでください。置き換えに失敗する可能性があります。長期間経過してもノードが回復されず、idle 状態にならない場合、AWS サポートにお問い合わせください。

障害のあるノードが継続的に fail 状態のままになっている場合、最後の手段として、ノードの状態を手動で強制的に down に変更してみることもできます。これには、管理者権限 (sudo アクセス許可) が必要です。

警告

次のコマンドを実行するとすべてのジョブが強制終了され、保存されていない作業がすべて失われる可能性があるため、実行する前に慎重に進めてください。

scontrol update node=<ip-ipv4> state=down reason="Action:Replace"
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.