במאמר הזה מוסבר איך ליצור אשכולות מותאמים אישית של Google Kubernetes Engine (GKE) שמשתמשים בסדרת מכונות למטרות כלליות N1 עם מעבדי GPU מסוג NVIDIA T4 או V100 מצורפים, כדי לתמוך בעומסי עבודה של בינה מלאכותית (AI) ולמידת מכונה (ML). מכונות N1 עם מעבדי GPU מצורפים נחשבות מעבדי GPU לשימוש כללי, שמספקים משאבי מחשוב עצמאיים שמיועדים למשימות AI נפוצות, כמו הסקה קטנה עד בינונית ואפליקציות עתירות גרפיקה.
GKE מספק פלטפורמה יחידה להרצת מגוון רחב של עומסי עבודה בארגון, וכך מצמצם את העומס התפעולי שנובע מניהול של כמה פלטפורמות.
כדי ליצור אשכול GKE שעבר אופטימיזציה ל-AI ומשתמש בסדרת המכונות N1, צריך לבצע את הפעולות הבאות:
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של אשכול GKE, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין ב-Kubernetes Engine (
roles/container.admin) - אדמין ב-Compute (
roles/compute.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בחירת אפשרות צריכה וקבלת קיבולת
בוחרים אפשרות צריכה. הבחירה צריכה להתבסס על האופן שבו רוצים לקבל ולהשתמש במשאבי GPU. מידע נוסף זמין במאמר בנושא בחירת אפשרות צריכה.
קבלת קיבולת. כך מקבלים קיבולת לאפשרות התשלום לפי צריכה.
דרישות
באשכול GKE שעבר אופטימיזציה באמצעות AI ומשתמש ב-N1, הצמתים צריכים להשתמש בדרייבר NVIDIA בגרסה 535 ואילך.
מגבלות
המגבלות הבאות חלות על N1 כסדרת מכונות GPU כללי:
- Multi-instance GPU (NVIDIA): סדרת מכונות N1 לא תומכת ב-Multi-instance GPUs (NVIDIA).
- NCCL Fast Socket: אי אפשר להשתמש ב-NCCL Fast Socket במכונות N1 ב-GKE. מכונות N1 תומכות בתקשורת בין צמתים, אבל הן משתמשות ברישות VPC רגיל. לאימון מבוזר בקנה מידה גדול שדורש תפוקת רשת מקסימלית, מומלץ להשתמש בסדרת מכונות Clustered GPU, כמו A3 High או A3 Mega (שמשתמשות ב-GPUDirect TCPX) או A3 Ultra ו-A4 (שמשתמשות ב-GPUDirect RDMA).
יצירת סביבת GKE
אפשר ליצור אשכול במצב Autopilot או במצב רגיל.
טייס אוטומטי
כדי ליצור אשכול Autopilot, מריצים את הפקודה הבאה:
gcloud container clusters create-auto CLUSTER_NAME \
--region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
REGION: האזור של האשכול.
רגילה
יוצרים אשכול רגיל ומאגר צמתים של GPU:
כדי ליצור אשכול רגיל, מריצים את הפקודה הבאה:
gcloud container clusters create CLUSTER_NAME \ --region=REGION \ --enable-ip-aliasמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
REGION: האזור של האשכול.
-
יוצרים את מאגר הצמתים. אחרי שיוצרים את האשכול, אפשר להוסיף מאגר צמתים עם מכונות N1 עם יחידות GPU מסוג T4 או V100 שמצורפות אליהן.
כדי ליצור מאגר צמתים, משתמשים בפקודה הבאה:
N1 עם מעבדי T4 GPU מצורפים
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-t4,count=AMOUNT,gpu-driver-version=LATEST \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTN1 עם מעבדי GPU מסוג V100
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --region=REGION \ --node-locations=ZONE \ --machine-type=MACHINE_TYPE \ --accelerator=type=nvidia-tesla-v100,count=AMOUNT,gpu-driver-version=LATEST \ --scopes="https://www.googleapis.com/auth/cloud-platform" \ --local-ssd-count=LOCAL_SSD_COUNTמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
REGION: האזור של האשכול. -
ZONE: אזור אחד או יותר באזור שלכם שבו יחידות ה-GPU המבוקשות זמינות, לדוגמה,us-central1-a. הפעולה הזו נדרשת כשמשתמשים במיקום מודעה קומפקטי. -
NODE_POOL_NAME: השם של מאגר הצמתים. -
MACHINE_TYPE: סוג מכונת N1 לצמתים, לדוגמה,n1-standard-4. -
AMOUNT: מספר יחידות ה-GPU לצירוף לכל צומת. -
LOCAL_SSD_COUNT: מספר נפחי ה-SSD המקומיים להקצאה בכל צומת.
-
התחברות לאשכול
מתחברים לאשכול כדי להריץ את הפקודות של kubectl בקטעים הבאים:
gcloud container clusters get-credentials CLUSTER_NAME \
--region=REGION
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול. -
REGION: האזור של האשכול.
מידע נוסף זמין במאמר התקנה של kubectl והגדרת גישה לאשכול.
הגדרת מניפסט של Pod (ב-Autopilot בלבד)
אם יצרתם אשכול Autopilot, אתם צריכים לבחור את ה-GPU המתאים במניפסטים של ה-Pod כדי ש-GKE יקצה את החומרה.
מציינים את סוג ה-GPU שנבחר ואת ההזמנה הספציפית באמצעות בוררי צמתים:
spec: nodeSelector: cloud.google.com/gke-accelerator: ACCELERATOR cloud.google.com/gke-gpu-driver-version: latest # Optional: Include if using reserved capacity cloud.google.com/reservation-name: RESERVATION_NAME cloud.google.com/reservation-affinity: "specific"מחליפים את מה שכתוב בשדות הבאים:
-
ACCELERATOR: המאיץ שבו רוצים להשתמש. משתמשים ב-nvidia-tesla-t4עבור מעבדי T4 GPU, או ב-nvidia-tesla-v100עבור מעבדי V100 GPU. -
RESERVATION_NAME: השם של הזמנת הקיבולת ב-Compute Engine. כדי להשתמש בהזמנות משותפות או בבלוקים ספציפיים ובלוקים משניים של הזמנות, אפשר לעיין בקטעים הרלוונטיים במאמר שימוש במשאבים שמורים בנתיב אזורי.
-
מוסיפים את המשאבים הבאים למאגר שמבקש מעבדי GPU:
containers: - name: my-container resources: limits: nvidia.com/gpu: AMOUNTמחליפים את
AMOUNTבמספר ה-GPU לצירוף לכל צומת.