הגדרת GKE ל-ML Diagnostics

אם אתם משתמשים ב-Google Kubernetes Engine‏ (GKE) לעומס העבודה של ה-ML, תוכלו להשתמש במדריך הזה כדי להגדיר את אשכול 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