הגדרת מעבדי GPU למשימות ב-Cloud Run

בדף הזה מוסבר איך להגדיר GPU לעבודות ב-Cloud Run. מעבדי GPU מתאימים לעומסי עבודה של AI, כמו אימון מודלים גדולים של שפה (LLM) באמצעות מסגרות מועדפות, ביצוע הסקה אופליין או הסקה של קבוצות נתונים במודלים גדולים של שפה (LLM) וטיפול במשימות אחרות שדורשות הרבה כוח מחשוב, כמו עיבוד וידאו ועיבוד גרפי כמשימות ברקע. ‫Google מספקת GPU מסוג NVIDIA RTX PRO 6000 Blackwell עם 96GB של זיכרון GPU ‏ (VRAM) ו-GPU מסוג NVIDIA L4 עם 24GB של זיכרון GPU ‏ (VRAM), שהוא נפרד מזיכרון המופע.

ה-GPU ב-Cloud Run מנוהל באופן מלא, ואין צורך במנהלי התקנים או בספריות נוספים. תכונת ה-GPU מציעה זמינות על פי דרישה ללא צורך בהזמנות, בדומה לאופן שבו מעבד על פי דרישה וזיכרון על פי דרישה פועלים ב-Cloud Run.

מופעי Cloud Run עם GPU מסוג NVIDIA RTX PRO 6000 Blackwell או L4 עם דרייברים מותקנים מראש מתחילים לפעול תוך כ-5 שניות, ובשלב הזה התהליכים שפועלים בקונטיינר יכולים להתחיל להשתמש ב-GPU.

אפשר להגדיר GPU אחד לכל מופע Cloud Run. אם משתמשים במאגרי sidecar, חשוב לזכור שאפשר לצרף את ה-GPU רק למאגר אחד.

סוגי GPU נתמכים

‫Cloud Run תומך בשני סוגים של יחידות GPU:

  • NVIDIA RTX PRO 6000 Blackwell GPU עם הגרסה הנוכחית של דרייבר NVIDIA: ‏ 580.x.x (13.0). כדי להשתמש ב-GPU‏ NVIDIA RTX PRO 6000 Blackwell, צריך להשתמש ב-20 ליבות CPU ובזיכרון בנפח 80GiB לפחות.
  • L4 GPU עם גרסת הדרייבר הנוכחית של NVIDIA: 535.x.x (12.2). ב-GPU מסוג L4, צריך להשתמש ב-4 מעבדים לפחות ובזיכרון בנפח 16GiB.

אזורים נתמכים

האזורים הבאים נתמכים על ידי NVIDIA RTX PRO 6000 Blackwell GPU:

