ML Diagnostics プラットフォーム

Google Cloud ML Diagnostics は、 Google Cloudで AI / ML ワークロードを最適化、モニタリング、診断するためのエンドツーエンドのマネージド プラットフォームです。ML 診断を使用してワークロードをモニタリングし、すべてのワークロード指標、構成、プロファイルを 1 つのプラットフォーム内で収集して可視化します。ML 診断は、トレーニング、トレーニング後の強化学習(RL)、推論ワークロードに適用でき、Cloud TPU のすべてのオーケストレーターと互換性があります。GKE のサポートは一般提供されています。Cluster Director、Kubernetes や Slurm などのカスタム オーケストレーター、Compute Engine を介したマネージド Slurm のサポートはプレビュー版です。

ML 診断には、次の一般提供機能が含まれています。

  • ワークロードのモニタリング: GKE TPU で実行されている AI / ML ワークロードを自動的にモニタリングして診断します。ML Diagnostics Workload Monitoring は、GKE ジョブごとに ML 実行を自動的に作成し、ワークロード全体の TPU デューティ サイクルをモニタリングします。また、ワークロードに影響するイベントを検出し、インフラストラクチャ、オーケストレーター、フレームワークなどのワークロードのさまざまなレイヤを分析して、イベントの潜在的な原因を特定します。
  • 機械学習の実行: ML Diagnostics を使用して、Google Cloud CLI を介して機械学習の実行を作成して登録するか、ML Diagnostics SDK をワークロードに統合します。ワークロード モニタリングを使用して実行を自動的に作成して登録し、機械学習の実行でマネージド XProf インスタンスをデプロイして、ワークロードの指標、構成、プロファイル セッションを収集して管理できます。
  • gcloud CLI のエクスペリエンス: gcloud CLI を介して ML Diagnostics API を使用して、実行の登録と管理、マネージド XProf リソースのデプロイ、ストレージ バケット内のプロファイル セッションの可視化、CLI からのプロファイル キャプチャのトリガーを行います。また、ワークロード モニタリングによって検出されたすべてのイベントを一覧表示し、CLI または API を使用してこれらのイベントのアナライザの詳細を取得することもできます。
  • Python SDK: ML ワークロードと統合されたオープンソースの ML Diagnostics SDK を使用して、ML ワークロードの診断を包括的に行います。ワークロードをモニタリングし、 Google Cloudでワークロードの指標、構成、プロファイルを収集して管理します。
  • マネージド プロファイリング: ML Diagnostics は、スケーラブルなバックエンドを備えた XProf のマネージド インスタンスを関連するアカウントにデプロイし、大規模なプロファイルの高速読み込みを可能にします。複数のユーザーがプロファイルに同時にアクセスでき、マルチホスト プロファイリングやオンデマンド プロファイリングなどの組み込み機能が用意されています。
  • ワークロード指標: モデルの品質、モデルのパフォーマンス、システム指標などのワークロード指標を追跡します。ワークロード モニタリングを使用すると、SDK を統合することなく、ワークロードに関連付けられたシステム指標を取得できます。
  • ワークロード構成管理: ソフトウェア構成、システム構成、ユーザー定義の構成など、ワークロード構成を追跡します。
  • Cluster Director と GKE での可視化: Google Cloud コンソールの Cluster Director と Google Kubernetes Engine で指標、構成、プロファイルを可視化します。
  • リンクの共有: 機械学習の実行、ワークロードのモニタリング、指標、プロファイルに関する情報を含む共有可能なリンクを使用してコラボレーションします。

ML 診断には、次のプレビュー機能も含まれています。

  • ワークロードのモニタリング: パフォーマンス低下アナライザで不良状態が示された場合に、XProf プロファイルを自動的にキャプチャして、さらに診断します。
  • Python SDK: vLLM、Tunix、TorchTPU ワークロードのサポート。
  • マネージド プロファイリング: スナップショット モードでの継続的なプロファイリングと、エージェントによるプロファイル分析。

ワークロード フレームワークとオーケストレーターの種類

ML Diagnostics は JAX をサポートしており、GKE で一般提供されています。TorchTPU、JAX 上の vLLM、TorchTPU 上の vLLM、Tunix などのワークロード フレームワークは、次のオーケストレーターでプレビュー版として利用できます。

  • GKE
  • セルフマネージド Kubernetes
  • Cluster Director で管理される Slurm
  • セルフマネージド Slurm
  • Compute Engine

次の表に、オーケストレーター タイプ別の JAX ワークロードでサポートされている機能と必要なコンポーネントをまとめます。

オーケストレーター タイプ サポートされている機能と必要なコンポーネント
GKE
  • GKE Job ワークロードと JobSet ワークロードのワークロード モニタリング
  • SDK メトリクスとプログラムによるプロファイリング(GKE ウェブフック)
  • オンデマンド プロファイリング(GKE オペレーター)
  • オンデマンド プロファイリング、継続的なプロファイリング、ワークロード モニタリング(Diagon DaemonSet)からの自動プロファイル キャプチャ
