Mengonfigurasi GKE atau Kubernetes yang dikelola sendiri

Anda dapat mengonfigurasi platform ML Diagnostics untuk workload ML yang berjalan di Google Kubernetes Engine (GKE) atau Kubernetes yang dikelola sendiri.

ML Diagnostik mencakup fitur ketersediaan umum berikut:

  • Pemantauan workload otomatis dan pengumpulan metrik sistem: Untuk pemantauan workload otomatis dan pengumpulan metrik sistem di GKE, Anda tidak perlu melengkapi kode atau melakukan konfigurasi tambahan. Pemantauan workload dan pengumpulan metrik sistem diaktifkan secara default, dan Anda tidak perlu melakukan langkah-langkah dalam panduan ini. Pemantauan workload mendukung jenis tugas GKE JobSet dan Job, serta kompatibel dengan GKE versi 1.36.4-gke.1247000 dan yang lebih baru.
  • Metrik ML Diagnostics SDK dan pembuatan profil terprogram: Jika Anda ingin menggunakan ML Diagnostics SDK untuk mengumpulkan metrik dan menjalankan pembuatan profil terprogram, instal diagram Helm injection-webhook, beri label pada workload, dan gunakan ML Diagnostics SDK. Di GKE, Anda dapat menggunakan satu perintah Google Cloud CLI jika menggunakan versi GKE yang didukung, atau melakukan penginstalan manual. Di Kubernetes yang dikelola sendiri, Anda harus menginstal webhook secara manual.
  • Pembuatan profil on-demand: Jika Anda ingin menggunakan pembuatan profil on-demand, instal diagram Helm connection-operator. Di GKE, Anda dapat menggunakan satu perintah gcloud CLI jika menggunakan versi GKE yang didukung, atau melakukan penginstalan manual. Di Kubernetes yang dikelola sendiri, Anda harus menginstal operator secara manual.

ML Diagnostics juga menyertakan fitur Pratinjau berikut:

  • Pembuatan profil DaemonSet Diagon: Jika Anda ingin menggunakan pembuatan profil on-demand, pembuatan profil berkelanjutan, dan pengambilan profil otomatis dari pemantauan workload pada workload GKE, deploy DaemonSet Diagon di cluster TPU GKE Anda. DaemonSet ini juga berfungsi di cluster Kubernetes yang dikelola sendiri, yang hanya mendukung pembuatan profil on-demand dan berkelanjutan. Pemantauan workload tidak didukung di Kubernetes yang dikelola sendiri.

Men-deploy DaemonSet Diagon

Jika Anda menjalankan workload dalam container di GKE atau cluster Kubernetes yang dikelola sendiri, Anda dapat men-deploy daemon Diagon sebagai DaemonSet. Hal ini memastikan bahwa salinan daemon berjalan di semua, atau yang dipilih, node GPU dan TPU dalam cluster.

Repositori image container

Daemon Diagon dipublikasikan sebagai image Docker dan tersedia dari jalur Artifact Registry berikut:

us-central1-docker.pkg.dev/hypercomputediagon-release/daemon-docker/mldiagnostics-daemon:latest

Langkah-langkah penerapan