האזורים הבאים נתמכים על ידי L4 GPU:

  • asia-southeast1 (סינגפור)
  • asia-south1 (מומבאי) . האזור הזה זמין רק בהזמנה. אם אתם מעוניינים באזור הזה, תוכלו לפנות לצוות התמיכה בחשבונות Google.
  • europe-west1 (בלגיה) סמל של עלה רמה נמוכה של CO2
  • europe-west4 (הולנד) סמל של עלה רמה נמוכה של CO2
  • us-central1 (אייווה) סמל של עלה רמה נמוכה של CO2 . יכול להיות שיהיה צורך לשלוח בקשה להגדלת המכסה כדי להרחיב את השימוש במשאבים באזור הזה. אם אתם מעוניינים באזור הזה, תוכלו לפנות לצוות התמיכה בחשבונות Google.
  • us-east4 (צפון וירג'יניה) . יכול להיות שיהיה צורך לשלוח בקשה להגדלת המכסה כדי להרחיב את השימוש במשאבים באזור הזה. אם אתם מעוניינים באזור הזה, תוכלו לפנות לצוות התמיכה בחשבונות Google.

השפעה על התמחור

פרטים על תמחור של GPU זמינים במאמר תמחור של Cloud Run. שימו לב לדרישות ולשיקולים הבאים:

  • התמחור של יחידות GPU לעבודות הוא ללא יתירות אזורית.
  • הגדרות המעבד (CPU) והזיכרון של המשאב.
  • החיוב על ה-GPU מתבצע לכל משך מחזור החיים של המופע.

יתירות של GPU שלא מוגבלת לאזור

התכונה 'משימות Cloud Run' מספקת תמיכה ביתירות לא אזורית רק למופעים עם GPU. אם מפעילים יתירות לא אזורית, מערכת Cloud Run מנסה לבצע מעבר לגיבוי במקרה של כשל במשימות שמופעל בהן GPU, על בסיס האפשרות הטובה ביותר. מערכת Cloud Run מעבירה את ההרצה של משימות לאזורים אחרים רק אם יש מספיק קיבולת של GPU באותו רגע. האפשרות הזו לא מבטיחה קיבולת שמורה לתרחישי מעבר לגיבוי (failover), אבל העלות שלה נמוכה יותר לכל שנייה של שימוש ב-GPU.

פרטים על הפעלת יתירות לא אזורית מופיעים במאמר הגדרת משימה ב-Cloud Run עם GPU.

שליחת בקשה להגדלת המכסה

המיכסה של יחידות GPU ב-Cloud Run nvidia-rtx-pro-6000 ניתנת במילי-GPU. כשיוצרים פריסה ראשונה בפרויקטים שמשתמשים ב-GPU באזור מסוים בפעם הראשונה, מקבלים באופן אוטומטי מכסת GPU של 3,000 מילי-GPU (יתירות אזורית מושבתת).nvidia-rtx-pro-6000 זה שווה ל-3 יחידות GPU. כשיוצרים פריסה ראשונה בפרויקטים שמשתמשים ב-GPU של Cloud Run nvidia-l4 באזור מסוים בפעם הראשונה, מקבלים אוטומטית מכסת GPU של 3 (יתירות אזורית מושבתת).

שימו לב: הקצאת המכסה האוטומטית הזו תלויה בזמינות, בהתאם לקיבולת המעבד והזיכרון שלכם. המגבלה הזו חלה על מספר ה-GPU שיכולים להיות פעילים בכל שירותי הפרויקט, המשימות ומאגרי העובדים בכל זמן נתון.

אם אתם צריכים עוד יחידות GPU של Cloud Run לעבודות, אתם יכולים לבקש הגדלה של המכסה.

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

ברשימה הבאה מפורטות הדרישות והמגבלות כשמשתמשים ב-GPU ב-Cloud Run:

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. מפעילים את Cloud Run API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  7. כדי לשפר את הביצועים כשמשתמשים במשימות של Cloud Run עם GPU, מומלץ לעיין במאמר שיטות מומלצות: משימות של Cloud Run עם GPU.

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

כדי לקבל את ההרשאות שדרושות להגדרת משימות Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במשימות:

  • Cloud Run Developer (roles/run.developer) – המשימה ב-Cloud Run
  • משתמש בחשבון שירות (roles/iam.serviceAccountUser) – זהות השירות

רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם עבודת Cloud Run שלכם מתקשרת עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

הגדרת משימת Cloud Run לשימוש ביחידות GPU

אפשר להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-YAML כדי להגדיר GPU.

המסוף

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוניות של המשימה. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).

  3. לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.

  4. לוחצים על הכרטיסייה מאגר תגים.

    תמונה

    • מגדירים את המעבד, הזיכרון והבדיקה של הפעלת האפליקציה בהתאם להמלצות שבקטע לפני שמתחילים.
    • מסמנים את תיבת הסימון של ה-GPU. אחר כך בוחרים את סוג ה-GPU בתפריט סוג ה-GPU ואת מספר ה-GPU בתפריט מספר ה-GPU.
  5. לוחצים על יצירה או על עדכון.

gcloud

כדי להפעיל יתירות לא אזורית, צריך לציין את הערך --no-gpu-zonal-redundancy. הפעולה הזו נדרשת כדי להשתמש ב-GPU בעבודות.

כדי ליצור משימה עם הפעלת GPU, משתמשים בפקודה gcloud run jobs create:

    gcloud run jobs create JOB_NAME \
      --image=IMAGE \
      --gpu=1 \
      --no-gpu-zonal-redundancy

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

