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 de diagnóstico de ML de duas maneiras:

  1. Monitoramento automático de carga de trabalho e coleta de métricas do sistema: para monitoramento automático de carga de trabalho e coleta de métricas do sistema, não é necessário instrumentar o código nem fazer nenhuma configuração extra. O monitoramento de cargas de trabalho e a coleta de métricas do sistema são ativados por padrão, e você não precisa seguir as etapas deste guia. O monitoramento de carga de trabalho é compatível com os tipos de jobs 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 sob demanda: se você quiser usar o SDK do ML Diagnostics e criar perfis sob demanda, use este guia para configurar seu cluster do GKE e instalar os artefatos necessários do GKE.

A configuração da sua carga de trabalho depende de você usar criação de perfil on demand ou criação de perfil 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. 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 posteriores a 1.35.0-gke.3065000, use um dos seguintes comandos da CLI gcloud para implantar os componentes necessários do ML Diagnostics (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 o diagnóstico 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 no console do GKE Google Cloud :

  • Para novos clusters do GKE, acesse Gerenciador de recursos > Diagnóstico de aprendizado de máquina gerenciado.

    Acessar o GKE Managed Machine Learning Diagnostics

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

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:

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 ao SDK os metadados necessários. Ele oferece suporte a cargas de trabalho comuns do Kubernetes de ML, como JobSet,RayJob e LeaderWorkerSet.
  • connection-operator: para criação de perfil sob demanda no GKE. A implantação de connection-operator e 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 on demand.

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

cert-manager

O cert-manager atua como controlador de certificados do cluster, garantindo que os 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 ativa a criação de perfis 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 ou mais recente:

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 o profiling programático, é necessário acionar o injection-webhook para inserir 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, o que vai ativar o webhook para essa carga de trabalho específica. Confira um exemplo de uma 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"
    
  • Rotule 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