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
JobSetdanJob, serta kompatibel dengan GKE versi1.36.4-gke.1247000dan 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:
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.Deploy DaemonSet ke cluster: Jalankan perintah berikut untuk men-deploy daemon ke konteks Kubernetes aktif Anda.
kubectl apply -f diagon-daemonset.yamlVerifikasi 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 widePeriksa log streaming untuk mengonfirmasi konektivitas ke bidang kontrol Google Cloud ML Diagnostics dan heartbeat aktif:
kubectl logs -n diagon -l name=diagon-daemon --tail=50Output-nya mencakup tanda tangan log yang diharapkan berikut:
Stream established. Received successful DaemonRegistrationResponse from backend Sending DaemonHeartbeatRequestMengupdate 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-systemUntuk 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.3065000dan Kubernetes yang dikelola sendiri, Anda harus mengonfigurasi cluster secara manual untuk menginstal artefakcert-manager,injection-webhook, danconnection-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.
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 untukinjection-webhook.injection-webhook: Memberikan metadata yang diperlukan ke SDK. Alat ini mendukung workload Kubernetes ML umum, sepertiJobSet,RayJob, danLeaderWorkerSet.connection-operator: Untuk pembuatan profil on-demand di GKE. Men-deployconnection-operatorbersama denganinjection-webhookke 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, atauRayJob, yang akan mengaktifkan webhook untuk workload tertentu tersebut. Berikut adalah contoh untuk workloadJobSet: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, danRayJobdalam namespace tersebut.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true