יצירת אשכול GKE מותאם אישית ל-AI שמשתמש ב-A2

במאמר הזה מוסבר איך ליצור אשכולות מותאמים אישית של Google Kubernetes Engine ‏ (GKE) שמשתמשים בסוגי מכונות שעברו אופטימיזציה להאצה מסוג A2 Standard ‏ (A100 40GB) או A2 Ultra ‏ (A100 80GB) כדי לתמוך בעומסי עבודה של בינה מלאכותית (AI) ולמידת מכונה (ML). ‫A2 היא סדרת מכונות GPU כלליות, שמספקות משאבי מחשוב עצמאיים שמיועדים למשימות AI נפוצות, כמו אימון מודלים קטנים יותר והסקת מסקנות במארח יחיד.

‫GKE מספק פלטפורמה יחידה להרצת מגוון רחב של עומסי עבודה בארגון, וכך מצמצם את העומס התפעולי שנובע מניהול של כמה פלטפורמות.

כדי ליצור אשכול GKE שעבר אופטימיזציה ל-AI ומשתמש בסדרת המכונות A2, צריך לבצע את הפעולות הבאות:

  1. יצירת סביבת GKE
  2. התחברות לאשכול
  3. הגדרת מניפסטים של Pod

לפני שמתחילים

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של אשכול GKE, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

בחירת אפשרות צריכה וקבלת קיבולת

  1. בוחרים אפשרות צריכה. הבחירה צריכה להתבסס על האופן שבו רוצים לקבל ולהשתמש במשאבי GPU. מידע נוסף זמין במאמר בנושא בחירת אפשרות צריכה.

    ב-GKE, כדאי לקרוא את המידע הנוסף הבא כשבוחרים אפשרות צריכה:

  2. קבלת קיבולת. כך מקבלים קיבולת לאפשרות התשלום לפי צריכה.

דרישות

באשכול GKE שעבר אופטימיזציה ל-AI ומשתמש במכונות A2, צמתי ה-GPU צריכים להשתמש בדרייבר NVIDIA מגרסה 450.80.02 ואילך.

מגבלות

המגבלות הבאות חלות על מכונות A2 כGPU כללי:

  • GPU עם כמה מופעים: למרות שמכונות A2 (עם GPU מסוג A100) תומכות בחלוקת מחיצות בחומרה, לא ניתן להשתמש ב-GPU עם כמה מופעים (NVIDIA) כשמשתמשים ב-GKE Autopilot. כדי להריץ עומסי עבודה שדורשים חלוקה למחיצות של GPU מסוג A100, צריך להשתמש ב-GKE Standard.

יצירת סביבת GKE

אפשר ליצור אשכול במצב Autopilot או במצב רגיל.

טייס אוטומטי

כדי ליצור אשכול Autopilot, מריצים את הפקודה הבאה:

  gcloud container clusters create-auto CLUSTER_NAME \
      --region=REGION

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • REGION: האזור של האשכול.

רגילה

יוצרים אשכול רגיל ומאגר צמתים של GPU:

  1. כדי ליצור אשכול רגיל, מריצים את הפקודה הבאה:

    gcloud container clusters create CLUSTER_NAME \
        --region=REGION \
        --enable-ip-alias
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: השם של האשכול.
    • REGION: האזור של האשכול.
  2. יוצרים את מאגר הצמתים. אחרי שיוצרים את האשכול, אפשר להוסיף מאגר צמתים עם מעבדי GPU מסוג A2.

    שימו לב לנקודות הבאות:

    • כדי להשתמש בסוגי מכונות A2 Standard ‏ (a2-highgpu) כשטח אחסון זמני או כמטמון, צריך לצרף ידנית דיסקים של SSD מקומיים לצמתים. משתמשים בדגל --local-ssd-count.
    • סוגי מכונות A2 Ultra‏ (a2-ultragpu) כוללים באופן אוטומטי מספר קבוע של דיסקים מקומיים מסוג SSD כברירת מחדל.
    • לסביבות עבודה של אימון עם כמה צמתים, מומלץ להשתמש במדיניות מיקום קומפקטית כדי לצמצם את זמן האחזור של הרשת בין הצמתים.
    • בנוסף, כדי לשפר את ביצועי הרשת, מומלץ להפעיל את NCCL Fast Socket בעומסי עבודה של אימון עם כמה צמתים.

    ‫A2 Standard (A100 40GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-tesla-a100,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform" \
        --local-ssd-count=LOCAL_SSD_COUNT
    

    A2 Ultra (A100 80GB)

    gcloud container node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --node-locations=ZONE \
        --machine-type=MACHINE_TYPE \
        --accelerator=type=nvidia-a100-80gb,count=AMOUNT,gpu-driver-version=LATEST \
        --placement-type=COMPACT \
        --scopes="https://www.googleapis.com/auth/cloud-platform"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLUSTER_NAME: השם של האשכול.
    • REGION: האזור של האשכול.
    • ZONE: אזור אחד או יותר באזור שלכם שבו יחידות ה-GPU המבוקשות זמינות, לדוגמה, us-central1-a. השימוש בפרמטר הזה נדרש כשמשתמשים במיקום קומפקטי.
    • NODE_POOL_NAME: השם של מאגר הצמתים.
    • MACHINE_TYPE: סוג המכונה של הצמתים, לדוגמה, a2-highgpu-1g.
    • 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 יקצה את החומרה.

  1. מציינים את סוג ה-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-a100 (ל-A2 Standard) או ב-nvidia-a100-80gb (ל-A2 Ultra).
    • RESERVATION_NAME: השם של הזמנת הקיבולת ב-Compute Engine. כדי להשתמש בהזמנות משותפות או בבלוקים ספציפיים ובלוקים משניים של הזמנות, אפשר לעיין בקטעים הרלוונטיים במאמר שימוש במשאבים שמורים בנתיב אזורי.
  2. מוסיפים את המשאבים הבאים למאגר שמבקש מעבדי GPU:

    containers:
      - name: my-container
        resources:
          limits:
            nvidia.com/gpu: AMOUNT
    

    מחליפים את AMOUNT במספר ה-GPU לצירוף לכל צומת.

המאמרים הבאים