障害のあるホストを報告する

A4X Max、A4X、A4、A3 Ultra、A3 Mega、A3 High(8 個の GPU)インスタンスで、自分で解決できない問題が発生した場合は、ホストに障害があると報告できます。このような問題の例としては、クラスタ内のパフォーマンスの低下や、GPU 温度が常に高い状態などが挙げられます。

ホストに障害があると報告すると、Compute Engine はホスト メンテナンスを実行してコンピューティング インスタンスを自動的に修復します。

  • A4 インスタンスと A3 Ultra インスタンスの場合、未使用の予約済み容量がある場合や、インスタンスのゾーンで容量が使用可能な場合、メンテナンスが開始されると、Compute Engine はインスタンスを別のホストに移行しようとします。ホストを障害として報告すると、ワークロードのダウンタイムを最小限に抑えることができます。
  • A3 Mega インスタンスと A3 High インスタンスの場合、Compute Engine はインスタンスを停止し、必要なホストの修復を実行してから、同じホストでインスタンスを再起動します。

このドキュメントでは、Slurm クラスタまたは他のコンピューティング インスタンス ベースのクラスタに属する障害のあるホスト インスタンスを報告して修復する方法について説明します。Google Kubernetes Engine(GKE)クラスタで障害のあるホストを報告するには、GKE を介して障害のあるホストを報告するをご覧ください。

制限事項

障害のあるホストを報告する場合、次の制限が適用されます。

  • ホストで実行されているコンピューティング インスタンスが次の条件をすべて満たしている場合にのみ、障害のあるホストを報告できます。

    • コンピューティング インスタンスが実行されている。

    • コンピューティング インスタンスは、A4X Max、A4X、A4、A3 Ultra、A3 Mega、A3 High(8 GPU)マシンタイプを使用します。

    • コンピューティング インスタンスが予約にバインドされたプロビジョニング モデルを使用している。

  • reportHostAsFaulty オペレーションの進行中にコンピューティング インスタンスを削除すると、reportHostAsFaulty オペレーションは失敗します。

  • Google Cloud は、障害のあるホストの報告リクエストをすべて満たすためにベスト エフォートで試行します。ただし、容量の制約やレート制限により、リクエストが常に満たされるとは限りません。

始める前に

このページのサンプルをどのように使うかに応じて、タブを選択してください。

コンソール

Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

gcloud

Google Cloud コンソールで Cloud Shell をアクティブにします。

Cloud Shell をアクティブにする

Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

REST

このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

    Google Cloud CLI をインストールします。

    外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

障害のあるホストを報告するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • コンピューティング インスタンスまたはプロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1
  • Cloud Logging を使用して障害のあるホストの報告オペレーションの状態を表示するには: プロジェクトに対するログ閲覧者 roles/logging.viewer

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、障害のあるホストを報告するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

障害のあるホストを報告するには、次の権限が必要です。

  • 障害のあるホストの報告を作成する: コンピューティング インスタンスに対する compute.instances.update
  • Logging を使用してオペレーションのリストを表示する: プロジェクトに対する logging.operations.list
  • Logging を使用してオペレーションの詳細を表示する: プロジェクトに対する logging.operations.get
  • Compute Engine のオペレーションの一覧を表示する: プロジェクトに対する compute.zoneOperations.list
  • Compute Engine のオペレーションの詳細を表示する: プロジェクトに対する compute.zoneOperations.describe

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

障害のあるホストの報告プロセスについて

