הגדרת GKE ל-ML Diagnostics

אם אתם משתמשים ב-Google Kubernetes Engine‏ (GKE) לעומס העבודה של ה-ML, אתם יכולים להשתמש בפלטפורמת האבחון של ה-ML בשתי דרכים:

  1. מעקב אוטומטי אחרי עומסי עבודה ואיסוף מדדים של המערכת: כדי לעקוב באופן אוטומטי אחרי עומסי עבודה ולאסוף מדדים של המערכת, לא צריך להוסיף קוד או לבצע הגדרות נוספות. המעקב אחרי עומסי העבודה ואיסוף מדדי המערכת מופעלים כברירת מחדל, ולא נדרש לבצע את השלבים במדריך הזה. התכונה 'מעקב אחרי עומסי עבודה' תומכת בסוגי המשימות jobset ו-job של GKE, והיא תואמת לגרסאות GKE 1.36.0-gke.4681000 ואילך.
  2. 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 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