Configurar o GKE para diagnósticos de ML

Se você estiver usando o Google Kubernetes Engine (GKE) para sua carga de trabalho de ML, use este guia para configurar o cluster do GKE e instalar os artefatos necessários.

A configuração da carga de trabalho depende do uso de criação de perfil sob demanda ou programática.

Se você estiver usando uma versão do GKE mais recente que 1.35.0-gke.3065000, é possível configurar o cluster do GKE para diagnósticos de ML com um único comando da CLI gcloud. Para mais informações, consulte Configurar com a CLI gcloud.

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

Para versões do GKE mais recentes que 1.35.0-gke.3065000, use um dos comandos da CLI gcloud a seguir para implantar os componentes necessários de diagnósticos de ML (connection-operator e injection-webhook) no cluster do GKE.

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 os diagnósticos de ML, use o seguinte:

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

Também é possível ativar os comandos da CLI gcloud pelo GKE Google Cloud console:

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

    Acessar os diagnósticos de machine learning gerenciados do GKE

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

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

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 sob demanda no GKE. A implantação do connection-operator com o injection-webhook no cluster do GKE inicializa solicitações de criação de perfil para pods de destino com servidores de criação de perfil em execução quando você aciona a captura sob demanda.

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 os 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.

Use o Helm para instalar o seguinte:

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 sob demanda 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 do Helm
0.8.x 0.24.0
0.9.x+ 0.24.0+

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

Para 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 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 carga de trabalho

Para a criação de perfil programática, é necessário acionar o injection-webhook para injetar metadados em 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