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:
- 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
jobsetejobe é compatível com as versões 1.36.0-gke.4681000 e mais recentes do GKE. - 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.
- Criação de perfil on demand: exige a instalação do
connection-operator. - Criação de perfil programática: exige a instalação do
injection-webhook, rotulagem da carga de trabalho e o uso do SDK do ML Diagnostics.
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.
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 oinjection-webhook.injection-webhook: fornece os metadados necessários ao SDK. Ele oferece suporte a cargas de trabalho comuns de ML do Kubernetes, comoJobSet,RayJobeLeaderWorkerSet.connection-operator: para criação de perfil on demand no GKE. A implantação doconnection-operatorcom oinjection-webhookno 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,LWSouRayJob, que vai ativar o webhook para essa carga de trabalho específica. Confira a seguir um exemplo de carga de trabalhoJobSet: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,LWSeRayJobnesse namespace.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true