בדף הזה מוסבר איך לפרוס עומסי עבודה של קונטיינרים של GPU ב-Google Distributed Cloud (GDC) Sandbox AI Optimized SKU.
פריסת עומסי עבודה של קונטיינרים של GPU
חבילת ה-SKU של ארגז החול של GDC שעברה אופטימיזציה ל-AI כוללת ארבעה מעבדי GPU מסוג NVIDIA H100 80GB HBM3 באשכול org-infra. אפשר לגשת למעבדי ה-GPU האלה באמצעות שם המשאב nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. בקטע הזה מוסבר איך לעדכן את הגדרות הקונטיינר כדי להשתמש במעבדי ה-GPU האלה.
יחידות ה-GPU ב-SKU של GDC Sandbox AI Optimized משויכות לפרויקט שהוגדר מראש, sandbox-gpu-project. כדי להשתמש ביחידות ה-GPU, צריך לפרוס את מאגר התגים באמצעות הפרויקט הזה באשכול org-1-infra.
לפני שמתחילים
כדי להריץ פקודות מול אשכול התשתית של הארגון, צריך לוודא שיש לכם את קובץ ה-kubeconfig של אשכול
org-1-infra, כמו שמתואר במאמר עבודה עם אשכולות:- להגדיר ולאמת באמצעות שורת הפקודה
gdcloud, וגם - יוצרים את קובץ ה-kubeconfig עבור אשכול התשתית של הארגון, ומקצים את הנתיב שלו למשתנה הסביבה
KUBECONFIG.
- להגדיר ולאמת באמצעות שורת הפקודה
כדי להריץ את עומסי העבודה, צריך להקצות לכם את התפקיד
sandbox-gpu-admin. כברירת מחדל, התפקיד מוקצה למשתמשplatform-admin. כדי להקצות את התפקיד למשתמשים אחרים, צריך להיכנס לחשבון בתורplatform-adminולהריץ את הפקודה הבאה:kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \ --user=${USER} --namespace=sandbox-gpu-project
הגדרת קונטיינר לשימוש במשאבי GPU
מוסיפים את השדות
.containers.resources.requestsו-.containers.resources.limitsלמפרט של הקונטיינר כדי לבקש מעבדי GPU לעומס העבודה. כל הקונטיינרים בפרויקט sandbox-gpu-project יכולים לבקש עד 4 יחידות GPU בסך הכול בכל הפרויקט. בדוגמה הבאה מוגדרת בקשה לשימוש ביחידת GPU אחת כחלק ממפרט הקונטיינר.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: sandbox-gpu-project labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest resources: requests: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 limits: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
כדי לגשת ל-GPU, צריך גם לתת הרשאות נוספות לקונטיינרים. לכל מאגר תגים שמבקש מעבדי GPU, מוסיפים
.containers.securityContextgrantingsecurityContext.seLinuxOptionsמסוגunconfined_tלמאגר התגים.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: sandbox-gpu-project labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest resources: requests: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 limits: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 securityContext: seLinuxOptions: type: unconfined_tמחילים את קובץ המניפסט של מאגר התגים:
kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \ -n sandbox-gpu-project \ --kubeconfig ${KUBECONFIG}