ML ワークロードのデバッグ Wiki を使用してトラブルシューティングする
ML ワークロード デバッグ Wiki は、AI コーディング エージェントが JAX、XLA、Pathways を使用して Google Kubernetes Engine(GKE)で実行されている TPU ワークロードのトラブルシューティングに使用する GitHub リポジトリです。この Wiki により、AI エージェントはワークロード ログを収集し、エラー シグネチャを既知の障害モードと照合して、診断ワークフローを実行し、ログに基づいて根本原因を報告できます。これにより、エージェントはワークロードのクラッシュ、ハング、再起動、プリエンプションの診断に必要な情報を取得できます。
Wiki には、次の 2 種類の参考資料があります。
- ナレッジページ: コンセプト、障害の症状とそのログ シグネチャ、トラブルシューティングのハンドブック、診断ツールを説明する Markdown ページ。
- 実行可能な手順: JSON アクションとワークフロー。アクションは、ログクエリや
kubectlコマンドなどの単一の診断ステップです。ワークフローは、特定の障害モードを診断するための一連のアクションを実行します。
/troubleshoot コマンドを実行すると、専門のサブエージェント チームがワークロード ログをトリアージし、障害に一致するワークフローを選択して実行し、各結論をプライマリ ログと照合します。次に、エージェントは根本原因、ログから引用された原因となったホスト、各中断をまとめた障害テーブルを報告します。
キーファイル
次の表に、Debug ML Workloads Wiki 内の主なファイルとディレクトリを示します。
| パス | 説明 |
|---|---|
_wiki/TUTORIAL.md |
診断中に何が起こるか、結果をどのように評価するかを、具体例を交えて説明します。 |
_wiki/INDEX.md |
Wiki のすべてのページ、アクション、ワークフローのカタログ。それぞれに 1 行の概要が記載されています。 |
_wiki/concepts/ |
システム アーキテクチャとコンポーネントのライフサイクルのコンセプト(libtpu プログラムのライフサイクル、グッドプット、ワークロードの進行状況のモニタリングなど)。 |
_wiki/entities/ |
TPU、GPU、JAX、XLA、Pathways などのハードウェア、ソフトウェア、プラットフォーム エンティティ。 |
_wiki/symptoms/ |
障害モード、そのログ署名、各障害モードの検証方法。 |
_wiki/playbooks/ |
トラブルシューティング戦略、ディシジョン ツリーのフローチャート、一般的な落とし穴。 |
_wiki/tools/ |
診断ツール、スクリプト、コマンドライン リファレンス ガイド。 |
_wiki/workflows/ |
JSON 形式の診断手順。各ワークフローは、特定の障害モードを診断するための一連のアクションを実行します。 |
_wiki/actions/ |
JSON 形式の個々の診断ステップ(ログクエリや kubectl コマンドなど)。 |
_wiki/SCHEMA.md |
Wiki ページが従う必要があるページタイプ、フロントマターの要件、分類タグ。 |
_agents/QUICKSTART.md |
Antigravity ユーザーのセットアップと発送の詳細。 |
CLAUDE.md |
Claude Code ユーザー向けのワークスペース レイアウト、コマンドライン ツール、サブエージェントのロール。 |
キーコマンド
次の表に、wiki で実行できるコマンドを示します。
| コマンド | 用途 | 説明 |
|---|---|---|
/troubleshoot |
/troubleshoot WORKLOAD_ID。ここで、WORKLOAD_ID はワークロードまたは JobSet の名前です。 |
Cloud Logging、GKE クラスタ イベント、kubelet ログ、ノードログを使用してワークロードを診断します。ルーター、プラクティショナー、レビュー担当者、アドバイザーのサブエージェントが診断を実行し、根本原因、ログから引用された原因ホスト、障害テーブルを報告します。 |
/dashboard |
/dashboard [TARGET]。ここで、TARGET はオプションのプロジェクト ID、クラスタ名、またはワークロード ID です。TARGET を省略すると、Google Cloud CLI 構成で設定されているプロジェクト内のすべての GKE クラスタがダッシュボードに表示されます。 |
GKE Capacity & Triage Dashboard(http://localhost:8080 のローカル ウェブアプリ)を起動します。このコマンドは、ターゲットのクラスタをスキャンし、ターゲットにフィルタされたダッシュボード ビューへのリンクを返します。 |
/handoff |
|
/troubleshoot の検出結果を Cloud Storage バケットにパッケージ化して Cloud カスタマーケアと共有し、バケットの更新をモニタリングします。後で更新を確認するには、/handoff --watch STORAGE_KEY を実行します。ここで、STORAGE_KEY はバケット内のハンドオフ フォルダの名前です。 |
前提条件
Wiki を設定する前に、診断するワークロードを特定し、次の詳細をメモします。
- ワークロードまたは JobSet の名前。
- ワークロードを実行する Google Cloud プロジェクトの ID。
- 診断する実行のおおよその期間。
インストール
この wiki では、次のインストールが必要です。
venvモジュールを含む Python 3 をインストールします。この wiki には Python 3.9 以降が必要です。Debian と Ubuntu では、venvモジュールはpython3-venvパッケージにあります。- Google Cloud CLI をインストールして初期化します。
kubectlとgke-gcloud-auth-pluginをインストールします。- 次のいずれかの AI コーディング エージェントをインストールします。この Wiki には、次の両方の構成ファイルが含まれています。
必要なロール
エージェントは、 Google Cloud 認証情報を使用して診断コマンドを実行します。ワークロードを診断するには、ワークロードを実行するプロジェクトに次の IAM ロールを付与します。
- ログビューア(
roles/logging.viewer): エージェントがワークロード コンテナ、ノード、監査ログを読み取れるようにします。 - Kubernetes Engine 閲覧者(
roles/container.viewer): エージェントがワークロードを実行したクラスタ、ノード、Pod を検査できるようにします。 - Compute 閲覧者(
roles/compute.viewer): エージェントが、クラスタノードをバックアップする Compute Engine VM(VM のメンテナンス イベントや終了イベントなど)を検査できるようにします。 - モニタリング閲覧者(
roles/monitoring.viewer): エージェントが、ワークロードとノードの指標を検査するワークフローの Cloud Monitoring 指標を読み取れるようにします。
/handoff コマンドを実行するには、Cloud カスタマーケアと共有する Cloud Storage バケットに対するストレージ オブジェクト管理者(roles/storage.objectAdmin)ロールも必要です。このロールにより、エージェントは検出結果をバケットにアップロードし、更新をモニタリングできます。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
Wiki を設定する
リポジトリのクローンを作成し、そのルート ディレクトリに移動します。
git clone https://github.com/google/ml-workload-debugging-wiki.git cd ./ml-workload-debugging-wikiWiki では、リポジトリのルートからの相対パスが使用されます。そのため、このディレクトリからコマンドを実行してエージェントを起動します。
Python 仮想環境を作成して有効にし、Wiki の依存関係をインストールします。
python3 -m venv _wiki/.venv source _wiki/.venv/bin/activate pip install -r _wiki/requirements.txtユーザー アカウントのローカルアプリケーションのデフォルト認証情報(ADC)を作成します。Wiki の Python ツールは、ADC を使用して Cloud Logging にクエリを実行します。
gcloud auth application-default loginwiki linter を実行して設定を確認します。
python3 _wiki/wiki_linter.pylinter は、Wiki の構造、スキーマ、リンクをチェックし、JSON レポートを出力します。レポートに
"status": "PASS"が含まれている場合、チェックは成功しています。レポートの警告はステータスに影響しません。
ワークロードのトラブルシューティング
ML ワークロード デバッグ Wiki を使用してワークロードのトラブルシューティングを行うには、次の手順を行います。
ML ワークロード デバッグ Wiki リポジトリのルートからエージェントを起動します。
- Claude Code: 仮想環境を有効にしたシェルで、
claudeを実行します。Claude Code は、CLAUDE.mdから Wiki の指示を読み込み、.claude/ディレクトリからコマンドとサブエージェントの定義を読み込みます。 - Antigravity: リポジトリのルートをワークスペースとして開きます。Wiki の Antigravity スキルとサブエージェントの定義は、
_agents/ディレクトリにあります。設定の詳細については、_agents/QUICKSTART.mdをご覧ください。
- Claude Code: 仮想環境を有効にしたシェルで、
診断するワークロードまたは JobSet の名前を指定して、
/troubleshootコマンドを実行します。/troubleshoot WORKLOAD_ID
エージェントにプロジェクト ID と実行の期間を指定します。UTC タイムスタンプ形式(
YYYY-MM-DDTHH:MM:SSZ)で正確な期間を指定することも、自然言語で「1 時間前」や「過去 24 時間」などの相対的な期間を指定することもできます。エージェントは期間を使用してログクエリのスコープを設定するため、実行全体がカバーされるようにしてください。
診断ワークフローは、デフォルトで読み取り専用チェックを実行します。エージェントは、ノードの電源の再投入や taint など、クラスタの状態を変更するアクションを実行する前に、明示的な確認をリクエストします。各コマンドは審査と承認を受ける必要があります。これらのアクションは、_wiki/actions/ の定義で requires_approval: true とマークされています。診断が完了すると、エージェントは調査結果を報告します。
不確定な結果を認識する方法など、検出結果を評価する方法については、_wiki/TUTORIAL.md をご覧ください。