コンピューティング インスタンスの障害のあるホストを報告した後、コンピューティング インスタンスが再起動するタイミングは、コンピューティング インスタンスが使用する予約で指定された予約オペレーション モードによって異なります。予約の運用モードを確認するには、予約の reservationOperationalMode フィールドを表示します。次の表に、利用可能な 2 つの予約運用モード(すべての容量モードマネージド モード)の障害のあるホストプロセスをまとめます。
All Capacity モード(ALL_CAPACITY マネージド モード(HIGHLY_AVAILABLE_CAPACITY
サポートされているマシンタイプ A4X Max と A4X A4、A3 Ultra、A3 Mega、A3 High
Faulty host report API のレート制限 レート制限は適用されません。 API の呼び出しにはレート制限が適用される場合があります。
障害のあるホストの報告プロセス

全容量モードで実行されているコンピューティング インスタンスの障害のあるホストを報告すると、次のようになります。

  1. 障害のあるホストを報告する: インスタンスは、障害のあるホストの報告オペレーション全体で RUNNING 状態のままになります。通常、報告オペレーションの完了には 10 ~ 12 分かかります。オペレーションの状態を確認するには、このドキュメントの障害のあるホストの報告オペレーションを確認するをご覧ください。
  2. ホストを修復する: 障害のあるホストの報告オペレーションが完了すると、1 分以内にホストの修復オペレーションが開始されます。

    ホストの修復オペレーションが開始されると、インスタンスが停止し、インスタンスに指定された自動再起動(automaticRestart)設定に応じて状態が変化します。

    • インスタンスで自動再起動が有効になっている場合、インスタンスの状態は REPAIRING に変わります。ホストが正常な場合、インスタンスは自動的に再起動します。ただし、それまでにインスタンスを停止した場合を除きます。
    • インスタンスで自動再起動が無効になっている場合、インスタンスの状態は TERMINATED に変わります。ホストが正常になったら、インスタンスを手動で再起動する必要があります。

    障害のあるホストの修復には 3 ~ 14 日、またはそれ以上かかることがあります。

  3. インスタンスを再起動する: ホストの修復オペレーションが完了すると(通常は 3 ~ 14 日)、次のいずれかが発生します。

    • インスタンスが REPAIRING 状態にあり、修復が完了したときにリソースが使用可能な場合、Compute Engine は修復されたホストでインスタンスを自動的に再起動します。
    • それ以外の場合、インスタンスが TERMINATED 状態の場合、または修復が完了したときにリソースが使用できない場合には、インスタンスの状態は TERMINATED のままになるか、TERMINATED に変更されます。インスタンスを実行する場合は、インスタンスを手動で再起動する必要があります。ただし、インスタンスの再起動時にリソースが使用できない場合(修復されたホストを他のインスタンスがすでに使用している場合など)、インスタンスの再起動が失敗することがあります。

マネージド モードで実行されているコンピューティング インスタンスの障害のあるホストを報告すると、次のようになります。

  1. 障害のあるホストを報告する: インスタンスは、障害のあるホストの報告オペレーション全体で RUNNING 状態のままになります。通常、報告オペレーションの完了には 10 ~ 12 分かかります。オペレーションの状態を確認するには、このドキュメントの障害のあるホストの報告オペレーションを確認するをご覧ください。
  2. ホストの修復を開始する: 障害のあるホストの報告オペレーションが完了すると、1 分以内にホストの修復オペレーションが開始されます。

    ホストの修復オペレーションが開始されると、インスタンスが停止し、インスタンスに指定された自動再起動(automaticRestart)設定に応じて状態が変化します。

    • インスタンスで自動再起動が有効になっている場合、インスタンスの状態は REPAIRING に変わります。ホストが正常な場合、インスタンスは自動的に再起動します。ただし、それまでにインスタンスを停止した場合を除きます。
    • インスタンスで自動再起動が無効になっている場合、インスタンスの状態は TERMINATED に変わります。ホストが正常になったら、インスタンスを手動で再起動する必要があります。

    障害のあるホストの修復には 3~14 日、またはそれ以上かかることがあります。

  3. インスタンスを移行して再起動する: ホストの修復オペレーションが開始されると(通常は 10 ~ 12 分)、Compute Engine は、予約済み容量で報告された障害のあるホストを置き換えるために、別のホストを予約しようとします。Compute Engine が正常なホストを見つけた場合(障害のあるホストの置き換えに成功した場合や、予約済み容量で一致する正常なホストを見つけた場合など)、Compute Engine はインスタンスをそのホストに移行します。インスタンスの再起動は、次のいずれかで行われます。

    • インスタンスが REPAIRING 状態にあり、修復が完了する前または完了時にリソースが使用可能な場合、Compute Engine は正常なホストでインスタンスを自動的に再起動します。
    • それ以外の場合、インスタンスが TERMINATED 状態の場合、または修復が完了する前または完了時にリソースが使用できない場合には、インスタンスの状態は TERMINATED のままになるか、TERMINATED に変更されます。インスタンスを実行する場合は、インスタンスを手動で再起動する必要があります。ただし、インスタンスの再起動時にリソースが使用できない場合(修復されたホストを他のインスタンスがすでに使用している場合など)、インスタンスの再起動が失敗することがあります。

障害のあるホストを報告する前に問題をトラブルシューティングする

ホストの障害を報告する前に、問題をトラブルシューティングして、ワークロードやクラスタ構成の問題ではなく、ハードウェアの問題であることを確認することをおすすめします。このアプローチは、ワークロードの不要なダウンタイムを防ぐのに役立ちます。

クラスタ ヘルス スキャナ テストを実行する

クラスタの健全性スキャナ(CHS)ツールを使用して、事前対応型の健全性チェックを実行し、GPU クラスタ内の問題を診断します。具体的には、次のテストを実行します。

  • GPU チェック: NVIDIA の Data Center GPU Manager(DCGM)を使用して、個々の GPU の健全性をチェックします。
  • NCCL チェック: GPU 間のネットワーク通信を検証します。

GPU のパフォーマンスの問題と遅延を確認する

パフォーマンスの低下に気づいた場合は、遅延検出サービスを使用して、クラスタ内の他の VM よりもパフォーマンスが遅い可能性のある VM を特定します。

GPU の温度と熱違反をモニタリングする

ログに温度違反の警告が表示された場合や、DCGM によって報告された場合は、次のガイダンスを確認してください。

  • 警告と重大なエラー: 現在の DCGM 診断では、温度違反が重大度 monitor の警告として報告されることがあります。つまり、GPU はワークロードを実行する準備が整っていますが、モニタリングする必要があります。
  • 誤検知: NVIDIA は、実際の温度に関する問題の兆候が見られない GPU での温度違反レポートの頻度が増加していることを調査しています。
  • 推奨事項: 熱警告が原因でホストに障害が発生したと報告する前に、実際の GPU 温度が安全なしきい値を超えているかどうか、ワークロードのパフォーマンスが影響を受けているかどうかを確認します。温度が安定していてパフォーマンスが正常な場合は、GPU を欠陥として報告するのではなく、モニタリングすることをおすすめします。

GPU のトラブルシューティングの詳細については、Compute Engine ドキュメントの GPU VM のトラブルシューティングをご覧ください。

障害のあるホストを報告する

障害のあるホストを報告する手順は次のとおりです。

  1. コンピューティング インスタンスが実行されているホストを確認します

    手順については、コンピューティング インスタンスのトポロジを表示するをご覧ください。

  2. 省略可: ローカル SSD データをバックアップします。インスタンスが停止すると、Compute Engine はインスタンスにアタッチされているローカル SSD ディスクのデータを自動的に破棄します。Compute Engine がローカル SSD データを破棄した後は、復元できません。

    ローカル SSD データを保持する手順については、ローカル SSD データのバックアップをご覧ください。

  3. 障害のあるホストを報告します。障害のあるホストを報告するには、次のいずれかのオプションを選択します。ホストの修復オペレーションは、障害のあるホストの報告オペレーションが完了してから 1 分以内に開始されます。障害のあるホストの報告オペレーションを開始した後にインスタンスが応答しなくなった場合は、少なくとも 15 分待ってからコンピューティング インスタンスを再起動することをおすすめします。

    gcloud

    障害のあるホストを報告するには、次の gcloud compute instances report-host-as-faulty コマンドを使用します。

    gcloud compute instances report-host-as-faulty INSTANCE_NAME \
        --async \
        --disruption-schedule=IMMEDIATE \
        --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \
        --zone=ZONE
    

    次のように置き換えます。

    • INSTANCE_NAME: コンピューティング インスタンスの名前。

    • FAULT_REASON: コンピューティング インスタンスで発生したホストの問題のリスト(カンマ区切り)。例: ISSUE_1,ISSUE_2。指定できる値は次のとおりです。

      • PERFORMANCE: コンピューティング インスタンスに接続されている GPU は、クラスタ内の他の GPU と比較してパフォーマンスに問題があります。ログに XID エラーが表示されず、Compute Engine でサイレント データ破損などの他の一般的な障害パターンが検出されていません。

      • SILENT_DATA_CORRUPTION: コンピューティング インスタンスでデータ破損が発生しているものの、コンピューティング インスタンスの実行は継続されている場合。サイレント データ破損は、vCPU の不良、ソフトウェアのバグ、カーネルの問題などが原因で発生することがあります。

      • UNRECOVERABLE_GPU_ERROR: XID で修復不可能な GPU エラーを特定しました。

      • BEHAVIOR_UNSPECIFIED: コンピューティング インスタンスの問題が何であるか不明な場合。

    • DESCRIPTION: コンピューティング インスタンスに影響している問題の説明(XID 情報やパフォーマンスの問題の疑いなど)。

    • ZONE: コンピューティング インスタンスが存在するゾーン。

    REST

    障害のあるホストを報告するには、instances.reportHostAsFaulty メソッドに次の POST リクエストを送信します。

    障害のあるホストを報告するときに、複数の障害理由を一度に指定できます。たとえば、2 つの障害理由を指定するには、次のようにリクエストを送信します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/reportHostAsFaulty
    
    {
      "disruptionSchedule": "IMMEDIATE",
      "faultReasons": [
        {
          "behavior": "FAULT_REASON_1",
          "description": "DESCRIPTION_1"
        },
        {
          "behavior": "FAULT_REASON_2",
          "description": "DESCRIPTION_2"
        }
      ]
    }
    

    次のように置き換えます。

    • PROJECT_ID: コンピューティング インスタンスが存在するプロジェクトの ID。

    • ZONE: コンピューティング インスタンスが存在するゾーン。

    • INSTANCE_NAME: コンピューティング インスタンスの名前。

    • FAULT_REASON_1FAULT_REASON_2: コンピューティング インスタンスで発生した各ホストの問題。指定できる値は次のとおりです。

      • PERFORMANCE: コンピューティング インスタンスに接続されている GPU は、クラスタ内の他の GPU と比較してパフォーマンスに問題があります。ログに XID エラーが表示されず、Compute Engine でサイレント データ破損などの他の一般的な障害パターンが検出されていません。

      • SILENT_DATA_CORRUPTION: コンピューティング インスタンスでデータ破損が発生しているものの、コンピューティング インスタンスの実行は継続されている場合。サイレント データ破損は、vCPU の不良、ソフトウェアのバグ、カーネルの問題などが原因で発生することがあります。

      • UNRECOVERABLE_GPU_ERROR: XID で修復不可能な GPU エラーを特定しました。

      • BEHAVIOR_UNSPECIFIED: コンピューティング インスタンスの問題が何であるか不明な場合。

    • DESCRIPTION_1DESCRIPTION_2: 指定した各ホストの問題の説明(XID 情報やパフォーマンスの問題の疑いなど)。

障害のあるホストを報告するオペレーションを確認する

障害のあるホストを報告すると、Compute Engine は一連のオペレーションを開始して、ホストに障害があることをマークし、ホストの修復の準備を行います。具体的には、障害のあるホストの報告オペレーション中に、次のプロセスが発生します。

  1. ホストに障害があることをマークします。Compute Engine が障害のあるホストの報告オペレーションを作成します。次に、障害のあるホストの報告オペレーションは、一連のサブオペレーションを作成します。これらのサブオペレーションは、基盤となるホストに障害があるとマークします。

  2. 修理のためにホストを準備します。すべてのサブオペレーションが完了すると、障害のあるホストの報告オペレーションが開始されます。Compute Engine はコンピューティング インスタンスを停止し、障害のあるホストの修復オペレーションを開始します。コンピューティング インスタンスが使用する予約で指定された予約の運用モードに基づいて、正常なホストが使用可能な場合、Compute Engine はコンピューティング インスタンスを停止したままにするか、コンピューティング インスタンスの自動移行と再起動を試みます。

  3. 報告を完了し、ホストを修復します。Compute Engine は障害のあるホストの報告オペレーションを完了し、ホストの修復オペレーションを実行します。

プロジェクト内の障害のあるホスト(compute.instances.reportHostAsFaulty)の報告オペレーションのステータスを追跡するには、次のいずれかのオプションを選択します。修復、移行、自動再起動の追跡に使用できる他のオペレーションの詳細については、Compute Engine ドキュメントのメンテナンスと再起動の動作ホスト メンテナンス イベントのモニタリングと計画をご覧ください。

コンソール(インスタンス オペレーション)

  1. Google Cloud コンソールで、[オペレーション] ページに移動します。

    [オペレーション] に移動

  2. 表示されたテーブルで、報告したコンピューティング インスタンスを探します。

  3. コンピューティング インスタンスを含む行の [ステータス] 列で、障害のあるホストの報告オペレーションのステータスを確認できます。オペレーションが完了すると、値は Done になります。

  4. 省略可: Compute Engine がコンピューティング インスタンスを再起動したかどうかを確認するには、インスタンスの詳細を表示します。

コンソール(コンピューティング インスタンスのログ)

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [クエリを表示] 切り替えボタンがオンになっていることを確認します。

  3. クエリエディタで以下のクエリを入力します。

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. [クエリを実行] をクリックします。[クエリ結果] ペインにクエリ結果が表示されます。

gcloud

  1. プロジェクト内の障害のあるホストの報告オペレーションのステータスを表示するには、--filter フラグを operationType:reportHostAsFaulty に設定して gcloud compute operations list コマンドを使用します。

    gcloud compute operations list --filter="operationType:reportHostAsFaulty"
    
  2. 特定の障害のあるホストのオペレーションの詳細を表示する場合は、gcloud compute operations describe コマンドを使用します。

    gcloud compute operations describe OPERATION_NAME \
        --zone="ZONE"
    

    次のように置き換えます。

    • OPERATION_NAME: オペレーションの名前。

    • ZONE: オペレーションが存在するゾーン。

REST

プロジェクト内の障害のあるホストのオペレーションのステータスを表示するには、zoneOperations.list メソッドGET リクエストを送信します。リクエスト URL に、items.operationType:reportHostAsFaulty に設定された filter クエリ パラメータを含めます。

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:reportHostAsFaulty

次のように置き換えます。

  • PROJECT_ID: オペレーションの名前。

  • ZONE: オペレーションが存在するゾーン。

次のステップ