GKE für ML Diagnostics konfigurieren

Wenn Sie Google Kubernetes Engine (GKE) für Ihre ML-Arbeitslast verwenden, können Sie die ML Diagnostics-Plattform auf zwei Arten nutzen:

  1. Automatische Arbeitslastüberwachung und Erfassung von Systemmesswerten: Für die automatische Arbeitslastüberwachung und Erfassung von Systemmesswerten müssen Sie Ihren Code nicht instrumentieren oder zusätzliche Konfigurationen vornehmen. Die Arbeitslastüberwachung und die Erfassung von Systemmesswerten sind standardmäßig aktiviert. Sie müssen die Schritte in dieser Anleitung nicht ausführen. Die Arbeitslastüberwachung unterstützt die jobset und job GKE-Jobtypen und ist mit GKE-Versionen ab 1.36.0-gke.4681000 kompatibel.
  2. ML Diagnostics SDK und On-Demand-Profilerstellung: Wenn Sie das ML Diagnostics SDK verwenden und On-Demand-Profilerstellung durchführen möchten, konfigurieren Sie Ihren GKE-Cluster mit dieser Anleitung und installieren Sie die erforderlichen GKE-Artefakte.

Die Konfiguration Ihrer Arbeitslast hängt davon ab, ob Sie On-Demand- Profilerstellung oder programmatische Profilerstellung verwenden.

  • On-Demand-Profilerstellung: Erfordert die Installation von connection-operator.
  • Programmatische Profilerstellung: Erfordert die Installation von injection-webhook, das Labeln der Arbeitslast und die Verwendung des ML Diagnostics SDK.

Wenn Sie eine GKE-Version verwenden, die neuer als 1.35.0-gke.3065000 ist, können Sie den GKE-Cluster mit einem einzigen gcloud CLI-Befehl für ML Diagnostics einrichten. Weitere Informationen finden Sie unter Mit der gcloud CLI einrichten.

Bei GKE-Versionen vor 1.35.0-gke.3065000 müssen Sie den GKE-Cluster manuell konfigurieren, um die Artefakte cert-manager, injection-webhook und connection-operator zu installieren. Weitere Informationen finden Sie unter Manuelle Installation.

Mit der gcloud CLI einrichten

Verwenden Sie für GKE-Versionen nach 1.35.0-gke.3065000 einen der folgenden gcloud CLI-Befehle, um die erforderlichen ML Diagnostics-Komponenten (sowohl connection-operator als auch injection-webhook) in Ihrem GKE-Cluster bereitzustellen.

Für neue GKE-Cluster:

gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics

Für vorhandene GKE-Cluster:

gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics

So deaktivieren Sie ML Diagnostics:

gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics

Sie können die gcloud CLI-Befehle auch über die GKE Google Cloud Console aktivieren:

  • Für neue GKE-Cluster rufen Sie Feature Manager > Managed Machine Learning Diagnostics auf.

    Zu GKE Managed Machine Learning Diagnostics

  • Für vorhandene GKE-Cluster rufen Sie Cluster auf, wählen Sie den Namen Ihres Clusters aus, klicken Sie auf Bearbeiten und bearbeiten Sie Managed Machine Learning Diagnostics unter Features.

Weitere Informationen zu gcloud CLI-Befehlen zum Einrichten eines GKE-Cluster für ML Diagnostics finden Sie im Flag enable-managed-mldiagnostics auf den folgenden API-Referenzseiten:

Manuelle Installation

Bei GKE-Versionen vor 1.35.0-gke.3065000 müssen Sie den GKE-Cluster manuell konfigurieren, um Folgendes zu installieren:

  • cert-manager: Eine Voraussetzung für injection-webhook.
  • injection-webhook: Stellt dem SDK die erforderlichen Metadaten zur Verfügung. Es unterstützt gängige ML-Kubernetes-Arbeitslasten wie JobSet, RayJob und LeaderWorkerSet.
  • connection-operator: Für die On-Demand-Profilerstellung in GKE. Wenn Sie connection-operator zusammen mit injection-webhook im GKE-Cluster bereitstellen, werden Profilerstellungsanfragen an Pods mit Profilerstellungsservern weitergeleitet, wenn Sie die On-Demand-Erfassung auslösen.

Weitere Informationen zum Einrichten für Google Kubernetes Engine finden Sie unter Google Kubernetes Engine Cluster konfigurieren.

cert-manager

cert-manager fungiert als Zertifikatcontroller für Ihren Cluster und sorgt dafür, dass Ihre Anwendungen sicher sind und Ihre Zertifikate nicht versehentlich ablaufen.

Installieren Sie Folgendes mit 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 übergibt Metadaten an das SDK. Verwenden Sie helm upgrade --install, um es zum ersten Mal zu installieren oder eine vorhandene Installation zu aktualisieren.

Installieren Sie Folgendes mit 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 ermöglicht die On-Demand-Profilerstellung in GKE. In der folgenden Tabelle finden Sie die richtige Version von mldiagnostics-connection-operator:

JAX-Version Helm-Diagrammversion
0.8.x 0.24.0
0.9.x+ 0.24.0+

Installieren Sie die erforderliche Version mit Helm.

Für 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}'

Für 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

Arbeitslast labeln

Für die programmatische Profilerstellung müssen Sie die injection-webhook auslösen, um Metadaten in Pods einzufügen. Labeln Sie entweder die Arbeitslast oder ihren Namespace mit managed-mldiagnostics-gke=true, bevor Sie die Arbeitslast bereitstellen:

  • Arbeitslast labeln. Labeln Sie eine Jobset-, LWS- oder RayJob-Arbeitslast. Dadurch wird der Webhook für diese bestimmte Arbeitslast aktiviert. Das folgende Beispiel zeigt eine JobSet-Arbeitslast:

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • Namespace labeln. Dadurch wird der Webhook für alle Jobset-, LWS- und RayJob-Arbeitslasten in diesem Namespace aktiviert.

    kubectl create namespace ai-workloads
    kubectl label namespace ai-workloads managed-mldiagnostics-gke=true