ML 診断用に GKE を構成する
ML ワークロードに Google Kubernetes Engine(GKE)を使用している場合は、このガイドに沿って GKE クラスタを構成し、必要な GKE アーティファクトをインストールします。
ワークロードの構成は、オンデマンド プロファイリングを使用するか、プログラムによるプロファイリングを使用するかによって異なります。
- オンデマンド プロファイリング:
connection-operatorをインストールする必要があります。 - プログラムによるプロファイリング:
injection-webhookをインストールし、ワークロードにラベルを付け、ML Diagnostics SDK を使用する必要があります。
1.35.0-gke.3065000 以降のバージョンの GKE を使用している場合は、単一の gcloud CLI コマンドで ML 診断用の GKE クラスタを設定できます。詳細については、gcloud CLI で設定するをご覧ください。
1.35.0-gke.3065000 より前の GKE バージョンの場合は、GKE クラスタを手動で構成して、cert-manager、injection-webhook、connection-operator アーティファクトをインストールする必要があります。詳細については、
手動インストールをご覧ください。
gcloud CLI で設定する
1.35.0-gke.3065000 以降の GKE バージョンの場合は、次のいずれかの gcloud CLI コマンドを使用して、必要な ML Diagnostics コンポーネント(connection-operator と injection-webhook の両方)を GKE クラスタにデプロイします。
新しい GKE クラスタの場合:
gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics
既存の GKE クラスタの場合:
gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics
ML 診断を無効にするには、次のコマンドを使用します。
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
gcloud CLI コマンドは、 GKE Google Cloud コンソールから有効にすることもできます。
新しい GKE クラスタの場合は、[機能マネージャー] > [マネージド ML 診断] に移動します。
既存の GKE クラスタの場合は、[クラスタ] に移動してクラスタの名前を選択し、[編集] に移動して、[マネージド ML 診断] を [機能] の下で編集します。
ML 診断用に GKE クラスタを設定する gcloud CLI コマンドの詳細については、次の API リファレンス ページの enable-managed-mldiagnostics フラグをご覧ください。
手動インストール
1.35.0-gke.3065000 より前の GKE バージョンの場合は、GKE クラスタを手動で構成して、次のものをインストールする必要があります。
cert-manager:injection-webhookの前提条件。injection-webhook: SDK に必要なメタデータを提供します。JobSet、RayJob、LeaderWorkerSetなどの一般的な ML Kubernetes ワークロードをサポートしています。connection-operator: GKE でのオンデマンド プロファイリング用。connection-operatorをinjection-webhookとともに GKE クラスタにデプロイすると、オンデマンド キャプチャをトリガーしたときに、プロファイリング サーバーが実行されているターゲット Pod へのプロファイリング リクエストが初期化されます。
Google Kubernetes Engine の設定の詳細については、Google Kubernetes Engine クラスタを構成するをご覧ください。
Cert-manager
cert-manager はクラスタの証明書コントローラとして機能し、アプリケーションが安全で、証明書が意図せず期限切れにならないようにします。
Helm を使用して、次のものをインストールします。
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.13.0 \
--set installCRDs=true \
--set global.leaderElection.namespace=cert-manager \
--timeout 10m
Injection-webhook
injection-webhook はメタデータを SDK に渡します。helm upgrade --install を使用して、初めてインストールするか、既存のインストールをアップグレードします。
Helm を使用して、次のものをインストールします。
helm upgrade --install mldiagnostics-injection-webhook \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.25.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-injection-webhook
Connection-operator
connection-operator を使用すると、GKE でオンデマンド プロファイリングが可能になります。正しい mldiagnostics-connection-operator バージョンを見つけるには、次の表を使用します。
| JAX のバージョン | Helm チャートのバージョン |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x+ | 0.24.0+ |
Helm を使用して、必要なバージョンをインストールします。
JAX 0.8.x の場合:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator \
--set 'mldiagnosticsConnectionOperator.controller.args={--metrics-bind-address=:8443,--health-probe-bind-address=:8081,--sidecar-timeout=65m,--disable-hostname-override}'
JAX 0.9.x+ の場合:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator
ワークロードにラベルを付ける
プログラムによるプロファイリングでは、injection-webhook をトリガーして、Pod にメタデータを挿入する必要があります。ワークロードをデプロイする前に、ワークロードまたはその名前空間に managed-mldiagnostics-gke=true のラベルを付けます。
ワークロードにラベルを付ける 。
Jobset、LWS、RayJobワークロードにラベルを付けると、その特定のワークロードの webhook が有効になります。次に、JobSetワークロードの例を示します。apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"名前空間にラベルを付ける 。これにより、その名前空間内のすべての
Jobset、LWS、RayJobワークロードの webhook が有効になります。kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true