הגדרת 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.

ההגדרה של עומס העבודה תלויה בשיטה שבה אתם משתמשים – פרופילים לפי דרישה או פרופילים באמצעות תוכנה.

אם אתם משתמשים בגרסה של GKE שחדשה יותר מ-1.35.0-gke.3065000, אתם יכולים להגדיר אשכול GKE ל-ML Diagnostics באמצעות פקודה אחת של ה-CLI של gcloud. מידע נוסף מופיע במאמר הגדרה באמצעות ה-CLI של gcloud.

בגרסאות GKE שקודמות ל-1.35.0-gke.3065000, צריך להגדיר ידנית את אשכול GKE כדי להתקין את ארטיפקטים cert-manager, injection-webhook ו-connection-operator. מידע נוסף זמין במאמר בנושא התקנה ידנית.

הגדרה באמצעות ה-CLI של gcloud

בגרסאות GKE מאוחרות יותר מ-1.35.0-gke.3065000, משתמשים באחת מהפקודות הבאות של ה-CLI של gcloud כדי לפרוס את הרכיבים הנדרשים של ML Diagnostics (גם connection-operator וגם injection-webhook) באשכול GKE.

באשכולות 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

אפשר גם להפעיל את הפקודות של ה-CLI של gcloud דרך מסוף GKE Google Cloud :

  • לגבי אשכולות GKE חדשים, עוברים אל Feature Manager > Managed Machine Learning Diagnostics.

    מעבר אל GKE Managed Machine Learning Diagnostics

  • במקרה של אשכולות GKE קיימים, עוברים אל Clusters, בוחרים את שם האשכול, עוברים אל Edit ועורכים את Managed Machine Learning Diagnostics בקטע Features.

למידע נוסף על פקודות ה-CLI של gcloud להגדרת אשכול GKE ל-ML Diagnostics, אפשר לעיין בדגל enable-managed-mldiagnostics בדפי הפניית ה-API הבאים:

התקנה ידנית

בגרסאות 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 תגרום לאתחול של בקשות פרופיל ל-Pods עם שרתי פרופיל שפועלים כשמפעילים לכידה לפי דרישה.

מידע נוסף על הגדרת 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 כדי להתקין את הרכיבים הבאים:

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