כדי לעדכן את הגדרת ה-GPU של משימה, משתמשים בפקודה gcloud run jobs update:

    gcloud run jobs update JOB_NAME \
      --image IMAGE_URL \
      --cpu CPU \
      --memory MEMORY \
      --gpu GPU_NUMBER \
      --gpu-type GPU_TYPE \
      --parallelism PARALLELISM \
      --no-gpu-zonal-redundancy

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

  • JOB_NAME: השם של המשימה ב-Cloud Run.
  • IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
  • CPU: מספר יחידות ה-CPU. ב-GPU‏ NVIDIA RTX PRO 6000 Blackwell, צריך לציין לפחות 20 מעבדים. ב-L4 GPU, צריך לציין לפחות 4 מעבדים.
  • MEMORY: נפח הזיכרון. במקרה של NVIDIA RTX PRO 6000 Blackwell GPU, צריך לציין לפחות 80Gi (80 GiB). עבור L4 GPU, צריך לציין לפחות 16Gi ‏ (16 GiB).
  • GPU_NUMBER: הערך 1 (אחד). אם לא מציינים את הפרמטר הזה אבל מציינים GPU_TYPE, ברירת המחדל היא 1.
  • GPU_TYPE: סוג ה-GPU. אם משתמשים ב-GPU‏ NVIDIA RTX PRO 6000 Blackwell, מזינים nvidia-rtx-pro-6000. עבור L4 GPU, מזינים את הערך nvidia-l4 (nvidia-L4 באותיות קטנות, לא הערך המספרי 14).
  • PARALLELISM: ערך של מספר שלם שקטן מהערך הנמוך ביותר של מגבלות המכסה הרלוונטיות שהקציתם לפרויקט.

YAML

צריך להגדיר את ההערה run.googleapis.com/gpu-zonal-redundancy-disabled: לערך true. כך מפעילים יתירות לא אזורית, שנדרשת למעבדי GPU לעבודות.

  1. אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מעדכנים את מאפיין nvidia.com/gpu, annotations: run.googleapis.com/launch-stage בשלב ההשקה, ואת nodeSelector:
    run.googleapis.com/accelerator
    :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
      labels:
        cloud.googleapis.com/location: REGION
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/gpu-zonal-redundancy-disabled: 'true'
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
                limits:
                  cpu: 'CPU'
                  memory: 'MEMORY'
                  nvidia.com/gpu: 'GPU_NUMBER'
              nodeSelector:
                run.googleapis.com/accelerator: GPU_TYPE

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

    • JOB_NAME: השם של המשימה ב-Cloud Run.
    • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest
    • CPU: מספר ליבות ה-CPU. ב-GPU‏ NVIDIA RTX PRO 6000 Blackwell, צריך לציין לפחות 20 מעבדים. ב-L4 GPU, צריך לציין לפחות 4 מעבדים.
    • MEMORY: נפח הזיכרון. במקרה של NVIDIA RTX PRO 6000 Blackwell GPU, צריך לציין לפחות 80Gi (80 GiB). עבור L4 GPU, צריך לציין לפחות 16Gi ‏ (16 GiB).
    • GPU_NUMBER: הערך 1 (אחד) כי אנחנו תומכים רק בצירוף של GPU אחד לכל מכונת Cloud Run.
    • GPU_TYPE: סוג ה-GPU. NVIDIA RTX PRO 6000 Blackwell GPU, enter nvidia-rtx-pro-6000. עבור L4 GPU, מזינים את הערך nvidia-l4 (nvidia-L4 באותיות קטנות, לא הערך המספרי 14).
  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

    אם קיים קובץ job.yaml, הפקודה gcloud run jobs replace משתמשת בו כברירת מחדל.

הצגת הגדרות ה-GPU

כדי לראות את הגדרות ה-GPU הנוכחיות של משימת Cloud Run:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Run jobs:

    כניסה לדף Cloud Run jobs

  2. לוחצים על המשרה שמעניינת אתכם כדי לפתוח את הדף פרטי המשרה.

  3. לוחצים על View and Edit job configuration (הצגה ועריכה של הגדרות העבודה).

  4. מחפשים את הגדרת ה-GPU בפרטי התצורה.

gcloud

  1. משתמשים בפקודה הבאה:

    gcloud run jobs describe JOB_NAME
  2. מאתרים את הגדרת ה-GPU בתצורה שמוחזרת.

ניתוק משאבי GPU מעבודה

אפשר לנתק משאבי GPU מעבודה באמצעות Google Cloud המסוף, Google Cloud CLI או YAML.

