このドキュメントでは、Google Kubernetes Engine(GKE)で KubeRay を使用して Ray ダッシュボードで TPU 指標を表示する方法について説明します。Ray GKE アドオンを使用する GKE クラスタでは、TPU 指標が Cloud Monitoring で使用可能です。
始める前に
作業を始める前に、次のタスクが完了していることを確認してください。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。gcloud CLI をインストール済みの場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。
次の条件を満たす GKE クラスタがあります。
- TPU を使用するように構成されたノードプール。
- このクラスタで Ray on GKE アドオンを有効にしないでください。
- Ray と TPU を使用する GKE のサービング ワークロードまたはトレーニング ワークロード。
これらの条件でクラスタを作成する必要がある場合は、GKE で JAX、Ray Train、TPU Trillium を使用して LLM をトレーニングするや KubeRay を使用して、GKE 上で TPU を使用する LLM をサービングするなどの TPU ワークロードの例を選択し、設定手順に沿ってクラスタを構成します。
環境を準備する
このチュートリアルでは、Google Cloudでホストされているリソースを管理するためのシェル環境である Cloud Shell を使用します。
Cloud Shell には、Google Cloud CLI と kubectl コマンドライン ツールがプリインストールされています。gcloud CLI は Google Cloudへの主要なコマンドライン インターフェースを提供し、kubectl は Kubernetes クラスタにコマンドを実行するためのコマンドライン インターフェースを提供します。
Cloud Shell を起動します。
Google Cloud コンソールに移動します。
コンソールの右上隅にある [Cloud Shell をアクティブにする] ボタン
をクリックします。
コンソールの下部にあるフレーム内で Cloud Shell セッションが開きます。このシェルで gcloud コマンドと kubectl コマンドを実行します。コマンドを実行する前に、Google Cloud CLI で次のコマンドを使用してデフォルト プロジェクトを設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
Ray ダッシュボードで TPU 指標を表示する
Ray ダッシュボードで TPU 指標を表示する手順は次のとおりです。
シェルで、Kubernetes Prometheus Stack をインストールして Ray ダッシュボードの指標を有効にします。
./install/prometheus/install.sh --auto-load-dashboard true kubectl get all -n prometheus-system出力は次のようになります。
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/prometheus-grafana 1/1 1 1 46s deployment.apps/prometheus-kube-prometheus-operator 1/1 1 1 46s deployment.apps/prometheus-kube-state-metrics 1/1 1 1 46sこのインストールでは、Helm チャートを使用して、カスタム リソース定義(CRD)、Pod モニター、Ray Pod のサービス モニターをクラスタに追加します。
指標スクレイピングを有効にして、KubeRay オペレーター v1.5.0 以降をインストールします。KubeRay で提供されるデフォルトのダッシュボードを使用して Grafana で TPU 指標を表示するには、KubeRay v1.5.0 以降をインストールする必要があります。
helm repo add kuberay https://ray-project.github.io/kuberay-helm/ helm install kuberay-operator kuberay/kuberay-operator --version 1.5.0-rc.0 \ --set metrics.serviceMonitor.enabled=true \ --set metrics.serviceMonitor.selector.release=prometheusKubeRay TPU Webhook をインストールします。この Webhook は、Ray が
tpu-device-pluginDaemonSet から TPU 指標をポーリングするために使用する環境変数TPU_DEVICE_PLUGIN_HOST_IPを設定します。helm install kuberay-tpu-webhook \ oci://us-docker.pkg.dev/ai-on-gke/kuberay-tpu-webhook-helm/kuberay-tpu-webhook \ --set tpuWebhook.image.tag=v1.2.6-gke.0指標をロギングするようにワークロードを準備するには、RayCluster 仕様内で次のポートと環境変数を設定します。
headGroupSpec: ... ports: ... - containerPort: 44217 name: as-metrics - containerPort: 44227 name: dash-metrics env: - name: RAY_GRAFANA_IFRAME_HOST value: http://127.0.0.1:3000 - name: RAY_GRAFANA_HOST value: http://prometheus-grafana.prometheus-system.svc:80 - name: RAY_PROMETHEUS_HOST value: http://prometheus-kube-prometheus-prometheus.prometheus-system.svc:9090Ray を使用して TPU でワークロードを実行します。GKE で JAX、Ray Train、TPU Trillium を使用して LLM をトレーニングするや、KubeRay を使用して、GKE 上で TPU を使用する LLM をサービングするなどの TPU ワークロードの例を使用できます。
Ray ダッシュボードまたは Grafana で指標を表示する
RayCluster に接続するには、Ray ヘッドサービスをポート転送します。
kubectl port-forward service/RAY_CLUSTER_NAME-head-svc 8265:8265RAY_CLUSTER_NAMEは、RayCluster の名前に置き換えます。ワークロードが GKE で JAX、Ray Train、TPU Trillium を使用して LLM をトレーニングするチュートリアルのものである場合、この値はmaxtext-tpu-clusterです。Ray ダッシュボードを表示するには、ローカルマシンの
http://localhost:8265/に移動します。Grafana ウェブ UI をポート転送します。Ray ダッシュボードに埋め込まれた Grafana ダッシュボードに表示される TPU 指標を表示するには、Grafana をポート転送する必要があります。
kubectl port-forward -n prometheus-system service/prometheus-grafana 3000:http-webRay ダッシュボードで、[Metrics] タブを開き、[TPU Utilization by Node] タブを見つけます。TPU の実行中、Tensor Core 使用率、HBM 使用率、TPU デューティ サイクル、メモリ使用量に関するノードごとの指標がダッシュボードにストリーミングされます。これらの指標を Grafana で表示するには、Grafana の [View] タブに移動します。

libtpuログを表示するには、Ray ダッシュボードの [Logs] タブに移動して、TPU ノードを選択します。Libtpu ログは/tpu_logsディレクトリに書き込まれます。
TPU ロギングの構成の詳細については、TPU VM ログのデバッグをご覧ください。