Configurar o GKE para o ML Diagnostics

Se você estiver usando o Google Kubernetes Engine (GKE) para sua carga de trabalho de ML, poderá usar a plataforma ML Diagnostics de duas maneiras:

  1. Monitoramento automático da carga de trabalho e coleta de métricas do sistema: para o monitoramento automático da carga de trabalho e a coleta de métricas do sistema, não é necessário instrumentar o código nem fazer nenhuma configuração extra. O monitoramento da carga de trabalho e a coleta de métricas do sistema são ativados por padrão, e não é necessário realizar as etapas deste guia. O monitoramento da carga de trabalho oferece suporte aos tipos de job do GKE jobset e job e é compatível com as versões 1.36.0-gke.4681000 e mais recentes do GKE.
  2. SDK do ML Diagnostics e criação de perfil on demand: se você quiser usar o SDK do ML Diagnostics e criar um perfil on demand, use este guia para configurar o cluster do GKE e instalar os artefatos necessários do GKE.

A configuração da carga de trabalho depende se você usa a criação de perfil on demand ou programática.

Se você estiver usando uma versão do GKE mais recente que 1.35.0-gke.3065000, poderá configurar o cluster do GKE para o ML Diagnostics com um único comando da CLI gcloud, pelo Google Cloud console ou usando o Terraform. Para mais informações, consulte Configurar com a CLI gcloud, Google Cloud o console ou o Terraform.

Para versões do GKE anteriores a 1.35.0-gke.3065000, é necessário configurar manualmente o cluster do GKE para instalar os artefatos cert-manager, injection-webhook e connection-operator. Para mais informações, consulte Instalação manual.

Configurar com a CLI gcloud, Google Cloud o console ou o Terraform

Para versões do GKE mais recentes que 1.35.0-gke.3065000, use um dos métodos a seguir para implantar os componentes necessários do ML Diagnostics (connection-operator e injection-webhook) no cluster do GKE.

gcloud

Para novos clusters do GKE:

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

Para clusters do GKE atuais:

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

Para desativar o ML Diagnostics, use o seguinte:

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

Para mais informações sobre os comandos da CLI gcloud para configurar um cluster do GKE para o ML Diagnostics, consulte a flag enable-managed-mldiagnostics nas seguintes páginas de referência da API:

Console

  • Para novos clusters do GKE, acesse Gerenciador de recursos > Diagnóstico de machine learning gerenciado.

    Acessar o diagnóstico de machine learning gerenciado do GKE

  • Para clusters do GKE atuais, acesse Clusters, selecione o nome do cluster, acesse Editar e edite Diagnóstico de machine learning gerenciado em Recursos.

Terraform

Se você usar o Terraform para provisionar sua infraestrutura do GKE, poderá usar o provedor terraform-provider-google-beta (versão v7.28.0 ou mais recente) ou o módulo terraform-google-modules/kubernetes-engine/google (versão v45.0.0 ou mais recente).

Como usar o Google Cloud provedor do Terraform

Para ativar o diagnóstico de ML gerenciado em um novo cluster usando o recurso google_container_cluster, adicione o bloco managed_machine_learning_diagnostics_config com enabled = true usando o provedor google-beta (versão v7.28.0 ou mais recente):

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

Para desativar o diagnóstico de ML gerenciado em um cluster usando o recurso do Terraform, defina enabled = false no bloco 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
  }
}

Como usar o módulo do Terraform do GKE

Para ativar o diagnóstico de ML gerenciado em um cluster usando o terraform-google-modules/kubernetes-engine/google módulo (como o beta-public-cluster submódulo), defina 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
}

Para desativar o diagnóstico de ML gerenciado em um cluster usando o módulo do Terraform, defina 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
}

Depois de atualizar a configuração, aplique as mudanças:

terraform apply

Substitua:

  • PROJECT_ID: o nome do projeto.
  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: a região ou zona.

Para saber mais sobre como usar o Terraform com o GKE, consulte Suporte do Terraform ao GKE.

Instalação manual

Para versões do GKE anteriores a 1.35.0-gke.3065000, é necessário configurar manualmente o cluster do GKE para instalar o seguinte:

  • cert-manager: um pré-requisito para o injection-webhook.
  • injection-webhook: fornece os metadados necessários ao SDK. Ele oferece suporte a cargas de trabalho comuns de ML do Kubernetes, como JobSet, RayJob e LeaderWorkerSet.
  • connection-operator: para criação de perfil on demand no GKE. A implantação do connection-operator com o injection-webhook no cluster do GKE inicializará solicitações de criação de perfil para pods de destino com servidores de criação de perfil em execução quando você acionar a captura on demand.

Para mais informações sobre a configuração do Google Kubernetes Engine, consulte Configurar o cluster do Google Kubernetes Engine.

Cert-manager

O cert-manager atua como o controlador de certificados do cluster, garantindo que seus aplicativos estejam seguros e que seus certificados nunca expirem sem querer.

Use o Helm para instalar o seguinte:

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

O injection-webhook transmite metadados para o SDK. Use helm upgrade --install para instalar pela primeira vez ou fazer upgrade de uma instalação atual.

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

O connection-operator permite a criação de perfil on demand no GKE. Use a tabela a seguir para encontrar a versão correta do mldiagnostics-connection-operator:

Versão do JAX Versão do gráfico Helm
0.8.x 0.24.0
0.9.x+ 0.24.0+

Use o Helm para instalar a versão necessária.

Para o 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}'

Para o 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

Rotular a carga de trabalho

Para a criação de perfil programática, é necessário acionar o injection-webhook para injetar metadados nos pods. Rotule a carga de trabalho ou o namespace dela com managed-mldiagnostics-gke=true antes de implantar a carga de trabalho:

  • Rotular uma carga de trabalho. Rotule uma carga de trabalho Jobset, LWS ou RayJob, que vai ativar o webhook para essa carga de trabalho específica. Confira a seguir um exemplo de carga de trabalho JobSet:

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • Rotular um namespace. Isso vai ativar o webhook para todas as cargas de trabalho Jobset, LWS e RayJob nesse namespace.

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