Mengonfigurasi GKE untuk ML Diagnostics

Jika Anda menggunakan Google Kubernetes Engine (GKE) untuk workload ML, Anda dapat menggunakan platform ML Diagnostics dengan dua cara:

  1. Pemantauan workload otomatis dan pengumpulan metrik sistem: Untuk pemantauan workload otomatis dan pengumpulan metrik sistem, Anda tidak perlu menginstrumentasi kode atau melakukan konfigurasi tambahan. Pemantauan workload dan pengumpulan metrik sistem diaktifkan secara default, dan Anda tidak diwajibkan untuk melakukan langkah-langkah dalam panduan ini. Pemantauan workload mendukung jenis tugas GKE jobset dan job, serta kompatibel dengan GKE versi 1.36.0-gke.4681000 dan yang lebih baru.
  2. ML Diagnostics SDK dan pembuatan profil sesuai permintaan: Jika Anda ingin menggunakan ML Diagnostics SDK dan melakukan pembuatan profil sesuai permintaan, gunakan panduan ini untuk mengonfigurasi cluster GKE dan menginstal artefak GKE yang diperlukan.

Konfigurasi workload Anda bergantung pada apakah Anda menggunakan pembuatan profil sesuai permintaan atau pembuatan profil terprogram.

  • Pembuatan profil sesuai permintaan: Memerlukan Anda untuk menginstal connection-operator.
  • Pembuatan profil terprogram: Memerlukan Anda untuk menginstal injection-webhook, memberi label pada workload dan menggunakan ML Diagnostics SDK.

Jika Anda menggunakan GKE versi yang lebih baru dari 1.35.0-gke.3065000, Anda dapat menyiapkan cluster GKE untuk ML Diagnostics dengan satu perintah gcloud CLI, melalui Google Cloud konsol, atau menggunakan Terraform. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan dengan gcloud CLI, Google Cloud konsol, atau Terraform.

Untuk GKE versi sebelum 1.35.0-gke.3065000, Anda harus mengonfigurasi cluster GKE secara manual untuk menginstal artefak cert-manager, injection-webhook, dan connection-operator. Untuk mengetahui informasi selengkapnya, lihat Penginstalan manual.

Menyiapkan dengan gcloud CLI, Google Cloud konsol, atau Terraform

Untuk GKE versi yang lebih baru dari 1.35.0-gke.3065000, gunakan salah satu metode berikut untuk men-deploy komponen ML Diagnostics yang diperlukan (connection-operator dan injection-webhook) ke cluster GKE Anda.

gcloud

Untuk cluster GKE baru:

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

Untuk cluster GKE yang ada:

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

Untuk menonaktifkan ML Diagnostics, gunakan perintah berikut:

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

Untuk mengetahui informasi selengkapnya tentang perintah gcloud CLI untuk menyiapkan cluster GKE untuk ML Diagnostics, lihat flag enable-managed-mldiagnostics di halaman referensi API berikut:

Konsol

  • Untuk cluster GKE baru, buka Feature Manager > Managed Machine Learning Diagnostics.

    Buka ML Diagnostics Terkelola GKE

  • Untuk cluster GKE yang ada, buka Clusters, pilih nama cluster Anda, buka Edit, lalu edit Managed Machine Learning Diagnostics di bagian Features.

Terraform

Jika Anda menggunakan Terraform untuk menyediakan infrastruktur GKE, Anda dapat menggunakan penyedia terraform-provider-google-beta (versi v7.28.0 atau yang lebih baru), atau modul terraform-google-modules/kubernetes-engine/google (versi v45.0.0 atau yang lebih baru).

Menggunakan penyedia Google Cloud Terraform

Untuk mengaktifkan ML Diagnostics Terkelola di cluster baru menggunakan resource google_container_cluster, tambahkan blok managed_machine_learning_diagnostics_config dengan enabled = true menggunakan penyedia google-beta (versi v7.28.0 atau yang lebih baru):

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

Untuk menonaktifkan ML Diagnostics Terkelola di cluster menggunakan resource Terraform, tetapkan enabled = false di blok 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
  }
}

Menggunakan modul Terraform GKE

Untuk mengaktifkan ML Diagnostics Terkelola di cluster menggunakan terraform-google-modules/kubernetes-engine/google modul (seperti submodule beta-public-cluster), tetapkan 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
}

Untuk menonaktifkan ML Diagnostics Terkelola di cluster menggunakan modul Terraform, tetapkan 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
}

Setelah memperbarui konfigurasi, terapkan perubahan:

terraform apply

Ganti kode berikut:

  • PROJECT_ID: nama project.
  • CLUSTER_NAME: nama cluster.
  • LOCATION: region atau zona.

Untuk mempelajari lebih lanjut cara menggunakan Terraform dengan GKE, lihat Dukungan Terraform untuk GKE.

Penginstalan manual

Untuk GKE versi sebelum 1.35.0-gke.3065000, Anda harus mengonfigurasi cluster GKE secara manual untuk menginstal hal berikut:

  • cert-manager: Prasyarat untuk injection-webhook.
  • injection-webhook: Memberikan metadata yang diperlukan ke SDK. Webhook ini mendukung workload Kubernetes ML umum, seperti JobSet,RayJob, dan LeaderWorkerSet.
  • connection-operator: Untuk pembuatan profil sesuai permintaan di GKE. Men-deploy connection-operator bersama dengan injection-webhook ke cluster GKE akan menginisialisasi permintaan pembuatan profil untuk menargetkan pod dengan server pembuatan profil yang berjalan saat Anda memicu pengambilan sesuai permintaan.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan Google Kubernetes Engine, lihat Mengonfigurasi Google Kubernetes Engine cluster.

Cert-manager

cert-manager bertindak sebagai pengontrol sertifikat untuk cluster Anda, memastikan bahwa aplikasi Anda aman dan sertifikat Anda tidak akan kedaluwarsa tanpa disengaja.

Gunakan Helm untuk menginstal hal berikut:

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 meneruskan metadata ke SDK. Gunakan helm upgrade --install untuk menginstal pertama kalinya atau mengupgrade penginstalan yang ada.

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 memungkinkan pembuatan profil sesuai permintaan di GKE. Gunakan tabel berikut untuk menemukan versi mldiagnostics-connection-operator yang benar:

Versi JAX Versi Diagram Helm
0.8.x 0.24.0
0.9.x+ 0.24.0+

Gunakan Helm untuk menginstal versi yang diperlukan.

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

Untuk 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

Memberi label pada workload

Untuk pembuatan profil terprogram, Anda harus memicu injection-webhook untuk menyuntikkan metadata ke dalam pod. Beri label pada workload atau namespace-nya dengan managed-mldiagnostics-gke=true sebelum men-deploy workload:

  • Memberi label pada workload. Beri label pada workload Jobset, LWS, atau RayJob, yang akan mengaktifkan webhook untuk workload tertentu tersebut. Berikut adalah contoh untuk workload JobSet:

    apiVersion: jobset.x-k8s.io/v1alpha2
    kind: JobSet
    metadata:
      name: single-host-tpu-v3-jobset2
      namespace: default
      labels:
        managed-mldiagnostics-gke: "true"
    
  • Memberi label pada namespace. Tindakan ini akan mengaktifkan webhook untuk semua workload Jobset, LWS, dan RayJob dalam namespace tersebut.

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