セルフマネージド Kubernetes
  • SDK 指標とプログラムによるプロファイリング(Kubernetes Webhook)
  • オンデマンド プロファイリング(Kubernetes オペレーター)
  • オンデマンドかつ継続的なプロファイリング(Diagon DaemonSet)
Cluster Director マネージド Slurm、セルフマネージド Slurm、Compute Engine
  • SDK の指標とプログラムによるプロファイリング
  • オンデマンドかつ継続的なプロファイリング(Diagon DaemonSet)

ユーザーの経路

すべての GKE ジョブのワークロード モニタリングで ML Diagnostics プラットフォームを自動的に使用することも、SDK をワークロードに統合して ML ワークロードの診断を完全に実施することもできます。ML 診断プラットフォームは、 Google Cloud コンソールまたは CLI を使用して操作できます。ワークロード モニタリングは、TPU 上の GKE でデプロイされたすべてのワークロードで自動的に利用できます。

CLI では、ML Diagnostics gcloud CLI を使用して機械学習の実行を作成または変更し、マネージド XProf リソースをデプロイできます。ML Diagnostics SDK を使用する場合は、SDK を ML ワークロードに統合して、ワークロードの指標と構成を収集して管理し、マネージド XProf リソースをデプロイする必要があります。

まず、次のいずれかのガイドをご覧ください。

前提条件

ML 診断を使用する前に、Cluster Director API を有効にして、必要な IAM 権限を追加します。GKE を使用している場合、ワークロード モニタリングはすでに有効になっています。ただし、ML Diagnostics SDK とオンデマンド プロファイリングには、追加の GKE アーティファクトと GKE クラスタの構成が必要です。詳細については、GKE を設定するをご覧ください。

Cluster Director API を有効にする

ML 診断プロダクトを使用するために、クラスタのデプロイと管理に Cluster Director を使用する必要はありません。ML Diagnostics は、GKE、Cluster Director、またはカスタム オーケストレーターによって管理されるクラスタで動作します。ML 診断は Cluster Director ファミリーの API の一部ですが、ユーザーが Cluster Director プロダクト自体を使用することに依存しません。

Cluster Director API を有効にする方法については、 Google Cloud プロジェクトで API を有効にするをご覧ください。

IAM の権限

ワークロードで使用される Google Cloud サービス アカウントには、プロジェクトに割り当てられた次の IAM ロールが必要です。

  • roles/hypercomputecluster.editor: MLRun リソースの作成と管理、ユーザー インターフェースの表示に対する完全アクセス権。
  • roles/logging.logWriter: ログと指標を Cloud Logging に書き込みます。
  • roles/storage.objectUser: machinelearning_run で指定された Cloud Storage バケットにプロファイルを保存します。

ML 診断に必要な API のサブセットをユーザーに割り当てるカスタムロールを作成することもできます。ユーザーはクラスタの管理に Cluster Director を使用する必要がないため、次の権限のみを割り当てる必要があります。

  • hypercomputecluster.locations.get
  • hypercomputecluster.locations.list
  • hypercomputecluster.clusters.list
  • hypercomputecluster.nodes.list
  • hypercomputecluster.machineLearningRuns.create
  • hypercomputecluster.machineLearningRuns.delete
  • hypercomputecluster.machineLearningRuns.get
  • hypercomputecluster.machineLearningRuns.list
  • hypercomputecluster.machineLearningRuns.update
  • hypercomputecluster.operations.cancel
  • hypercomputecluster.operations.delete
  • hypercomputecluster.operations.get
  • hypercomputecluster.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Google Kubernetes Engine のワークロードの場合は、Workload Identity 連携を使用して、Kubernetes サービス アカウントを、必要なロールが付与されている Google Cloud サービス アカウントに関連付けます。ホスト ネットワーク(hostNetwork: true)で実行されている Pod は、Workload Identity Federation for GKE を使用しません。このような場合は、Workload Identity Federation for GKE に代わる方法をご覧ください。

Cloud Logging でオブザーバビリティ分析を有効にする

モデル指標とパフォーマンス指標の時系列グラフは、プロジェクトの _Default ログバケットに対してオブザーバビリティ分析クエリを使用してデータをレンダリングします。そのバケットでオブザーバビリティ分析が有効になっていない場合、これらのグラフは失敗し、ウィジェットに Something went wrong in the backend または 0 time series メッセージが表示されます。ただし、指標データは Cloud Logging に存在し、プロファイルとシステム指標は想定どおりにレンダリングされます。

オブザーバビリティ分析は、プロジェクトごとに 1 回有効にします。このアップグレードは非破壊的で、追加費用は発生しません。また、無効にすることはできません。既存のログに対しては、引き続きクエリを実行できます。

gcloud logging buckets update _Default --location=global \
  --enable-analytics --project=PROJECT_ID

このコマンドには logging.buckets.update 権限が必要です。この権限は roles/logging.configWriter などのロールに含まれています。

料金

Cloud Logging を介した指標の保存と、Cloud Storage を介したプロファイルの保存に対して課金されます。ML 診断プラットフォームを使用する場合、これらのサービスに対して追加の課金を有効にする必要はありません。ML Diagnostics プラットフォームによってデプロイされたマネージド XProf リソースには料金はかかりません。