Configura GKE o Kubernetes autogestito
Puoi configurare la piattaforma di diagnostica ML per i workload ML in esecuzione su Google Kubernetes Engine (GKE) o Kubernetes autogestito.
ML Diagnostics include le seguenti funzionalità in disponibilità generale:
- Monitoraggio automatico dei workload e raccolta automatica delle metriche di sistema: per il monitoraggio automatico dei workload e la raccolta automatica delle metriche di sistema su GKE, non è necessario instrumentare il codice o eseguire alcuna configurazione aggiuntiva. Il monitoraggio dei workload e la raccolta delle metriche di sistema sono abilitati per impostazione predefinita e non è necessario eseguire i passaggi descritti in questa guida. Il monitoraggio dei workload supporta i tipi di job GKE
JobSeteJobed è compatibile con GKE versione1.36.4-gke.1247000e successive. - Metriche dell'SDK ML Diagnostics e profilazione programmatica: se vuoi utilizzare l'SDK ML Diagnostics per raccogliere metriche ed eseguire la profilazione programmatica, installa il grafico Helm
injection-webhook, etichetta il workload e utilizza l'SDK ML Diagnostics. Su GKE, puoi utilizzare un singolo comando di Google Cloud CLI se utilizzi una versione di GKE supportata o eseguire un'installazione manuale. Su Kubernetes autogestito, devi installare il webhook manualmente. - Profilazione on demand: se vuoi utilizzare la profilazione on demand, installa il grafico Helm
connection-operator. Su GKE, puoi utilizzare un singolo comando gcloud CLI se utilizzi una versione di GKE supportata o eseguire un'installazione manuale. Su Kubernetes autogestito, devi installare l'operatore manualmente.
ML Diagnostics include anche la seguente funzionalità in anteprima:
- Profilazione DaemonSet Diagon: se vuoi utilizzare la profilazione on demand, la profilazione continua e l'acquisizione automatica dei profili dal monitoraggio dei workload sul tuo workload GKE, esegui il deployment del DaemonSet Diagon sui tuoi cluster GKE TPU. Questo DaemonSet funziona anche su cluster Kubernetes autogestiti, dove sono supportate solo la profilazione on demand e continua. Il monitoraggio dei workload non è supportato su Kubernetes autogestito.
Esegui il deployment del DaemonSet Diagon
Se esegui workload containerizzati su GKE o su cluster Kubernetes autogestiti, puoi eseguire il deployment del daemon Diagon come DaemonSet. In questo modo, una copia del daemon viene eseguita su tutti i nodi GPU e TPU o su quelli selezionati all'interno del cluster.
Repository di immagini container
Il daemon Diagon viene pubblicato come immagine Docker ed è disponibile nel seguente percorso di Artifact Registry:
us-central1-docker.pkg.dev/hypercomputediagon-release/daemon-docker/mldiagnostics-daemon:latest
Passi per il deployment
Per eseguire il deployment del DaemonSet Diagon nel tuo cluster, completa i seguenti passaggi:
Crea la configurazione del DaemonSet: salva la seguente configurazione YAML come
diagon-daemonset.yaml. Questa configurazione esegue il daemon Diagon in modalità con privilegi in modo che possa raccogliere metriche di diagnostica e profilazione dai dispositivi GPU e TPU host sottostanti.# 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.Esegui il deployment del DaemonSet nel cluster: esegui questo comando per eseguire il deployment del daemon nel contesto Kubernetes attivo.
kubectl apply -f diagon-daemonset.yamlVerifica l'integrità del deployment e del daemon: sulla tua workstation di amministrazione o in Cloud Shell, verifica che tutti i pod daemon siano pianificati tra i nodi worker e abbiano raggiunto lo stato
Running:kubectl get pods -n diagon -l name=diagon-daemon -o wideEsamina i log di streaming per verificare la connettività al control plane di Google Cloud ML Diagnostics e gli heartbeat attivi:
kubectl logs -n diagon -l name=diagon-daemon --tail=50L'output include le seguenti firme di log previste:
Stream established. Received successful DaemonRegistrationResponse from backend Sending DaemonHeartbeatRequestAggiorna l'immagine DaemonSet: per eseguire l'aggiornamento a una versione più recente del daemon o eseguire il rollback, aggiorna il tag dell'immagine nel file YAML o esegui direttamente il comando seguente.
kubectl set image daemonset/diagon-daemon diagon-daemon=us-docker.pkg.dev/hypercomputediagon-release/daemon/diagon-daemon:v2.1.0 --namespace=kube-systemPer controllare l'avanzamento del deployment o dell'aggiornamento, verifica lo stato dell'implementazione:
kubectl rollout status daemonset/diagon-daemon --namespace=kube-system
Configura l'operatore e il webhook
Per la configurazione dell'operatore e del webhook, hai le seguenti opzioni:
Se utilizzi una versione di GKE successiva a
1.35.0-gke.3065000, puoi configurare il cluster GKE per ML Diagnostics con un singolo comando gcloud CLI, tramite la console Google Cloud o utilizzando Terraform.Per le versioni di GKE precedenti alla
1.35.0-gke.3065000e per Kubernetes autogestito, devi configurare manualmente il cluster per installare gli artefatticert-manager,injection-webhookeconnection-operator. Per saperne di più, consulta Installazione manuale.
Esegui il deployment dell'operatore e del webhook sul tuo cluster GKE, insieme al DaemonSet Diagon. Se hai già eseguito il deployment dell'operatore e del webhook, non è necessario eliminarli. Invece, l'operatore funge da percorso di riserva per l'acquisizione del profilo on demand e il webhook è comunque necessario per utilizzare l'SDK.
Se utilizzi un ambiente Kubernetes autogestito anziché GKE, installa il webhook per l'SDK ed esegui il deployment del DaemonSet Diagon. In un ambiente Kubernetes autogestito, il monitoraggio dei workload non funziona; sono supportate solo le metriche dell'SDK, la profilazione programmatica, la profilazione on demand e la profilazione continua.
Per le versioni di GKE successive alla 1.35.0-gke.3065000, utilizza uno dei seguenti metodi per eseguire il deployment dei componenti di diagnostica ML richiesti (sia connection-operator che injection-webhook) nel tuo cluster GKE.
gcloud
Per i nuovi cluster GKE:
gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics
Per i cluster GKE esistenti:
gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics
Per disattivare ML Diagnostics, utilizza quanto segue:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
Per saperne di più sui comandi gcloud CLI per configurare un cluster GKE per la diagnostica ML, consulta il flag enable-managed-mldiagnostics nelle seguenti pagine di riferimento API:
Console
Per i nuovi cluster GKE, vai a Gestore funzionalità > Diagnostica di machine learning gestito.
Per i cluster GKE esistenti, vai a Cluster, seleziona il nome del tuo cluster, vai a Modifica e modifica Diagnostica di machine learning gestito in Funzionalità.
Terraform
Se utilizzi Terraform per eseguire il provisioning dell'infrastruttura GKE,
puoi utilizzare il provider terraform-provider-google-beta (versione v7.28.0
o successive) o il modulo terraform-google-modules/kubernetes-engine/google
(versione v45.0.0 o successive).
Utilizzo del provider Terraform Google Cloud
Per abilitare la diagnostica ML gestita su un nuovo cluster utilizzando la risorsa google_container_cluster, aggiungi il blocco managed_machine_learning_diagnostics_config con enabled = true utilizzando il provider google-beta (versione v7.28.0 o successive):
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
}
}
Per disattivare Managed ML Diagnostics su un cluster utilizzando la risorsa Terraform,
imposta enabled = false nel blocco
managed_machine_learning_diagnostics_config:
resource "google_container_cluster" "primary" {
provider = google-beta
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other cluster configuration ...
managed_machine_learning_diagnostics_config {
enabled = false
}
}
Utilizzo del modulo Terraform di GKE
Per attivare Managed ML Diagnostics su un cluster utilizzando il modulo terraform-google-modules/kubernetes-engine/google (ad esempio il sottomodulo beta-public-cluster), imposta enable_managed_machine_learning_diagnostics = true:
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
}
Per disattivare Managed ML Diagnostics su un cluster utilizzando il modulo Terraform, imposta enable_managed_machine_learning_diagnostics = false:
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
}
Dopo aver aggiornato la configurazione, applica le modifiche:
terraform apply
Per scoprire di più sull'utilizzo di Terraform con GKE, consulta Supporto di Terraform per GKE.
Installazione manuale
Per le versioni di GKE precedenti alla 1.35.0-gke.3065000, devi configurare manualmente il cluster GKE per installare quanto segue:
cert-manager: un prerequisito perinjection-webhook.injection-webhook: fornisce all'SDK i metadati richiesti. Supporta i workload Kubernetes ML comuni, comeJobSet,RayJobeLeaderWorkerSet.connection-operator: per la profilazione on demand su GKE. Il deployment diconnection-operatorinsieme ainjection-webhooknel cluster GKE inizializza le richieste di profilazione ai pod di destinazione con i server di profilazione in esecuzione quando attivi l'acquisizione on demand.
Per saperne di più sulla configurazione di un cluster GKE, consulta Configura il cluster GKE.
Cert-manager
Il componente aggiuntivo cert-manager funge da controller dei certificati per il tuo cluster, garantendo che le tue applicazioni siano sicure e che i tuoi certificati non scadano mai involontariamente.
Utilizza Helm per installare quanto segue:
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
Webhook di inserimento
Il grafico Helm injection-webhook trasmette i metadati all'SDK. Utilizza helm
upgrade --install per eseguire la prima installazione o l'upgrade di un'installazione esistente.
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
Operatore di connessione
Il grafico Helm connection-operator consente la profilazione on demand su GKE. Utilizza la tabella seguente per trovare la versione corretta di mldiagnostics-connection-operator:
| Versione JAX | Versione del grafico Helm |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x+ | 0.24.0+ |
Utilizza Helm per installare la versione richiesta.
Per 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}'
Per 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
Etichetta il workload
Per la profilazione programmatica, devi attivare injection-webhook per inserire i metadati nei pod. Etichetta il workload o il relativo spazio dei nomi con managed-mldiagnostics-gke=true prima di eseguire il deployment del workload:
Etichetta un workload: etichetta un workload
JobSet,LeaderWorkerSetoRayJob, che attiva il webhook per quel workload specifico. Di seguito è riportato un esempio per un workloadJobSet:apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"Etichetta uno spazio dei nomi: in questo modo, il webhook viene abilitato per tutti i workload
JobSet,LeaderWorkerSeteRayJoball'interno dello spazio dei nomi.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true