הגדרת GKE ל-ML Diagnostics
אם אתם משתמשים ב-Google Kubernetes Engine (GKE) לעומס העבודה של ה-ML, אתם יכולים להשתמש בפלטפורמת האבחון של ה-ML בשתי דרכים:
- מעקב אוטומטי אחרי עומסי עבודה ואיסוף מדדים של המערכת: כדי לעקוב באופן אוטומטי אחרי עומסי עבודה ולאסוף מדדים של המערכת, לא צריך להוסיף קוד או לבצע הגדרות נוספות. המעקב אחרי עומסי העבודה ואיסוף מדדי המערכת מופעלים כברירת מחדל, ולא נדרש לבצע את השלבים במדריך הזה. התכונה 'מעקב אחרי עומסי עבודה' תומכת בסוגי המשימות
jobsetו-jobשל GKE, והיא תואמת לגרסאות GKE 1.36.0-gke.4681000 ואילך. - ML Diagnostics SDK ופרופילים לפי דרישה: אם רוצים להשתמש ב-ML Diagnostics SDK ולבצע פרופילים לפי דרישה, צריך להשתמש במדריך הזה כדי להגדיר את אשכול GKE ולהתקין את הארטיפקטים הנדרשים של GKE.
ההגדרה של עומס העבודה תלויה בשיטה שבה אתם משתמשים – פרופילים לפי דרישה או פרופילים באמצעות תוכנה.
- יצירת פרופילים לפי דרישה: נדרשת התקנה של
connection-operator. - יצירת פרופיל באופן פרוגרמטי: נדרשת התקנה של
injection-webhook, תיוג של עומס העבודה ושימוש ב-ML Diagnostics SDK.
אם אתם משתמשים בגרסה של GKE שחדשה יותר מגרסה 1.35.0-gke.3065000, אתם יכולים להגדיר אשכול GKE ל-ML Diagnostics באמצעות פקודה אחת של ה-CLI של gcloud, דרך מסוף Google Cloud או באמצעות Terraform. למידע נוסף, ראו הגדרה באמצעות ה-CLI של gcloud, Google Cloud מסוף או Terraform.
בגרסאות GKE שקודמות ל-1.35.0-gke.3065000, צריך להגדיר ידנית את אשכול GKE כדי להתקין את ארטיפקטים cert-manager, injection-webhook ו-connection-operator. מידע נוסף זמין במאמר בנושא התקנה ידנית.
הגדרה באמצעות ה-CLI של gcloud, Google Cloud מסוף או Terraform
בגרסאות GKE מאוחרות יותר מ-1.35.0-gke.3065000, אפשר להשתמש באחת מהשיטות הבאות כדי לפרוס את רכיבי האבחון הנדרשים של ML (גם connection-operator וגם injection-webhook) באשכול GKE.
gcloud
באשכולות GKE חדשים:
gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics
באשכולות GKE קיימים:
gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics
כדי להשבית את התכונה 'ניתוח ביצועים מבוסס-ML', משתמשים בפקודה הבאה:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
למידע נוסף על פקודות gcloud CLI להגדרת אשכול GKE ל-ML Diagnostics, אפשר לעיין בסימן enable-managed-mldiagnostics בדפי העזר הבאים של ה-API:
המסוף
לגבי אשכולות GKE חדשים, עוברים אל Feature Manager > Managed Machine Learning Diagnostics.
במקרה של אשכולות GKE קיימים, עוברים אל Clusters, בוחרים את שם האשכול, עוברים אל Edit ועורכים את Managed Machine Learning Diagnostics בקטע Features.
Terraform
אם אתם משתמשים ב-Terraform כדי להקצות את תשתית GKE, אתם יכולים להשתמש ב-terraform-provider-google-beta provider (גרסה v7.28.0 ואילך) או במודול terraform-google-modules/kubernetes-engine/google (גרסה v45.0.0 ואילך).
שימוש ב- Google Cloud Terraform provider
כדי להפעיל את התכונה 'אבחון מנוהל של ML' באשכול חדש באמצעות רכיב google_container_cluster, מוסיפים את הבלוק managed_machine_learning_diagnostics_config עם enabled = true באמצעות ספק google-beta (גרסה v7.28.0 ואילך):
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
}
}
כדי להשבית את התכונה 'אבחון מבוסס-ML מנוהל' באשכול באמצעות משאב Terraform, מגדירים את enabled = false בבלוק 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
}
}
שימוש במודול GKE Terraform
כדי להפעיל את התכונה 'אבחון מנוהל של למידת מכונה' באשכול באמצעות המודול terraform-google-modules/kubernetes-engine/google (כמו מודול המשנה beta-public-cluster), צריך להגדיר את 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
}
כדי להשבית את התכונה 'אבחון מנוהל של ML' באשכול באמצעות מודול Terraform, מגדירים את 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
}
אחרי שמעדכנים את ההגדרות, מחילים את השינויים:
terraform apply
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט. -
CLUSTER_NAME: שם האשכול. -
LOCATION: האזור או התחום.
מידע נוסף על שימוש ב-Terraform עם GKE זמין במאמר תמיכה ב-Terraform ל-GKE.
התקנה ידנית
בגרסאות GKE שקודמות לגרסה 1.35.0-gke.3065000, צריך להגדיר ידנית את אשכול GKE כדי להתקין את הרכיבים הבאים:
-
cert-manager: דרישה מוקדמת ל-injection-webhook. -
injection-webhook: מספק ל-SDK את המטא-נתונים הנדרשים. הוא תומך בעומסי עבודה נפוצים של ML Kubernetes, כמוJobSet,RayJobו-LeaderWorkerSet. -
connection-operator: לשימוש בפרופילים לפי דרישה ב-GKE. פריסתconnection-operatorיחד עםinjection-webhookבאשכול GKE תגרום לאתחול של בקשות פרופילים שמטרתן פודים עם שרתי פרופילים שפועלים כשמפעילים לכידה לפי דרישה.
מידע נוסף על הגדרת Google Kubernetes Engine זמין במאמר הגדרת אשכול Google Kubernetes Engine.
Cert-manager
cert-manager פועל כבקר האישורים של האשכול, כדי לוודא שהאפליקציות מאובטחות ושהתוקף של האישורים לא יפוג בטעות.
משתמשים ב-Helm כדי להתקין את הרכיבים הבאים:
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 מעביר מטא-נתונים אל ה-SDK. אפשר להשתמש ב-helm upgrade --install
כדי להתקין בפעם הראשונה או לשדרג התקנה קיימת.
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 מאפשרת יצירת פרופילים לפי דרישה ב-GKE. כדי למצוא את הגרסה הנכונה של mldiagnostics-connection-operator, אפשר להיעזר בטבלה הבאה:
| גרסת JAX | גרסת תרשים Helm |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x+ | 0.24.0+ |
משתמשים ב-Helm כדי להתקין את הגרסה הנדרשת.
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}'
ב-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
תווית עומס העבודה
כדי לבצע פרופיל פרוגרמטי, צריך להפעיל את injection-webhook כדי להחדיר מטא-נתונים ל-pods. לפני שמבצעים פריסה של עומס העבודה, צריך להוסיף את התווית managed-mldiagnostics-gke=true לעומס העבודה או למרחב השמות שלו:
תיוג של עומס עבודה. נותנים תווית לעומס עבודה (workload) מסוג
Jobset,LWSאוRayJob, וכך מפעילים את ה-webhook עבור עומס העבודה הספציפי הזה. זו דוגמה לעומס עבודהJobSet:apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"הוספת תווית למרחב שמות הפעולה הזו תפעיל את ה-webhook לכל עומסי העבודה של
Jobset, LWSו-RayJobבמרחב השמות הזה.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true