המסוף

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. ברשימת המשרות, לוחצים על משרה כדי לפתוח את הפרטים שלה.

  3. לוחצים על הצגה ועריכה של הגדרות העבודה.

  4. לוחצים על Containers, Connections, Security (מאגרי תגים, חיבורים, אבטחה) כדי להרחיב את דף מאפייני העבודה.

  5. לוחצים על הכרטיסייה מאגר תגים.

    תמונה

    • מבטלים את הסימון של תיבת הסימון GPU.
  6. לוחצים על עדכון.

gcloud

כדי לנתק משאבי GPU מהג'וב של Cloud Run, מגדירים את מספר ה-GPU ל-0 באמצעות הפקודה gcloud run jobs update:

  gcloud run jobs update JOB_NAME --gpu 0
  

מחליפים את JOB_NAME בשם של העבודה ב-Cloud Run.

YAML

  1. אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מוחקים את השורות nvidia.com/gpu:, run.googleapis.com/gpu-zonal-redundancy-disabled: 'true' ו-nodeSelector: run.googleapis.com/accelerator: GPU_TYPE.

  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

    אם קיים קובץ job.yaml, הפקודה gcloud run jobs replace משתמשת בו כברירת מחדל.

ספריות של מנהלי התקנים

כברירת מחדל, כל ספריות הדרייברים של NVIDIA RTX PRO 6000 Blackwell GPU ו-NVIDIA L4 GPU מותקנות בתיקייה /usr/local/nvidia/lib64. ‫Cloud Run מוסיף את הנתיב הזה באופן אוטומטי למשתנה הסביבה LD_LIBRARY_PATH (כלומר ${LD_LIBRARY_PATH}:/usr/local/nvidia/lib64) של הקונטיינר עם ה-GPU. כך המקשר הדינמי יכול למצוא את ספריות מנהלי ההתקנים של NVIDIA. ה-linker מחפש ומזהה נתיבים לפי הסדר שמופיע במשתנה הסביבה LD_LIBRARY_PATH. לכל ערך שמציינים במשתנה הזה יש עדיפות על פני נתיב ברירת המחדל של ספריות מנהלי התקנים של Cloud Run‏ /usr/local/nvidia/lib64.

אם רוצים להשתמש בגרסת CUDA שגבוהה מ-12.2, הדרך הכי קלה היא להסתמך על תמונת בסיס חדשה יותר של NVIDIA עם חבילות תאימות קדימה שכבר מותקנות. אפשרות נוספת היא להתקין ידנית את חבילות התאימות קדימה של NVIDIA ולהוסיף אותן ל-LD_LIBRARY_PATH. כדאי לעיין בטבלת התאימות של NVIDIA כדי לדעת אילו גרסאות של CUDA תואמות לגרסת מנהל ההתקן של NVIDIA שסופקה.

מידע על יחידות GPU ועל מקביליות

אם אתם מריצים משימות מקבילות בהרצת עבודה, צריך לקבוע ולהגדיר ערך parallelism שהוא נמוך ממכסת ה-GPU ללא יתירות אזורית שהוקצתה לפרויקט. כדי לבקש להגדיל את המכסה, אפשר לעיין במאמר איך מגדילים את המכסה. משימות GPU מתחילות כמה שיותר מהר, ויכולות להגיע למספר מקסימלי שמשתנה בהתאם למכסת ה-GPU שהקציתם לפרויקט ולאזור שנבחרו. פריסות של Cloud Run נכשלות אם מגדירים מקביליות שגבוהה ממכסת ה-GPU.

כדי לחשב את מכסת ה-GPU שהמשימה שלכם משתמשת בה לכל הפעלה, מכפילים את מספר ה-GPU לכל משימת עבודה בערך המקביליות. לדוגמה, אם מכסת ה-GPU שלכם היא 10, ואתם פורסים את העבודה ב-Cloud Run עם --gpu=1, --parallelism=10, אז העבודה תנצל את כל מכסת ה-GPU שלכם. לחלופין, אם פורסים עם --gpu=1, --parallelism=20, הפריסות ייכשלו.

מידע נוסף זמין במאמר שיטות מומלצות: משימות Cloud Run עם מעבדי GPU.

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

תוכלו להיעזר במדריכים שבמאמר הפעלת היקש של AI ב-Cloud Run באמצעות יחידות GPU.