Configurare GKE per ML Diagnostics

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

  1. Monitoraggio automatico dei carichi di lavoro e raccolta delle metriche di sistema: per il monitoraggio automatico dei carichi di lavoro e la raccolta delle metriche di sistema, non è necessario instrumentare il codice o eseguire configurazioni aggiuntive. Il monitoraggio dei carichi 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 dei carichi 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 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 tu 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, tramite la Google Cloud console o utilizzando Terraform. Per saperne di più, consulta Configurare con gcloud CLI, Google Cloud la console o Terraform.

Per le versioni di GKE precedenti a 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 Installazione manuale.

Configurare con gcloud CLI, la Google Cloud console o Terraform

Per le versioni di GKE successive a 1.35.0-gke.3065000, utilizza uno dei seguenti metodi per eseguire il deployment dei componenti ML Diagnostics richiesti (sia connection-operator che injection-webhook) nel 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 ML Diagnostics, consulta il flag enable-managed-mldiagnostics nelle seguenti pagine di riferimento dell'API:

Console

  • Per i nuovi cluster GKE, vai a Feature Manager > Managed Machine Learning Diagnostics.

    Vai a GKE Managed Machine Learning Diagnostics

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

Terraform

Se utilizzi Terraform per 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 Google Cloud provider Terraform

Per attivare Managed ML Diagnostics 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 GKE

Per attivare Managed ML Diagnostics su un cluster utilizzando il terraform-google-modules/kubernetes-engine/google modulo (ad esempio il beta-public-cluster sottomodulo), 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

Sostituisci quanto segue:

  • PROJECT_ID: il nome del progetto.
  • CLUSTER_NAME: il nome del cluster.
  • LOCATION: la regione o la zona.

Per saperne di più sull'utilizzo di Terraform con GKE, consulta Supporto di Terraform per GKE.

Installazione manuale

Per le versioni di GKE precedenti a 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 carichi di lavoro 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 saperne di più sulla configurazione per Google Kubernetes Engine, consulta Configurare il cluster Google Kubernetes Engine.

Cert-manager

cert-manager funge da controller dei certificati per il cluster, garantendo che le applicazioni siano sicure e che i 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.

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 abilita 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

Etichettare il carico di lavoro

Per la profilazione programmatica, devi attivare injection-webhook per inserire i metadati nei pod. Etichetta il carico di lavoro o il relativo spazio dei nomi con managed-mldiagnostics-gke=true prima di eseguire il deployment del carico di lavoro:

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

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • Etichettare uno spazio dei nomi. In questo modo, il webhook verrà attivato per tutti i carichi di lavoro Jobset, LWS e RayJob all'interno dello spazio dei nomi.

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