GKE oder selbstverwaltetes Kubernetes konfigurieren
Sie können die ML-Diagnoseplattform für ML-Arbeitslasten konfigurieren, die in der Google Kubernetes Engine (GKE) oder in selbstverwaltetem Kubernetes ausgeführt werden.
ML Diagnostics umfasst die folgenden allgemein verfügbaren Funktionen:
- Automatisches Arbeitslastmonitoring und Erfassung von Systemmesswerten: Für das automatische Arbeitslastmonitoring und die Erfassung von Systemmesswerten in GKE müssen Sie Ihren Code nicht instrumentieren oder zusätzliche Konfigurationen vornehmen. Das Arbeitslastmonitoring und die Erfassung von Systemmesswerten sind standardmäßig aktiviert. Sie müssen die Schritte in dieser Anleitung nicht ausführen. Das Monitoring von Arbeitslasten unterstützt die GKE-Jobtypen
JobSetundJobund ist mit GKE-Versionen ab1.36.4-gke.1247000kompatibel. - ML Diagnostics SDK-Messwerte und programmatisches Profiling: Wenn Sie das ML Diagnostics SDK verwenden möchten, um Messwerte zu erfassen und programmatisches Profiling auszuführen, installieren Sie das Helm-Diagramm
injection-webhook, kennzeichnen Sie die Arbeitslast und verwenden Sie das ML Diagnostics SDK. In GKE können Sie einen einzelnen Google Cloud CLI-Befehl verwenden, wenn Sie eine unterstützte GKE-Version verwenden, oder eine manuelle Installation durchführen. In selbstverwaltetem Kubernetes müssen Sie den Webhook manuell installieren. - On-Demand-Profilerstellung: Wenn Sie die On-Demand-Profilerstellung verwenden möchten, installieren Sie das Helm-Diagramm
connection-operator. In GKE können Sie einen einzelnen gcloud CLI-Befehl verwenden, wenn Sie eine unterstützte GKE-Version verwenden, oder eine manuelle Installation durchführen. In selbstverwaltetem Kubernetes müssen Sie den Operator manuell installieren.
ML Diagnostics enthält auch die folgende Funktion in der Vorabversion:
- Diagon-DaemonSet-Profiling: Wenn Sie On-Demand-Profiling, kontinuierliches Profiling und automatische Profilerfassung aus dem Arbeitslastmonitoring für Ihre GKE-Arbeitslast verwenden möchten, stellen Sie das Diagon-DaemonSet auf Ihren GKE-TPU-Clustern bereit. Dieses DaemonSet funktioniert auch auf selbstverwalteten Kubernetes-Clustern, auf denen nur On-Demand- und kontinuierliches Profiling unterstützt werden. Das Monitoring von Arbeitslasten wird in selbstverwaltetem Kubernetes nicht unterstützt.
Diagon-DaemonSet bereitstellen
Wenn Sie containerisierte Arbeitslasten in GKE oder selbstverwalteten Kubernetes-Clustern ausführen, können Sie den Diagon-Daemon als DaemonSet bereitstellen. Dadurch wird sichergestellt, dass eine Kopie des Daemons auf allen oder ausgewählten GPU- und TPU-Knoten im Cluster ausgeführt wird.
Container-Image-Repository
Der Diagon-Daemon wird als Docker-Image veröffentlicht und ist unter dem folgenden Artifact Registry-Pfad verfügbar:
us-central1-docker.pkg.dev/hypercomputediagon-release/daemon-docker/mldiagnostics-daemon:latest
Deployment
Führen Sie die folgenden Schritte aus, um das Diagon-DaemonSet in Ihrem Cluster bereitzustellen:
DaemonSet-Konfiguration erstellen: Speichern Sie die folgende YAML-Konfiguration als
diagon-daemonset.yaml. Bei dieser Konfiguration wird der Diagon-Daemon im privilegierten Modus ausgeführt, damit er Diagnose- und Profiling-Messwerte von den zugrunde liegenden Host-GPU- und TPU-Geräten erfassen kann.# diagon-daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: diagon-daemon namespace: diagon labels: app.kubernetes.io/name: diagon-daemon app.kubernetes.io/part-of: diagon spec: selector: matchLabels: name: diagon-daemon template: metadata: labels: name: diagon-daemon spec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet serviceAccountName: SERVICE_ACCOUNT_NAME terminationGracePeriodSeconds: 30 tolerations: - operator: Exists effect: NoSchedule - operator: Exists effect: NoExecute containers: - name: diagon-daemon image: us-central1-docker.pkg.dev/hypercomputediagon-release/daemon-docker/mldiagnostics-daemon:latest imagePullPolicy: Always command: - /mldiagnostics_extension_files/bin/mldiagnostics_extension - -standalone=true - -channel=hypercomputecluster.googleapis.com/diagnostics - -alsologtostderr=true securityContext: privileged: true resources: requests: cpu: 10m memory: 32Mi limits: memory: 256Mi # No CPU limit.DaemonSet im Cluster bereitstellen: Führen Sie den folgenden Befehl aus, um den Daemon in Ihrem aktiven Kubernetes-Kontext bereitzustellen.
kubectl apply -f diagon-daemonset.yamlBereitstellungs- und Daemon-Zustand prüfen: Prüfen Sie auf Ihrer Administratorworkstation oder in Cloud Shell, ob alle Daemon-Pods auf Worker-Knoten geplant sind und den Status
Runningerreicht haben:kubectl get pods -n diagon -l name=diagon-daemon -o widePrüfen Sie die Streaminglogs, um die Verbindung zur Steuerungsebene von Google Cloud ML Diagnostics und aktive Heartbeats zu bestätigen:
kubectl logs -n diagon -l name=diagon-daemon --tail=50Die Ausgabe enthält die folgenden erwarteten Logsignaturen:
Stream established. Received successful DaemonRegistrationResponse from backend Sending DaemonHeartbeatRequestDaemonSet-Image aktualisieren: Wenn Sie auf eine neuere Version des Daemons aktualisieren oder ein Rollback durchführen möchten, aktualisieren Sie das Image-Tag in Ihrer YAML-Datei oder führen Sie den folgenden Befehl direkt aus.
kubectl set image daemonset/diagon-daemon diagon-daemon=us-docker.pkg.dev/hypercomputediagon-release/daemon/diagon-daemon:v2.1.0 --namespace=kube-systemPrüfen Sie den Roll-out-Status, um den Fortschritt der Bereitstellung oder Aktualisierung zu verfolgen:
kubectl rollout status daemonset/diagon-daemon --namespace=kube-system
Operator und Webhook einrichten
Für die Einrichtung des Operators und des Webhooks haben Sie die folgenden Optionen:
Wenn Sie eine GKE-Version verwenden, die höher als
1.35.0-gke.3065000ist, können Sie Ihren GKE-Cluster für ML Diagnostics mit einem einzigen gcloud CLI-Befehl, über die Google Cloud Console oder mit Terraform einrichten.Bei GKE-Versionen vor
1.35.0-gke.3065000und selbstverwaltetem Kubernetes müssen Sie den Cluster manuell konfigurieren, um die Artefaktecert-manager,injection-webhookundconnection-operatorzu installieren. Weitere Informationen finden Sie unter Manuelle Installation.
Stellen Sie den Operator und den Webhook zusammen mit dem Diagon-DaemonSet in Ihrem GKE-Cluster bereit. Wenn Sie den Operator und den Webhook bereits bereitgestellt haben, müssen Sie sie nicht löschen. Stattdessen dient der Operator als Fallback-Pfad für die On-Demand-Profilerfassung und der Webhook ist weiterhin erforderlich, um das SDK zu verwenden.
Wenn Sie anstelle von GKE eine selbstverwaltete Kubernetes-Umgebung verwenden, installieren Sie den Webhook für das SDK und stellen Sie das Diagon-DaemonSet bereit. In einer selbstverwalteten Kubernetes-Umgebung funktioniert das Monitoring von Arbeitslasten nicht. Es werden nur SDK-Messwerte, programmatisches Profiling, On-Demand-Profiling und kontinuierliches Profiling unterstützt.
Verwenden Sie für GKE-Versionen nach 1.35.0-gke.3065000 eine der folgenden Methoden, um die erforderlichen ML-Diagnosekomponenten (connection-operator und injection-webhook) in Ihrem GKE-Cluster bereitzustellen.
gcloud
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-Diagnose:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
Weitere Informationen zu gcloud CLI-Befehlen zum Einrichten eines GKE-Cluster für ML-Diagnose finden Sie unter dem Flag enable-managed-mldiagnostics auf den folgenden API-Referenzseiten:
Console
Rufen Sie für neue GKE-Cluster Feature Manager > Verwaltete Diagnose für maschinelles Lernen auf.
Rufen Sie für vorhandene GKE-Cluster Cluster auf, wählen Sie den Namen Ihres Clusters aus, rufen Sie Bearbeiten auf und bearbeiten Sie Verwaltete Machine Learning-Diagnose unter Features.
Terraform
Wenn Sie Terraform für die Bereitstellung Ihrer GKE-Infrastruktur verwenden, können Sie den Anbieter terraform-provider-google-beta (Version v7.28.0 oder höher) oder das Modul terraform-google-modules/kubernetes-engine/google (Version v45.0.0 oder höher) verwenden.
Google Cloud -Terraform-Anbieter verwenden
Wenn Sie die verwaltete ML-Diagnose für einen neuen Cluster mit der Ressource google_container_cluster aktivieren möchten, fügen Sie den Block managed_machine_learning_diagnostics_config mit enabled = true hinzu und verwenden Sie den Anbieter google-beta (Version v7.28.0 oder höher):
terraform {
required_providers {
google-beta = {
source = "hashicorp/google-beta"
version = ">= 7.28.0"
}
}
}
resource "google_container_cluster" "primary" {
provider = google-beta
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other cluster configuration ...
managed_machine_learning_diagnostics_config {
enabled = true
}
}
Wenn Sie die verwaltete ML-Diagnose auf einem Cluster mit der Terraform-Ressource deaktivieren möchten, legen Sie enabled = false im Block managed_machine_learning_diagnostics_config fest:
resource "google_container_cluster" "primary" {
provider = google-beta
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other cluster configuration ...
managed_machine_learning_diagnostics_config {
enabled = false
}
}
GKE-Terraform-Modul verwenden
Wenn Sie Managed ML Diagnostics in einem Cluster mit dem Modul terraform-google-modules/kubernetes-engine/google (z. B. dem Submodul beta-public-cluster) aktivieren möchten, legen Sie enable_managed_machine_learning_diagnostics = true fest:
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
version = ">= 45.0"
project_id = "PROJECT_ID"
name = "CLUSTER_NAME"
region = "LOCATION"
# ... other cluster configuration ...
enable_managed_machine_learning_diagnostics = true
}
Wenn Sie Managed ML Diagnostics auf einem Cluster mit dem Terraform-Modul deaktivieren möchten, legen Sie enable_managed_machine_learning_diagnostics = false fest:
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
version = ">= 45.0"
# ... other cluster configuration ...
enable_managed_machine_learning_diagnostics = false
}
Wenden Sie die Änderungen an, nachdem Sie die Konfiguration aktualisiert haben:
terraform apply
Weitere Informationen zur Verwendung von Terraform mit GKE finden Sie unter Terraform-Unterstützung für GKE.
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ürinjection-webhook.injection-webhook: Stellt dem SDK die erforderlichen Metadaten zur Verfügung. Es unterstützt gängige ML-Kubernetes-Arbeitslasten wieJobSet,RayJobundLeaderWorkerSet.connection-operator: Für On-Demand-Profiling in GKE. Wenn Sieconnection-operatorzusammen mitinjection-webhookim GKE-Cluster bereitstellen, werden Profilerstellungsanfragen an Ziel-Pods mit ausgeführten Profilerstellungsservern initialisiert, wenn Sie die On-Demand-Erfassung auslösen.
Weitere Informationen zum Einrichten eines GKE-Clusters finden Sie unter GKE-Cluster konfigurieren.
Cert-manager
Das cert-manager-Add-on fungiert als Zertifikatscontroller für Ihren Cluster und sorgt dafür, dass Ihre Anwendungen sicher sind und Ihre Zertifikate nicht unbeabsichtigt 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
Das Helm-Diagramm injection-webhook übergibt Metadaten an das SDK. Verwenden Sie helm
upgrade --install, um eine Erstinstallation durchzuführen oder eine vorhandene Installation zu aktualisieren.
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
Das Helm-Diagramm connection-operator ermöglicht On-Demand-Profiling in GKE. Suchen Sie in der folgenden Tabelle nach der richtigen mldiagnostics-connection-operator-Version:
| JAX-Version | Helm-Diagrammversion |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x+ | 0.24.0+ |
Verwenden Sie Helm, um die erforderliche Version zu installieren.
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 mit Label versehen
Für die programmatische Profilerstellung müssen Sie den injection-webhook auslösen, um Metadaten in Pods einzufügen. Versehen Sie entweder die Arbeitslast oder ihren Namespace mit dem Label managed-mldiagnostics-gke=true, bevor Sie die Arbeitslast bereitstellen:
Arbeitslast mit Label versehen: Versehen Sie eine
JobSet-,LeaderWorkerSet- oderRayJob-Arbeitslast mit einem Label, um den Webhook für diese bestimmte Arbeitslast zu aktivieren. Im Folgenden finden Sie ein Beispiel für eineJobSet-Arbeitslast:apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"Namespace mit Label versehen: Dadurch wird der Webhook für alle
JobSet-,LeaderWorkerSet- undRayJob-Arbeitslasten in diesem Namespace aktiviert.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true