Configura GKE per ML Diagnostics

Se utilizzi Google Kubernetes Engine (GKE) per il tuo carico di lavoro ML, puoi utilizzare la piattaforma ML Diagnostics in due modi:

  1. Monitoraggio automatico del workload e raccolta delle metriche di sistema: per il monitoraggio automatico del workload e la raccolta delle metriche di sistema, non è necessario strumentare il codice o eseguire configurazioni aggiuntive. Il monitoraggio del carico di lavoro e la raccolta delle metriche di sistema sono attivati per impostazione predefinita e non è necessario eseguire i passaggi descritti in questa guida. Il monitoraggio del carico di lavoro supporta i tipi di job GKE jobset e job ed è compatibile con le versioni di GKE 1.36.0-gke.4681000 e successive.
  2. SDK ML Diagnostics e profilazione on demand: se vuoi utilizzare l'SDK ML Diagnostics ed eseguire la profilazione on demand, utilizza questa guida per configurare il cluster GKE e installare gli artefatti GKE richiesti.

La configurazione del carico di lavoro dipende dal fatto che utilizzi la profilazione on demand o la profilazione programmatica.

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. Per saperne di più, consulta Configurazione con gcloud CLI.

Per le versioni di GKE precedenti alla 1.35.0-gke.3065000, devi configurare manualmente il cluster GKE per installare gli artefatti cert-manager, injection-webhook e connection-operator. Per saperne di più, consulta la sezione Installazione manuale.

Configura con gcloud CLI

Per le versioni di GKE successive alla 1.35.0-gke.3065000, utilizza uno dei seguenti comandi gcloud CLI per eseguire il deployment dei componenti ML Diagnostics richiesti (connection-operator e injection-webhook) nel tuo cluster GKE.

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

Puoi anche abilitare i comandi gcloud CLI tramite la console Google Cloud GKE:

  • Per i nuovi cluster GKE, vai a Gestore funzionalità > Diagnostica di machine learning gestito.

    Vai a GKE Managed Machine Learning Diagnostics

  • Per i cluster GKE esistenti, vai a Cluster, seleziona il nome del cluster, vai a Modifica e modifica Diagnostica di Managed Machine Learning in Funzionalità.

Per saperne di più sui comandi gcloud CLI per configurare un cluster GKE per ML Diagnostics, consulta il flag enable-managed-mldiagnostics nelle seguenti pagine di riferimento dell'API:

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 per injection-webhook.
  • injection-webhook: fornisce all'SDK i metadati richiesti. Supporta i workload Kubernetes ML comuni, come JobSet,RayJob e LeaderWorkerSet.
  • connection-operator: Per la profilazione on demand su GKE. Il deployment di connection-operator insieme a injection-webhook nel cluster GKE inizializzerà le richieste di profilazione per i pod di destinazione con i server di profilazione in esecuzione quando attivi l'acquisizione on demand.

Per ulteriori informazioni sulla configurazione per Google Kubernetes Engine, consulta Configura il cluster Google Kubernetes Engine.

Cert-manager

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

Injection-webhook

injection-webhook passa i metadati all'SDK. Utilizza helm upgrade --install per installare per la prima volta o eseguire l'upgrade di un'installazione esistente.

Utilizza Helm per installare quanto segue:

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 consente la profilazione on demand su GKE. Utilizza la tabella seguente per trovare la versione corretta di mldiagnostics-connection-operator:

Versione di 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

Etichettare 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:

  • Etichettare un workload. Etichetta un workload Jobset, LWS o RayJob, che attiverà il webhook per quel workload specifico. Di seguito è riportato un esempio per un workload JobSet:

    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 verrà abilitato per tutti i workload Jobset, LWS e RayJob all'interno di questo spazio dei nomi.

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