Configurer GKE pour ML Diagnostics

Si vous utilisez Google Kubernetes Engine (GKE) pour votre charge de travail de ML, vous pouvez utiliser la plate-forme ML Diagnostics de deux manières :

  1. Surveillance automatique des charges de travail et collecte des métriques système : pour la surveillance automatique des charges de travail et la collecte des métriques système, vous n'avez pas besoin d'instrumenter votre code ni d'effectuer de configuration supplémentaire. La surveillance des charges de travail et la collecte des métriques système sont activées par défaut, et vous n'avez pas besoin de suivre les étapes de ce guide. La surveillance des charges de travail est compatible avec les types de tâches GKE jobset et job, ainsi qu'avec les versions GKE 1.36.0-gke.4681000 et ultérieures.
  2. SDK ML Diagnostics et profilage à la demande : si vous souhaitez utiliser le SDK ML Diagnostics et effectuer un profilage à la demande, suivez ce guide pour configurer votre cluster GKE et installer les artefacts GKE requis.

La configuration de votre charge de travail dépend de l'utilisation du profilage à la demande ou du profilage programmatique.

Si vous utilisez une version de GKE ultérieure à 1.35.0-gke.3065000, vous pouvez configurer le cluster GKE pour ML Diagnostics avec une seule commande gcloud CLI, via la Google Cloud console ou à l'aide de Terraform. Pour en savoir plus, consultez Configurer avec gcloud CLI, Google Cloud la console ou Terraform.

Pour les versions de GKE antérieures à 1.35.0-gke.3065000, vous devez configurer manuellement le cluster GKE pour installer les artefacts cert-manager, injection-webhook et connection-operator. Pour en savoir plus, consultez Installation manuelle.

Configurer avec gcloud CLI, Google Cloud la console ou Terraform

Pour les versions de GKE ultérieures à 1.35.0-gke.3065000, utilisez l'une des méthodes suivantes pour déployer les composants ML Diagnostics requis (connection-operator et injection-webhook) dans votre cluster GKE.

gcloud

Pour les nouveaux clusters GKE :

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

Pour les clusters GKE existants :

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

Pour désactiver ML Diagnostics, utilisez la commande suivante :

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

Pour en savoir plus sur les commandes gcloud CLI permettant de configurer un cluster GKE pour ML Diagnostics, consultez l'indicateur enable-managed-mldiagnostics dans les pages de documentation de référence de l'API suivantes :

Console

  • Pour les nouveaux clusters GKE, accédez à Feature Manager > Managed Machine Learning Diagnostics (Gestionnaire de fonctionnalités > Diagnostics de machine learning gérés).

    Accéder à GKE Managed Machine Learning Diagnostics

  • Pour les clusters GKE existants, accédez à Clusters, sélectionnez le nom de votre cluster, puis cliquez sur Edit (Modifier) et modifiez Managed Machine Learning Diagnostics sous Features (Fonctionnalités).

Terraform

Si vous utilisez Terraform pour provisionner votre infrastructure GKE, vous pouvez utiliser le fournisseur terraform-provider-google-beta (version v7.28.0 ou ultérieure) ou le module terraform-google-modules/kubernetes-engine/google (version v45.0.0 ou ultérieure).

Utiliser le Google Cloud fournisseur Terraform

Pour activer Managed ML Diagnostics sur un nouveau cluster à l'aide de la ressource google_container_cluster, ajoutez le bloc managed_machine_learning_diagnostics_config avec enabled = true à l'aide du fournisseur google-beta (version v7.28.0 ou ultérieure) :

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

Pour désactiver Managed ML Diagnostics sur un cluster à l'aide de la ressource Terraform, définissez enabled = false dans le bloc 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
  }
}

Utiliser le module Terraform GKE

Pour activer Managed ML Diagnostics sur un cluster à l'aide du terraform-google-modules/kubernetes-engine/google module (tel que le beta-public-cluster sous-module), définissez 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
}

Pour désactiver Managed ML Diagnostics sur un cluster à l'aide du module Terraform, définissez 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
}

Après avoir mis à jour votre configuration, appliquez les modifications :

terraform apply

Remplacez les éléments suivants :

  • PROJECT_ID : nom du projet.
  • CLUSTER_NAME : nom du cluster.
  • LOCATION : région ou zone.

Pour en savoir plus sur l'utilisation de Terraform avec GKE, consultez la page Compatibilité de Terraform avec GKE.

Installation manuelle

Pour les versions de GKE antérieures à 1.35.0-gke.3065000, vous devez configurer manuellement le cluster GKE pour installer les éléments suivants :

  • cert-manager : prérequis pour injection-webhook.
  • injection-webhook : fournit les métadonnées requises au SDK. Il est compatible avec les charges de travail Kubernetes ML courantes, telles que JobSet, RayJob et LeaderWorkerSet.
  • connection-operator : pour le profilage à la demande sur GKE. Le déploiement de connection-operator avec injection-webhook dans le cluster GKE initialise les requêtes de profilage pour cibler les pods avec des serveurs de profilage en cours d'exécution lorsque vous déclenchez la capture à la demande.

Pour en savoir plus sur la configuration de Google Kubernetes Engine, consultez Configurer un cluster Google Kubernetes Engine.

Cert-manager

cert-manager fait office de contrôleur de certificat pour votre cluster, ce qui garantit la sécurité de vos applications et l'expiration involontaire de vos certificats.

Utilisez Helm pour installer les éléments suivants :

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 transmet les métadonnées au SDK. Utilisez helm upgrade --install pour installer pour la première fois ou mettre à niveau une installation existante.

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 permet le profilage à la demande sur GKE. Utilisez le tableau suivant pour trouver la version mldiagnostics-connection-operator appropriée :

Version JAX Version du chart Helm
0.8.x 0.24.0
0.9.x+ 0.24.0+

Utilisez Helm pour installer la version requise.

Pour 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}'

Pour 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

Ajouter un libellé à la charge de travail

Pour le profilage programmatique, vous devez déclencher injection-webhook afin d' injecter des métadonnées dans les pods. Ajoutez un libellé à la charge de travail ou à son espace de noms avec managed-mldiagnostics-gke=true avant de déployer la charge de travail :

  • Ajouter un libellé à une charge de travail. Ajoutez un libellé à une charge de travail Jobset, LWS ou RayJob, ce qui activera le webhook pour cette charge de travail spécifique. Voici un exemple pour une charge de travail JobSet :

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • Ajouter un libellé à un espace de noms. Cela activera le webhook pour toutes les charges de travail Jobset, LWS et RayJob dans cet espace de noms.

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