במאמר הזה מוסבר איך ליצור ולהריץ משימה שמשתמשת ביחידת עיבוד גרפי (GPU). למידע נוסף על התכונות וההגבלות של מעבדים גרפיים, קראו את המאמר מידע על מעבדים גרפיים במסמכי התיעוד של Compute Engine.
כשיוצרים משימה ב-Batch, אפשר להשתמש במעבדי GPU כדי להאיץ עומסי עבודה ספציפיים. תרחישי שימוש נפוצים למשימות שמשתמשות במעבדי GPU כוללים עיבוד נתונים אינטנסיבי ועומסי עבודה של בינה מלאכותית (AI) כמו למידת מכונה (ML). לחלופין, אתם יכולים להאיץ עומסי עבודה של AI ו-ML באמצעות שימוש ביחידות TPU.
לפני שמתחילים
- אם לא השתמשתם ב-Batch בעבר, כדאי לקרוא את המאמר תחילת השימוש ב-Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, צריך לבקש מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
- עריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שהוא כברירת מחדל חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- עריכת משימות באצווה (
יצירת משימה שמשתמשת ב-GPU
כדי ליצור משימה שמשתמשת ב-GPU:
- תכנון ההגדרות של משימה שמשתמשת ב-GPU.
- יוצרים משימה עם הדרישות והשיטות שזיהיתם. בקטע יצירת משימה שמשתמשת ב-GPU מוסבר איך ליצור משימה באמצעות האפשרויות המומלצות.
תכנון ההגדרות של משימה שמשתמשת במעבדים גרפיים
לפני שיוצרים משימה שמשתמשת ב-GPU, צריך לתכנן את דרישות ההגדרה של המשימה, כפי שמוסבר בקטעים הבאים:
שלב 1: בוחרים את סוג המכונה של ה-GPU ואת אפשרות הצריכה
הדרישות של המשימה משתנות בהתאם לסוג המכונה של ה-GPU ולאפשרות הצריכה שאתם מעדיפים, ויכול להיות שהאפשרויות של כל אחת מהן תלויות זו בזו.
כדי לבחור את סוג המכונה של ה-GPU ואת אפשרות הצריכה של המשימה:
מזהים ובוחרים את רמת העדיפות:
- אם אתם רוצים לתת עדיפות לביצועים ולתמחור בסיסי, עיינו בקטע בחירת סוג מכונת ה-GPU במאמר הזה.
- אם אתם רוצים לתת עדיפות לזמינות של משאבים או להנחות, קראו את הקטע בחירת אפשרות הצריכה במאמר הזה.
בוחרים את האפשרות השנייה בהתאם למה שתואם לבחירה הראשונה.
כדי לזהות את האפשרויות שתואמות לבחירה הראשונה, קראו את המאמר זמינות של אפשרויות צריכה לפי סוג מכונה במסמכי התיעוד של Compute Engine.
בהתאמה, עיינו בקטע בחירת אפשרות הצריכה או בקטע בחירת סוג המכונה של ה-GPU.
בוחרים את סוג המכונה של ה-GPU
כדי לבחור את סוג מכונת ה-GPU למשימה ולהבין את הדרישות שלה, בצעו את השלבים הבאים:
בחירת סוג מכונה עם GPU: כדי לבדוק את סוגי המכונות עם GPU שזמינים (השילובים התקינים של סוג GPU, מספר יחידות ה-GPU וסוג המכונה (vCPUs וזיכרון)) ואת התרחישים לדוגמה שמומלצים להם, קראו את המאמרים סוגי מכונות עם GPU ומשפחת מכונות עם אופטימיזציה למאיצים במסמכי התיעוד של Compute Engine.
הבנת הדרישות של המשימה לסוג מכונת ה-GPU: השדות שנדרשים למשימה כדי לציין סוג מכונת GPU משתנים בהתאם לקטגוריות בטבלה הבאה:
סוגי מכונות GPU והדרישות שלהן לעבודה מעבדי GPU למכונות וירטואליות שמותאמות לאופטימיזציה של מאיצים: למכונות וירטואליות עם סוג מכונה ממשפחת המכונות שמותאמות לאופטימיזציה של מאיצים מצורפים באופן אוטומטי סוג ומספר ספציפיים של מעבדי ה-GPU האלה.
כדי להשתמש במעבדים גרפיים למכונות וירטואליות שעברו אופטימיזציה למאיצים, מומלץ לציין את סוג המכונה. כל סוג מכונה שעבר אופטימיזציה למאיצים תומך רק בסוג ובמספר ספציפיים של GPUs, כך שזה לא משנה אם תציינו את הערכים האלה בנוסף לסוג המכונה שעבר אופטימיזציה למאיצים.
באופן ספציפי, ב-Batch אפשר גם לציין רק את הסוג והמספר של ה-GPU למכונות וירטואליות שעברו אופטימיזציה למאיצים, אבל האפשרויות שמתקבלות ל-vCPU ולזיכרון הן בדרך כלל מוגבלות מאוד. לכן, מומלץ לוודא שהאפשרויות הזמינות של ה-vCPU והזיכרון תואמות לדרישות המשימה של המשימה.
מעבדי GPU למכונות וירטואליות מסוג N1: במעבדי ה-GPU האלה צריך לציין את הסוג והכמות שרוצים לצרף לכל מכונה וירטואלית, וצריך לצרף אותם למכונות וירטואליות עם סוג מכונה מסדרת המכונות N1.
כדי להשתמש במעבדי GPU למכונות וירטואליות מסוג N1, מומלץ לציין לפחות את סוג מעבדי ה-GPU ואת מספר מעבדי ה-GPU. חשוב לוודא ששילוב הערכים תואם לאחת מאפשרויות ה-GPU החוקיות לסוגי המכונות N1. אפשרויות ה-vCPU והזיכרון למכונות וירטואליות מסוג N1 שמשתמשות בסוג ובמספר ספציפיים של מעבדי GPU הן גמישות למדי. אם לא יוצרים את המשימה באמצעות מסוף Google Cloud , אפשר לאפשר ל-Batch לבחור באופן אוטומטי סוג מכונה שעומד בדרישות המשימה.
בוחרים את אפשרות הצריכה
בקטע הזה מוסבר איך לבחור את אפשרות הצריכה של משימה, ומהן הדרישות של המשימה לכל אפשרות.
בטבלה הבאה מוסברות אפשרויות הצריכה הזמינות ל-Batch והדרישות שלהן למשימות. בטבלה הבאה מפורטות אפשרויות הצריכה לפי תרחישי השימוש שלהן, מהאפשרות הכי זמינה ועד לאפשרות הכי פחות זמינה. חשוב לוודא שאפשרות הצריכה שבוחרים עומדת גם בדרישות שלכם לגבי תמחור, זמן ריצה ותמיכה בסוגי מכונות. למידע נוסף על בחירת אפשרות צריכה, קראו את המאמרים שיפור הזמינות של משאבים, הקצאת מודלים ב-Compute Engine ואפשרויות צריכה ב-AI Hypercomputer.
| אפשרויות צריכה ודרישות התפקיד שלהן | |
|---|---|
הזמנות
|
ב-Batch נעשה שימוש במקומות שמורים למשימות שיכולות לצרוך מכונות וירטואליות שמורות שלא בשימוש. למידע נוסף על דרישות המשימה לשימוש במקומות שמורים, ראו את הדף הבטחת זמינות המשאבים באמצעות מקומות שמורים של VM. |
הזמנות במצב תזמון
|
ב-Batch, המערכת משתמשת בהזמנות במצב תזמון למשימות שעומדות בכל התנאים הבאים:
|
מכונות וירטואליות מסוג Flex-start
|
ב-Batch, משתמשים ב-Flex-start VM למשימות שעומדות בכל התנאים הבאים:
|
על פי דרישה
|
כברירת מחדל, ב-Batch נעשה שימוש במשאבים על פי דרישה ברוב המשימות. כדי לוודא שהמשימה משתמשת בתמחור על פי דרישה, צריך לבצע את כל הפעולות הבאות:1
1חריג: במשימות שמשתמשות בסדרת המכונות A3, פעולת ברירת המחדל היא ייחודית, ואנחנו ממליצים לא להשתמש במכונות על פי דרישה ולא להשאיר את השדה |
מכונות וירטואליות במודל Spot
|
Batch משתמש ב-VM במודל Spot למשימות שעומדות בכל התנאים הבאים:
|
שלב 2: מתקינים את מנהלי ההתקנים של ה-GPU
כדי להשתמש במעבדי GPU למשימה, צריך להתקין את מנהלי ההתקנים של ה-GPU. כדי להתקין מנהלי התקנים של GPU, בוחרים באחת מהשיטות הבאות:
התקנה אוטומטית של מנהלי התקנים של GPU (מומלץ אם אפשר): כמו שמוצג בדוגמאות, כדי לאפשר ל-Batch לאחזר את מנהלי ההתקנים הנדרשים של GPU ממיקום של צד שלישי ולהתקין אותם בשבילכם, מגדירים את השדה
installGpuDriversשל המשימה לערךtrue. השיטה הזו מומלצת אם לא צריך להתקין מנהלי התקנים באופן ידני.אם אתם צריכים לציין את הגרסה של מנהל ההתקן של ה-GPU ש-Batch מתקין, אתם יכולים גם להגדיר את השדה
driverVersion.התקנה ידנית של מנהלי התקנים של GPU: צריך להשתמש בשיטה הזו אם מתקיים אחד מהתנאים הבאים:
- משימה משתמשת גם בסקריפט וגם באובייקטים שאפשר להריץ בקונטיינר, ואין לה גישה לאינטרנט. מידע נוסף על הגישה שיש למשימה מופיע במאמר סקירה כללית על רשתות ב-Batch.
- משימה שמשתמשת בתמונת VM בהתאמה אישית. במאמר סקירה כללית של סביבת מערכת ההפעלה של VM מוסבר בהרחבה על קובצי אימג' של מערכת ההפעלה של VM ועל קובצי האימג' של מערכת ההפעלה של VM שבהם אפשר להשתמש.
כדי להתקין ידנית את מנהלי ההתקנים הנדרשים של ה-GPU, מומלץ להשתמש בשיטה הבאה:
יוצרים קובץ אימג' בהתאמה אישית של מכונה וירטואלית שכולל את מנהלי ההתקנים של ה-GPU.
כדי להתקין מנהלי התקנים של GPU, מריצים סקריפט התקנה בהתאם למערכת ההפעלה שבה רוצים להשתמש:
אם במשימה יש אובייקטים שאפשר להריץ בקונטיינר והיא לא משתמשת במערכת הפעלה שמותאמת לקונטיינרים, צריך להתקין גם את ערכת הכלים של NVIDIA לקונטיינרים.
כשיוצרים ושולחים משימה שמשתמשת ב-GPU, מציינים את קובץ האימג' של המכונה הווירטואלית בהתאמה אישית שכולל את מנהלי ההתקנים של ה-GPU, ומגדירים את השדה
installGpuDriversשל המשימה לערךfalse(ברירת המחדל).
שלב 3: הגדרת משאבים תואמים של מכונות וירטואליות
במאמר משאבי משימה מוסבר על הדרישות והאפשרויות להגדרת משאבי ה-VM של משימה.
לסיכום, כשמגדירים את משאבי ה-VM למשימה שמשתמשת במעבדי GPU, צריך לבצע את כל הפעולות הבאות:
מוודאים שסוג המכונה של ה-GPU זמין במיקום של המכונות הווירטואליות של המשימה.
כדי לדעת איפה אפשר להשתמש בסוגי מכונות עם GPU, קראו את המאמר מיקומי GPU במאמרי העזרה של Compute Engine.
אם אתם מציינים את סוג המכונה של המשימה, ודאו שיש לה מספיק מעבדי vCPU וזיכרון לדרישות המשימה. צריך לציין את סוג המכונה של המשימה בכל פעם שיוצרים משימה באמצעות מסוף Google Cloud , ומומלץ לעשות את זה בכל פעם שיוצרים משימה שמשתמשת במעבדי GPU למכונות וירטואליות שמותאמות למאיצים.
חשוב להגדיר את משאבי ה-VM של המשימה באמצעות שיטה תקינה:
- להגדיר את משאבי ה-VM ישירות באמצעות השדה
instances[].policy(מומלץ אם אפשר). השיטה הזו מוצגת בדוגמאות. - הגדרת משאבי VM באמצעות תבנית, בעזרת השדה
instances[].instanceTemplate. השיטה הזו נדרשת כדי להתקין באופן ידני מנהלי התקנים של GPU באמצעות קובץ אימג' בהתאמה אישית. מידע נוסף זמין במאמר הגדרת משאבי משימה באמצעות תבנית של הגדרות מכונה של VM.
- להגדיר את משאבי ה-VM ישירות באמצעות השדה
יצירת משימה שמשתמשת ב-GPU
בקטעים הבאים מוסבר איך ליצור משימה לדוגמה לכל אחת מאפשרויות הצריכה. באופן ספציפי, המשימות לדוגמה משתמשות באפשרויות המומלצות: כולן מתקינות מנהלי התקנים של GPU באופן אוטומטי, וכולן מגדירות ישירות משאבי VM.
| אפשרות צריכה | הוראות לדוגמה למשימה |
|---|---|
| הזמנות או הזמנות במצב תזמון |
איך מוודאים שיהיו משאבים זמינים באמצעות שמירת מקום למכונות וירטואליות |
| מכונות וירטואליות מסוג Flex-start | |
| מכונות וירטואליות על פי דרישה או מכונות וירטואליות במודל Spot |
בוחרים באחת מהאפשרויות הבאות, בהתאם לסוג המכונה של ה-GPU: |
שימוש ב-GPU וב-Flex-start VM
אתם יכולים ליצור משימה שמשתמשת ב-GPUs למכונות וירטואליות מסוג A3 באמצעות מתזמן משימות לפריסת workload דינמית (DWS), דרך ה-CLI של gcloud או Batch API.
gcloud
יוצרים קובץ JSON שמתקין מנהלי התקנים של GPU, מציין סוג מכונה של GPU שתומך ב-Flex-start VM, חוסם הזמנות ופועל במיקום שתומך בסוג המכונה של ה-GPU.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת ב-Flex-start VM ובמעבדי GPU למכונות וירטואליות עם אופטימיזציה למאיצים, יוצרים קובץ JSON עם התוכן הבא.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel":"FLEX_START", "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש ב-GPU כלשהו במשימה הזו.
MACHINE_TYPE: סוג מכונה עם GPU שתומך ב-Flex-start VM. למידע נוסף, קראו את המאמר זמינות של אפשרויות צריכה לפי סוג מכונה במשאבי העזרה של Compute Engine.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
כדי ליצור ולהריץ את המשימה, משתמשים בפקודה
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשימה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
API
שולחים בקשת POST לmethod jobs.create שמתקינה מנהלי התקנים של GPU, מציינת סוג מכונה של GPU שתומך במכונות Flex-start VM, חוסמת הזמנות ופועלת במיקום שתומך בסוג המכונה של ה-GPU.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת במכונות וירטואליות מסוג Flex-start ובמעבדי GPU למכונות וירטואליות עם אופטימיזציה למאיצים, שולחים את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel":"FLEX_START",
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שלכם.
LOCATION: המיקום של המשימה.
JOB_NAME: שם המשימה.
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש במעבדי GPU במשימה הזו.
MACHINE_TYPE: סוג מכונה עם GPU שתומך ב-Flex-start VM. למידע נוסף, קראו את המאמר זמינות של אפשרויות צריכה לפי סוג מכונה במשאבי העזרה של Compute Engine.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
שימוש במעבדי GPU למכונות וירטואליות שעברו אופטימיזציה למאיצים
אתם יכולים ליצור משימה שמשתמשת ב-GPU למכונות וירטואליות עם אופטימיזציה למאיצים באמצעות מסוףGoogle Cloud , ה-CLI של gcloud, Batch API, Java, Node.js או Python.
המסוף
כדי ליצור משימה שמשתמשת ב-GPU באמצעות מסוף Google Cloud :
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על Create. נפתח הדף Create batch job. בחלונית הימנית, הדף Job details נבחר.
מגדירים את הדף Job details:
אופציונלי: בשדה Job name, משנים את שם המשימה.
לדוגמה, מזינים
example-gpu-job.מגדירים את הקטע Task details:
בחלון New runnable, מוסיפים לפחות סקריפט או קונטיינר אחד כדי להריץ את המשימה.
לדוגמה, כדי ליצור משימת סקריפט בסיסית:
מסמנים את התיבה סקריפט. מופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}.לוחצים על סיום.
בשדה Task count, מזינים את מספר המשימות של המשימה הזו.
לדוגמה, מזינים
3.אופציונלי: בשדה Parallelism, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת המחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. הדף מפרט המשאבים ייפתח.
בקטע VM provisioning model, בוחרים אחת מהאפשרויות הבאות לאפשרות הצריכה של המכונות הווירטואליות של המשימה:
אם המשימה שלכם יכולה לעמוד בהפקעה ואתם רוצים מכונות VM במודל Spot בהנחה, בחרו באפשרות Spot.
כדי להשתמש במכונות וירטואליות על פי דרישה, בוחרים באפשרות Standard (ברירת המחדל).
בוחרים את המיקום של המשימה.
בשדה Region, בוחרים אזור.
בשדה Zone, מבצעים אחת מהפעולות הבאות:
אם רוצים להגביל את המשימה כך שתרוץ רק באזור ספציפי, בוחרים אזור.
אחרת, בוחרים באפשרות כלשהו (ברירת המחדל).
בוחרים את סוג המכונה של ה-GPU למכונות הווירטואליות של המשימה:
באפשרויות של משפחת המכונות, לוחצים על GPUs.
בשדה GPU type, בוחרים את סוג ה-GPU. אחר כך, בשדה Number of GPUs, בוחרים את מספר יחידות ה-GPU לכל מכונה וירטואלית.
אם בחרתם באחד מסוגי ה-GPU למכונות וירטואליות עם אופטימיזציה למאיצים, בשדה Machine type תהיה רק אפשרות אחת לסוג המכונה, בהתאם לסוג ולמספר של יחידות ה-GPU שבחרתם.
כדי להתקין באופן אוטומטי מנהלי התקנים של GPU, בוחרים באפשרות GPU driver installation (ברירת המחדל).
מגדירים את כמות המשאבים של המכונה הווירטואלית שנדרשים לכל משימה:
בשדה Cores, מזינים את מספר ה-vCPUs לכל משימה.
לדוגמה, מזינים
1(ברירת המחדל).בשדה Memory, מזינים את כמות ה-RAM ב-GB לכל משימה.
לדוגמה, מזינים
0.5(ברירת המחדל).
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשימה.
אופציונלי: כדי לבדוק את הגדרות המשימה, לוחצים על Preview בחלונית הימנית.
לוחצים על יצירה.
בדף Job details מוצגת המשימה שיצרתם.
gcloud
יוצרים קובץ JSON שמתקין מנהלי התקנים של GPU, מציין סוג מכונה ממשפחת המכונות שמותאמות למאיצים ופועל במיקום שבו יש סוג מכונה עם GPU.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת במעבדי GPU למכונות וירטואליות שעברו אופטימיזציה למאיצים, יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel": "PROVISIONING_MODEL", "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש ב-GPU כלשהו במשימה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה:STANDARDלפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
MACHINE_TYPE: סוג מכונה ממשפחת המכונות שעברו אופטימיזציה למאיצים.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
כדי ליצור ולהריץ את המשימה, משתמשים בפקודה
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשימה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
API
שולחים בקשת POST ל-method jobs.create שמתקינה מנהלי התקנים של GPU, מציינת סוג מכונה ממשפחת המכונות שעברו אופטימיזציה למאיצים, ופועלת במיקום שבו נמצא סוג המכונה של ה-GPU.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת במעבדי GPU למכונות וירטואליות שעברו אופטימיזציה למאיצים, שולחים את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שלכם.
LOCATION: המיקום של המשימה.
JOB_NAME: שם המשימה.
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש ב-GPU כלשהו במשימה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה:STANDARDלפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
MACHINE_TYPE: סוג מכונה ממשפחת המכונות שעברו אופטימיזציה למאיצים.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
Java
Node.js
Python
שימוש ב-GPU במכונות וירטואליות מסוג N1
אתם יכולים ליצור משימה שמשתמשת ב-GPU למכונות וירטואליות מסוג N1 באמצעות מסוף Google Cloud , ה-CLI של gcloud, Batch API, Java, Node.js או Python.
המסוף
כדי ליצור משימה שמשתמשת ב-GPU באמצעות מסוף Google Cloud :
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על Create. נפתח הדף Create batch job. בחלונית הימנית, הדף Job details נבחר.
מגדירים את הדף Job details:
אופציונלי: בשדה Job name, משנים את שם המשימה.
לדוגמה, מזינים
example-gpu-job.מגדירים את הקטע Task details:
בחלון New runnable, מוסיפים לפחות סקריפט או קונטיינר אחד כדי להריץ את המשימה.
לדוגמה, כדי ליצור משימת סקריפט בסיסית:
מסמנים את התיבה סקריפט. מופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}.לוחצים על סיום.
בשדה Task count, מזינים את מספר המשימות של המשימה הזו.
לדוגמה, מזינים
3.אופציונלי: בשדה Parallelism, מזינים את מספר המשימות שרוצים להריץ בו-זמנית.
לדוגמה, מזינים
1(ברירת המחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. הדף מפרט המשאבים ייפתח.
בקטע VM provisioning model, בוחרים אחת מהאפשרויות הבאות לאפשרות הצריכה של המכונות הווירטואליות של המשימה:
אם המשימה שלכם יכולה לעמוד בהפקעה ואתם רוצים מכונות VM במודל Spot בהנחה, בחרו באפשרות Spot.
כדי להשתמש במכונות וירטואליות על פי דרישה, בוחרים באפשרות Standard (ברירת המחדל).
בוחרים את המיקום של המשימה.
בשדה Region, בוחרים אזור.
בשדה Zone, מבצעים אחת מהפעולות הבאות:
אם רוצים להגביל את המשימה כך שתרוץ רק באזור ספציפי, בוחרים אזור.
אחרת, בוחרים באפשרות כלשהו (ברירת המחדל).
בוחרים את סוג המכונה של ה-GPU למכונות הווירטואליות של המשימה:
באפשרויות של משפחת המכונות, לוחצים על GPUs.
בשדה GPU type, בוחרים את סוג ה-GPU.
אם בחרתם באחד מסוגי ה-GPU למכונות וירטואליות מסוג N1, השדה Series מוגדר ל-N1.
בשדה Number of GPUs, בוחרים את מספר יחידות ה-GPU לכל VM.
בשדה Machine type, בוחרים את סוג המכונה.
כדי להתקין באופן אוטומטי מנהלי התקנים של GPU, בוחרים באפשרות GPU driver installation (ברירת המחדל).
מגדירים את כמות המשאבים של המכונה הווירטואלית שנדרשים לכל משימה:
בשדה Cores, מזינים את מספר ה-vCPUs לכל משימה.
לדוגמה, מזינים
1(ברירת המחדל).בשדה Memory, מזינים את כמות ה-RAM ב-GB לכל משימה.
לדוגמה, מזינים
0.5(ברירת המחדל).
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשימה.
אופציונלי: כדי לבדוק את הגדרות המשימה, לוחצים על Preview בחלונית הימנית.
לוחצים על יצירה.
בדף Job details מוצגת המשימה שיצרתם.
gcloud
יוצרים קובץ JSON שמתקין את מנהלי ההתקנים של ה-GPU, מגדיר את שדות המשנה
typeו-countשל השדהaccelerators[], ופועל במיקום שבו נמצא סוג המכונה של ה-GPU.לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת במעבדי GPU למכונות וירטואליות מסוג N1 ומאפשרת ל-Batch לבחור את סוג המכונה המדויק של N1, יוצרים קובץ JSON עם התוכן הבא:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "installGpuDrivers": INSTALL_GPU_DRIVERS, "policy": { "provisioningModel": "PROVISIONING_MODEL", "reservation": "NO_RESERVATION", "accelerators": [ { "type": "GPU_TYPE", "count": GPU_COUNT } ] } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש ב-GPU כלשהו במשימה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה:STANDARDלפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
GPU_TYPE: סוג ה-GPU. אפשר להציג רשימה של סוגי ה-GPU הזמינים באמצעות הפקודהgcloud compute accelerator-types list. השדה הזה מיועד רק ל-GPUs למכונות וירטואליות מסוג N1.
GPU_COUNT: מספר יחידות ה-GPU מהסוג שצוין. למידע נוסף על האפשרויות החוקיות, ראו סוגי מכונות GPU לסדרת המכונות N1. השדה הזה מיועד רק ל-GPUs למכונות וירטואליות מסוג N1.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
כדי ליצור ולהריץ את המשימה, משתמשים בפקודה
gcloud batch jobs submit:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEמחליפים את מה שכתוב בשדות הבאים:
JOB_NAME: שם המשימה.
LOCATION: המיקום של המשימה.
JSON_CONFIGURATION_FILE: הנתיב לקובץ JSON עם פרטי ההגדרות של המשימה.
API
שולחים בקשת POST לשיטה jobs.create שמתקינה מנהלי התקנים של GPU, מגדירה את שדות המשנה type ו-count של השדה accelerators[] ומשתמשת במיקום שבו נמצא סוג המכונה של ה-GPU.
לדוגמה, כדי ליצור משימת סקריפט בסיסית שמשתמשת במעבדי GPU למכונות וירטואליות מסוג N1 ומאפשרת ל-Batch לבחור את הסוג המדויק של מכונת N1, שולחים את הבקשה הבאה:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}."
}
}
]
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"installGpuDrivers": INSTALL_GPU_DRIVERS,
"policy": {
"provisioningModel": "PROVISIONING_MODEL",
"reservation": "NO_RESERVATION",
"accelerators": [
{
"type": "GPU_TYPE",
"count": GPU_COUNT
}
]
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שלכם.
LOCATION: המיקום של המשימה.
JOB_NAME: שם המשימה.
INSTALL_GPU_DRIVERS: אם להתקין באופן אוטומטי מנהלי התקנים של GPU. אם הערך הואtrue, המערכת של Batch מאחזרת את מנהלי ההתקנים שנדרשים לסוג ה-GPU שציינתם בשדהpolicyממיקום של צד שלישי, ומתקינה אותם בשבילכם. אם מגדירים את השדה הזה לערךfalse(ברירת המחדל), צריך להתקין את מנהלי ההתקנים של ה-GPU באופן ידני כדי להשתמש ב-GPU כלשהו במשימה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה:STANDARDלפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
GPU_TYPE: סוג ה-GPU. אפשר להציג רשימה של סוגי ה-GPU הזמינים באמצעות הפקודהgcloud compute accelerator-types list. השדה הזה מיועד רק ל-GPUs למכונות וירטואליות מסוג N1.
GPU_COUNT: מספר יחידות ה-GPU מהסוג שצוין. מידע נוסף על האפשרויות התקינות זמין במאמר סוגי מכונות GPU לסדרת המכונות N1. השדה הזה מיועד רק ל-GPUs למכונות וירטואליות מסוג N1.
ALLOWED_LOCATIONS: המיקומים המותרים למשימה. מוודאים שבמיקום של משאבי Compute Engine של המשימה יש את סוג המכונה עם ה-GPU שרוצים להשתמש בו במשימה, באחת מהדרכים הבאות:- כברירת מחדל, אם משמיטים את השדה
allowedLocations[], המשימה פועלת במשאבי Compute Engine שנוצרו באזור של מיקום המשימה (LOCATION). - אם כוללים את השדה
allowedLocations[], אפשר להריץ את המשימה רק במשאבי Compute Engine שנוצרו במיקומים שצוינו.
- כברירת מחדל, אם משמיטים את השדה
Java
Node.js
Python
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, עיינו בקטע פתרון בעיות.
- הצגת משימות.
- מידע נוסף על אפשרויות ליצירת משימות