Untuk men-deploy DaemonSet Diagon ke cluster Anda, selesaikan langkah-langkah berikut:

  1. Buat konfigurasi DaemonSet: Simpan konfigurasi YAML berikut sebagai diagon-daemonset.yaml. Konfigurasi ini menjalankan daemon Diagon dalam mode istimewa sehingga dapat mengumpulkan metrik diagnostik dan pembuatan profil dari perangkat GPU dan TPU host yang mendasarinya.

    # diagon-daemonset.yaml
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: diagon-daemon
      namespace: diagon
      labels:
        app.kubernetes.io/name: diagon-daemon
        app.kubernetes.io/part-of: diagon
    spec:
      selector:
        matchLabels:
          name: diagon-daemon
      template:
        metadata:
          labels:
            name: diagon-daemon
        spec:
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet
          serviceAccountName: SERVICE_ACCOUNT_NAME
          terminationGracePeriodSeconds: 30
          tolerations:
          - operator: Exists
            effect: NoSchedule
          - operator: Exists
            effect: NoExecute
          containers:
          - name: diagon-daemon
            image: us-central1-docker.pkg.dev/hypercomputediagon-release/daemon-docker/mldiagnostics-daemon:latest
            imagePullPolicy: Always
            command:
            - /mldiagnostics_extension_files/bin/mldiagnostics_extension
            - -standalone=true
            - -channel=hypercomputecluster.googleapis.com/diagnostics
            - -alsologtostderr=true
            securityContext:
              privileged: true
            resources:
              requests:
                cpu: 10m
                memory: 32Mi
              limits:
                memory: 256Mi  # No CPU limit.
    
  2. Deploy DaemonSet ke cluster: Jalankan perintah berikut untuk men-deploy daemon ke konteks Kubernetes aktif Anda.

    kubectl apply -f diagon-daemonset.yaml
    
  3. Verifikasi deployment dan kondisi daemon: Di workstation administratif atau di Cloud Shell, pastikan semua pod daemon dijadwalkan di seluruh worker node dan telah mencapai status Running:

    kubectl get pods -n diagon -l name=diagon-daemon -o wide
    

    Periksa log streaming untuk mengonfirmasi konektivitas ke bidang kontrol Google Cloud ML Diagnostics dan heartbeat aktif:

    kubectl logs -n diagon -l name=diagon-daemon --tail=50
    

    Output-nya mencakup tanda tangan log yang diharapkan berikut:

    Stream established.
    Received successful DaemonRegistrationResponse from backend
    Sending DaemonHeartbeatRequest
    
  4. Mengupdate image DaemonSet: Untuk mengupdate ke versi daemon yang lebih baru atau melakukan roll back, update tag image di file YAML Anda, atau jalankan perintah berikut secara langsung.

    kubectl set image daemonset/diagon-daemon diagon-daemon=us-docker.pkg.dev/hypercomputediagon-release/daemon/diagon-daemon:v2.1.0 --namespace=kube-system
    

    Untuk memeriksa progres deployment atau update, verifikasi status peluncuran:

    kubectl rollout status daemonset/diagon-daemon --namespace=kube-system
    

Menyiapkan operator dan webhook

Untuk penyiapan operator dan webhook, Anda memiliki opsi berikut:

  • Jika 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 konsol Google Cloud , atau menggunakan Terraform.

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

Deploy operator dan webhook di cluster GKE Anda, bersama dengan DaemonSet Diagon. Jika sudah men-deploy operator dan webhook, Anda tidak perlu menghapusnya. Sebagai gantinya, operator berfungsi sebagai jalur penggantian untuk pengambilan profil on demand, dan webhook masih diperlukan untuk menggunakan SDK.

Jika Anda menggunakan lingkungan Kubernetes yang dikelola sendiri, bukan GKE, instal webhook untuk SDK dan deploy DaemonSet Diagon. Dalam lingkungan Kubernetes yang dikelola sendiri, pemantauan workload tidak berfungsi; hanya metrik SDK, pembuatan profil terprogram, pembuatan profil on-demand, dan pembuatan profil berkelanjutan yang didukung.

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 guna 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 GKE Managed Machine Learning Diagnostics

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

Terraform

Jika 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 Terraform Google Cloud

Untuk mengaktifkan Managed ML Diagnostics 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 Diagnostik ML 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 Managed ML Diagnostics di cluster menggunakan modul terraform-google-modules/kubernetes-engine/google (seperti submodul 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 Diagnostik ML 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

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

Penginstalan manual

Untuk versi GKE 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. Alat ini mendukung workload Kubernetes ML umum, seperti JobSet, RayJob, dan LeaderWorkerSet.
  • connection-operator: Untuk pembuatan profil on-demand di GKE. Men-deploy connection-operator bersama dengan injection-webhook ke dalam cluster GKE akan menginisialisasi permintaan pembuatan profil ke pod target dengan server pembuatan profil yang berjalan saat Anda memicu pengambilan on-demand.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan cluster GKE, lihat Mengonfigurasi cluster GKE.

Cert-manager

Add-on cert-manager bertindak sebagai pengontrol sertifikat untuk cluster Anda, memastikan bahwa aplikasi Anda aman dan sertifikat Anda tidak pernah berakhir secara tidak sengaja.

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

Helm chart injection-webhook meneruskan metadata ke SDK. Gunakan helm upgrade --install untuk menginstal pertama kali 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

Diagram Helm connection-operator memungkinkan pembuatan profil on-demand 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 perlu memicu injection-webhook untuk memasukkan 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, LeaderWorkerSet, 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, LeaderWorkerSet, dan RayJob dalam namespace tersebut.

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