במאמר הזה מוסבר איך ליצור ולהריץ משימה שמשתמשת ביחידת עיבוד גרפי (GPU). מידע נוסף על התכונות וההגבלות של יחידות GPU זמין במאמר מידע על יחידות GPU במאמרי העזרה של Compute Engine.
כשיוצרים עבודת Batch, אפשר להשתמש במעבדי GPU כדי להאיץ עומסי עבודה ספציפיים. תרחישי שימוש נפוצים למשימות שמשתמשות ב-GPU כוללים עיבוד נתונים אינטנסיבי ועומסי עבודה של בינה מלאכותית (AI), כמו למידת מכונה (ML).
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
יצירת משימה שמשתמשת ב-GPU
כדי ליצור משימה שמשתמשת במעבדי GPU:
- תכנון הדרישות של משימה שמשתמשת ביחידות GPU.
- יוצרים משרה עם הדרישות והשיטות שזיהיתם. דוגמאות ליצירת משימה באמצעות האפשרויות המומלצות מופיעות במאמר יצירת משימה לדוגמה שמשתמשת ב-GPU במסמך הזה.
תכנון הדרישות למשרה שבה נעשה שימוש ב-GPU
לפני שיוצרים משימה שמשתמשת במעבדי GPU, צריך לתכנן את הדרישות של המשימה כמו שמוסבר בקטעים הבאים:
- בחירת סוג מכונת ה-GPU ואפשרות הצריכה
- התקנת מנהלי ההתקן של ה-GPU
- הגדרת משאבי מכונות וירטואליות תואמים
שלב 1: בוחרים את סוג מכונת ה-GPU ואת אפשרות הצריכה
הדרישות של עבודה משתנות בהתאם לסוג המועדף של מכונת ה-GPU ולאפשרות הצריכה, והאפשרויות של כל אחת מהן עשויות להיות תלויות זו בזו.
כדי לבחור את סוג המכונה עם GPU ואת אפשרות הצריכה של העבודה, מבצעים את השלבים הבאים:
מזהים את העדיפות שלכם ובוחרים אותה:
- אם רוצים לתת עדיפות לביצועים ולתמחור לפי בסיס, אפשר לעיין בקטע בחירת סוג מכונת GPU במסמך הזה.
- אם אתם רוצים לתת עדיפות לזמינות משאבים או להנחות, כדאי לעיין בקטע בחירת אפשרות הצריכה במסמך הזה.
את שאר הבחירות עושים על סמך מה שתואם לבחירה הראשונה.
כדי לזהות את האפשרויות שתואמות לבחירה הראשונה, אפשר לעיין במאמר זמינות אפשרויות הצריכה לפי סוג המכונה במסמכי Compute Engine.
בקטע שנותר, בוחרים באפשרות Select the consumption option או באפשרות Select the GPU machine type, בהתאם.
בחירת סוג מכונת ה-GPU
כדי לבחור את סוג המכונה עם GPU לעבודה ולהבין את הדרישות שלה, מבצעים את השלבים הבאים:
בחירת סוג מכונת GPU: כדי לעיין בסוגי מכונות GPU הזמינים (השילובים התקפים של סוג ה-GPU, מספר יחידות ה-GPU וסוג המכונה (vCPU וזיכרון)) ובתרחישים המומלצים לשימוש בהם, אפשר לעיין במאמרים סוגי מכונות GPU ומשפחת מכונות שעברו אופטימיזציה להאצת ביצועים במסמכי התיעוד של Compute Engine.
הבנת דרישות העבודה לסוג המכונה עם GPU: השדות שנדרשים לעבודה כדי לציין סוג מכונה עם GPU משתנים בהתאם לקטגוריות שבטבלה הבאה:
סוגי מכונות GPU והדרישות שלהן לעבודות GPUs for accelerator-optimized VMs: VMs with a סוג מכונה from the משפחת מכונות accelerator-optimized have a specific type and number of these GPUs automatically attached.
כדי להשתמש ביחידות GPU במכונות וירטואליות שעברו אופטימיזציה להאצה, מומלץ לציין את סוג המכונה. כל סוג מכונה שעבר אופטימיזציה לשימוש במאיץ תומך רק בסוג ובמספר ספציפיים של יחידות GPU, ולכן אין הבדל בין אם מציינים את הערכים האלה בנוסף לסוג המכונה שעבר אופטימיזציה לשימוש במאיץ ובין אם לא.
באופן ספציפי, Batch תומך גם בציון רק של הסוג ומספר יחידות ה-GPU למכונות וירטואליות שעברו אופטימיזציה להאצה, אבל אפשרויות הזיכרון וה-vCPU שמתקבלות לרוב מוגבלות מאוד. לכן, מומלץ לוודא שאפשרויות ה-vCPU והזיכרון שזמינות תואמות לדרישות המשימה של העבודה.
מעבדי GPU למכונות וירטואליות מסוג N1: כדי להשתמש במעבדי GPU האלה, צריך לציין את הסוג והכמות שלהם לכל מכונה וירטואלית, והם חייבים להיות מצורפים למכונות וירטואליות עם סוג מכונה מסדרת המכונות N1.
כדי להשתמש ב-GPU במכונות וירטואליות מסוג N1, מומלץ לציין לפחות את סוג ה-GPU ואת מספר ה-GPU. צריך לוודא שהשילוב של הערכים תואם לאחת מאפשרויות ה-GPU התקפות לסוגי מכונות N1. אפשרויות ה-vCPU והזיכרון למכונות וירטואליות מסוג N1 שמשתמשות בכל סוג ספציפי של GPU ובכל מספר של GPU הן די גמישות. אלא אם יוצרים את העבודה באמצעות מסוף Google Cloud , אפשר לאפשר ל-Batch לבחור באופן אוטומטי סוג מכונה שעומד בדרישות המשימה של העבודה.
בחירת אפשרות הצריכה
בקטע הזה מוסבר איך בוחרים את אפשרות הצריכה של משימה, ומהן הדרישות של כל אפשרות.
בטבלה הבאה מוסברות האפשרויות הזמינות לשימוש ב-Batch והדרישות שלהן. האפשרויות מפורטות לפי תרחישי השימוש שלהן: מהאפשרות עם זמינות המשאבים הגבוהה ביותר ועד לאפשרות עם הזמינות הנמוכה ביותר.
לסיכום, אנחנו ממליצים לרוב המשתמשים לבחור באפשרות התשלום לפי שימוש עבור משימה באופן הבא:
- אלא אם אחד מהתנאים האחרים מתקיים, כדאי להשתמש במכונות וירטואליות עם תשלום גמיש (מומלץ, אם הן עונות על הדרישות) או במכונות וירטואליות לפי דרישה.
- אם אתם צריכים לוודא שהמשאבים יהיו זמינים, או אם יש לכם הזמנות שלא נעשה בהן שימוש ואתם לא יכולים למחוק אותן, כדאי להשתמש בהזמנות במצב לוח שנה (מומלץ, אם זה עונה על הדרישות שלכם) או בהזמנות.
- (אופציונלי) אם עומס העבודה שלכם סובל תקלות, יכול להיות שתוכלו להקטין את העלויות באמצעות שימוש במכונות וירטואליות מסוג Spot.
| אפשרויות הצריכה והדרישות שלהן | |
|---|---|
הזמנות
|
Batch משתמש בהזמנות למשימות שיכולות לצרוך מכונות וירטואליות שמורות שלא נמצאות בשימוש. מידע נוסף על הדרישות להפעלת עבודות עם הזמנות זמין במאמר איך מוודאים שהמשאבים זמינים באמצעות הזמנות של מכונות וירטואליות. |
הזמנות במצב יומן
|
Batch משתמש בהזמנות במצב יומן למשימות שמתקיימים בהן כל התנאים הבאים:
|
מכונות וירטואליות עם הפעלה גמישה
|
ב-Batch נעשה שימוש במכונות וירטואליות מסוג Flex-start למשימות שעומדות בכל הקריטריונים הבאים:
|
על פי דרישה
|
כברירת מחדל, Batch משתמש בשיטת התשלום על פי דרישה עבור רוב המשימות האחרות. אם רוצים לוודא שעבודה מסוימת תשתמש בשיטת התשלום לפי דרישה, צריך לבצע את כל הפעולות הבאות:1
1יוצא מן הכלל: במשימות שמשתמשות בסדרת מכונות A3, התנהגות ברירת המחדל היא ייחודית, ולא מומלץ להשתמש במכונות לפי דרישה או להשאיר את השדה |
Spot VMs
|
מערכת Batch משתמשת במכונות וירטואליות במודל Spot למשימות שעומדות בכל הקריטריונים הבאים:
|
שלב 2: מתקינים את מנהלי ההתקנים של ה-GPU
כדי להשתמש ב-GPU למשימה, צריך להתקין את מנהלי ההתקנים (דרייברים) של ה-GPU. כדי להתקין מנהלי התקנים של GPU, בוחרים באחת מהשיטות הבאות:
התקנה אוטומטית של מנהלי התקנים של GPU (מומלץ אם אפשר): כמו שמוצג בדוגמאות, כדי לאפשר ל-Batch לאחזר את מנהלי ההתקנים הנדרשים של GPU ממיקום של צד שלישי ולהתקין אותם בשמכם, צריך להגדיר את השדה
installGpuDriversשל העבודה לערךtrue. מומלץ להשתמש בשיטה הזו אם אתם לא צריכים להתקין מנהלי התקנים באופן ידני.אופציונלי: אם אתם צריכים לציין איזו גרסה של מנהל התקן ה-GPU תותקן על ידי Batch, אתם יכולים להגדיר גם את השדה
driverVersion.התקנה ידנית של מנהלי התקנים (דרייברים) של GPU: השיטה הזו נדרשת אם מתקיים אחד מהתנאים הבאים:
- עבודה משתמשת גם בסקריפט וגם ב-runnables של מאגר תגים, ואין לה גישה לאינטרנט. מידע נוסף על הגישה שיש לעבודות זמין במאמר סקירה כללית על רשתות Batch.
- עבודות משתמשות באימג' מותאם אישית של מכונה וירטואלית. מידע נוסף על תמונות של מערכות הפעלה של מכונות וירטואליות ועל תמונות של מערכות הפעלה של מכונות וירטואליות שבהן אפשר להשתמש זמין במאמר סקירה כללית של סביבת מערכת ההפעלה של מכונות וירטואליות.
כדי להתקין ידנית את הדרייברים הנדרשים של ה-GPU, מומלץ להשתמש בשיטה הבאה:
יוצרים תמונה של מכונה וירטואלית בהתאמה אישית שכוללת את מנהלי ההתקנים של ה-GPU.
כדי להתקין דרייברים של GPU, מריצים סקריפט התקנה על סמך מערכת ההפעלה שבה רוצים להשתמש:
אם יש עבודות שניתנות להרצה בקונטיינר ולא נעשה בהן שימוש ב-מערכת הפעלה שמותאמת לקונטיינרים, צריך גם להתקין את NVIDIA Container Toolkit.
כשיוצרים ושולחים משימה שמשתמשת ב-GPU, צריך לציין את תמונת המכונה הווירטואלית בהתאמה אישית שכוללת את מנהלי ההתקנים (דרייברים) של ה-GPU, ולהגדיר את השדה
installGpuDriversשל המשימה לערךfalse(ברירת מחדל).
שלב 3: הגדרת משאבי מכונות וירטואליות תואמים
מידע על הדרישות והאפשרויות להגדרת משאבי מכונה וירטואלית עבור משימה זמין במאמר משאבי משימה.
לסיכום, כשמגדירים את משאבי המכונה הווירטואלית לעבודות שמשתמשות במעבדי GPU, צריך לבצע את כל הפעולות הבאות:
מוודאים שסוג המכונה של ה-GPU זמין במיקום של המכונות הווירטואליות של העבודה.
כדי לדעת איפה זמינים סוגי מכונות עם GPU, אפשר לעיין במאמר מיקומי GPU במאמרי העזרה של Compute Engine.
אם מציינים את סוג המכונה של העבודה, צריך לוודא שלסוג המכונה יש מספיק vCPU וזיכרון לדרישות המשימה של העבודה. כשיוצרים משימה באמצעות מסוף Google Cloud , צריך לציין את סוג המכונה של המשימה. מומלץ לציין את סוג המכונה גם כשיוצרים משימה שמשתמשת ביחידות GPU למכונות וירטואליות שעברו אופטימיזציה להאצת ביצועים.
חשוב להגדיר את משאבי ה-VM למשימה באמצעות שיטה תקינה:
- הגדרה ישירה של משאבי ה-VM באמצעות השדה
instances[].policy(מומלץ אם אפשר). המתודה הזו מופיעה בדוגמאות. - מגדירים משאבי VM באמצעות תבנית בשדה
instances[].instanceTemplate. השיטה הזו נדרשת כדי להתקין ידנית מנהלי התקנים של GPU באמצעות תמונה מותאמת אישית. מידע נוסף זמין במאמר הגדרת משאבי עבודה באמצעות תבנית של הגדרות מכונה וירטואלית.
- הגדרה ישירה של משאבי ה-VM באמצעות השדה
יצירת דוגמה למשימה שמשתמשת ב-GPU
בקטעים הבאים מוסבר איך ליצור עבודת לדוגמה לכל אחת מאפשרויות הצריכה. באופן ספציפי, המשימות לדוגמה משתמשות באפשרויות המומלצות: כל מנהלי ההתקנים של ה-GPU מותקנים אוטומטית, וכל משאבי המכונות הווירטואליות מוגדרים ישירות.
| אפשרות צריכה | הוראות לדוגמה למשימה |
|---|---|
| הזמנות או הזמנות במצב יומן |
איך מוודאים שהמשאבים זמינים באמצעות הזמנות של מכונות וירטואליות |
| מכונות וירטואליות עם הפעלה גמישה |
שימוש במעבדים גרפיים (GPU) ובמכונות וירטואליות עם הפעלה גמישה (Flex-start) |
| מכונות וירטואליות לפי דרישה או מכונות וירטואליות במודל Spot |
בוחרים באחת מהאפשרויות הבאות בהתאם לסוג מכונת ה-GPU: |
שימוש ביחידות GPU ובמכונות וירטואליות מסוג Flex-start
אתם יכולים ליצור משימה שמשתמשת ב-GPU למכונות וירטואליות מסוג A3 באמצעות Dynamic Workload Scheduler באמצעות ה-CLI של gcloud או Batch API.
gcloud
יוצרים קובץ JSON שמתקין מנהלי התקנים של GPU, מציין סוג מכונת 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":"FLEX_START", "machineType": "MACHINE_TYPE", "reservation": "NO_RESERVATION" } } ], "location": { "allowedLocations": [ "ALLOWED_LOCATIONS" ] } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }מחליפים את מה שכתוב בשדות הבאים:
INSTALL_GPU_DRIVERS: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ביחידות GPU בעבודה הזו.
MACHINE_TYPE: סוג מכונה עם GPU שתומך במכונות וירטואליות עם Flex-start. מידע נוסף זמין במאמר זמינות של אפשרויות צריכה לפי סוג מכונה במאמרי העזרה של Compute Engine.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של המשרה מוצע סוג מכונת ה-GPU.
כדי ליצור ולהריץ את העבודה, משתמשים בפקודה
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, מציינת סוג מכונת 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":"FLEX_START",
"machineType": "MACHINE_TYPE",
"reservation": "NO_RESERVATION"
}
}
],
"location": {
"allowedLocations": [
"ALLOWED_LOCATIONS"
]
}
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שלכם.
LOCATION: המיקום של המשרה.
JOB_NAME: שם המשימה.
INSTALL_GPU_DRIVERS: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ב-GPU כלשהו לעבודה הזו.
MACHINE_TYPE: סוג מכונה עם GPU שתומך במכונות וירטואליות עם Flex-start. מידע נוסף זמין במאמר זמינות של אפשרויות צריכה לפי סוג מכונה במאמרי העזרה של Compute Engine.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של המשרה מוצע סוג מכונת ה-GPU.
שימוש במעבדי GPU למכונות וירטואליות שעברו אופטימיזציה למאיצים
אפשר ליצור משימה שמשתמשת במעבדי GPU למכונות וירטואליות שעברו אופטימיזציה להאצה באמצעותGoogle Cloud המסוף, ה-CLI של gcloud, Batch API, Java, Node.js או Python.
המסוף
כדי ליצור משימה שמשתמשת ביחידות GPU באמצעות מסוף Google Cloud :
נכנסים לדף Job list במסוף Google Cloud .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף Job details:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-gpu-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, כדי ליצור עבודת סקריפט בסיסית:
מסמנים את תיבת הסימון Script (סקריפט). יופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.אופציונלי: בשדה מקביליות, מזינים את מספר המשימות להפעלה בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. ייפתח הדף מפרטי משאבים.
בקטע VM provisioning model בוחרים באחת מהאפשרויות הבאות בשדה consumption option עבור מכונות וירטואליות של העבודה הזו:
אם העבודה שלכם יכולה לעמוד בפני קדימות ואתם רוצים מכונות וירטואליות מסוג Spot עם הנחה, בוחרים באפשרות Spot.
אחרת, כדי להשתמש במכונות וירטואליות לפי דרישה, בוחרים באפשרות רגילה (ברירת מחדל).
בוחרים את המיקום של המשרה.
בשדה אזור, בוחרים אזור.
בשדה Zone (אזור), מבצעים אחת מהפעולות הבאות:
אם רוצים להגביל את ההרצה של המשימה לאזור ספציפי בלבד, בוחרים אזור.
אחרת, בוחרים באפשרות כל (ברירת מחדל).
בוחרים את סוג מכונת ה-GPU למכונות הווירטואליות של העבודה הזו:
באפשרויות של משפחת המכונות, לוחצים על GPUs (מעבדי GPU).
בשדה סוג ה-GPU, בוחרים את סוג ה-GPU. אחר כך, בשדה Number of GPUs (מספר יחידות ה-GPU), בוחרים את מספר יחידות ה-GPU לכל מכונה וירטואלית.
אם בחרתם באחד מסוגי ה-GPU של מכונות וירטואליות שעברו אופטימיזציה להאצה, בשדה Machine type תהיה רק אפשרות אחת לסוג המכונה, בהתאם לסוג ולמספר ה-GPU שבחרתם.
כדי להתקין מנהלי התקנים של GPU באופן אוטומטי, בוחרים באפשרות GPU driver installation (התקנת מנהלי התקנים של GPU) (ברירת מחדל).
מגדירים את כמות משאבי המכונה הווירטואלית שנדרשת לכל משימה:
בשדה Cores, מזינים את מספר vCPUs לכל משימה.
לדוגמה, מזינים
1(ברירת מחדל).בשדה Memory (זיכרון), מזינים את כמות ה-RAM ב-GB לכל משימה.
לדוגמה, מזינים
0.5(ברירת מחדל).
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
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: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ביחידות GPU בעבודה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה: STANDARDלשימוש לפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
MACHINE_TYPE: סוג מכונה מתוך משפחת המכונות שעברו אופטימיזציה למאיצים.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של העבודה מוצע סוג מכונת ה-GPU.
כדי ליצור ולהריץ את העבודה, משתמשים בפקודה
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, מציינת סוג מכונה מתוך משפחת המכונות שעברו אופטימיזציה למאיצים ופועלת במיקום שבו יש סוג מכונת 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: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ב-GPU כלשהו לעבודה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה: STANDARDלשימוש לפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
MACHINE_TYPE: סוג מכונה ממשפחת המכונות שעברו אופטימיזציה למאיצים.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של המשרה מוצע סוג מכונת ה-GPU.
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 .
לוחצים על יצירה. ייפתח הדף יצירת משימה באצווה. בחלונית הימנית, הדף פרטי המשרה מסומן.
מגדירים את הדף Job details:
אופציונלי: בשדה שם המשרה, אפשר להתאים אישית את שם המשרה.
לדוגמה, מזינים
example-gpu-job.מגדירים את הקטע פרטי המשימה:
בחלון New runnable, מוסיפים לפחות סקריפט אחד או קונטיינר אחד כדי שהעבודה הזו תפעל.
לדוגמה, כדי ליצור עבודת סקריפט בסיסית:
מסמנים את תיבת הסימון Script (סקריפט). יופיע שדה.
בשדה, מזינים את הסקריפט הבא:
echo Hello world from task ${BATCH_TASK_INDEX}.לוחצים על סיום.
בשדה מספר המשימות, מזינים את מספר המשימות של העבודה הזו.
לדוגמה, מזינים
3.אופציונלי: בשדה מקביליות, מזינים את מספר המשימות להפעלה בו-זמנית.
לדוגמה, מזינים
1(ברירת מחדל).
מגדירים את הדף Resource specifications:
בחלונית הימנית, לוחצים על מפרטי משאבים. ייפתח הדף מפרטי משאבים.
בקטע VM provisioning model בוחרים באחת מהאפשרויות הבאות בשדה consumption option עבור מכונות וירטואליות של העבודה הזו:
אם העבודה שלכם יכולה לעמוד בפני קדימות ואתם רוצים מכונות וירטואליות מסוג Spot עם הנחה, בוחרים באפשרות Spot.
אחרת, כדי להשתמש במכונות וירטואליות לפי דרישה, בוחרים באפשרות רגילה (ברירת מחדל).
בוחרים את המיקום של המשרה.
בשדה אזור, בוחרים אזור.
בשדה Zone (אזור), מבצעים אחת מהפעולות הבאות:
אם רוצים להגביל את ההרצה של המשימה לאזור ספציפי בלבד, בוחרים אזור.
אחרת, בוחרים באפשרות כל (ברירת מחדל).
בוחרים את סוג מכונת ה-GPU למכונות הווירטואליות של העבודה הזו:
באפשרויות של משפחת המכונות, לוחצים על GPUs (מעבדי GPU).
בשדה סוג ה-GPU, בוחרים את סוג ה-GPU.
אם בחרתם באחד מסוגי ה-GPU למכונות וירטואליות מסוג N1, השדה Series מוגדר ל-N1.
בשדה Number of GPUs (מספר יחידות ה-GPU), בוחרים את מספר יחידות ה-GPU לכל מכונה וירטואלית.
בשדה Machine type (סוג המכונה), בוחרים את סוג המכונה.
כדי להתקין מנהלי התקנים של GPU באופן אוטומטי, בוחרים באפשרות GPU driver installation (התקנת מנהלי התקנים של GPU) (ברירת מחדל).
מגדירים את כמות משאבי המכונה הווירטואלית שנדרשת לכל משימה:
בשדה Cores, מזינים את מספר vCPUs לכל משימה.
לדוגמה, מזינים
1(ברירת מחדל).בשדה Memory (זיכרון), מזינים את כמות ה-RAM ב-GB לכל משימה.
לדוגמה, מזינים
0.5(ברירת מחדל).
לוחצים על סיום.
אופציונלי: מגדירים את השדות האחרים של המשרה.
אופציונלי: כדי לבדוק את הגדרות העבודה, בחלונית הימנית לוחצים על תצוגה מקדימה.
לוחצים על יצירה.
בדף פרטי המשרה מוצגת המשרה שיצרתם.
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: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ביחידות GPU בעבודה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה: STANDARDלשימוש לפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
GPU_TYPE: סוג ה-GPU. אפשר לראות רשימה של סוגי ה-GPU הזמינים באמצעות הפקודהgcloud compute accelerator-types list. השדה הזה משמש רק ל-GPU במכונות וירטואליות מסוג N1.
GPU_COUNT: מספר יחידות ה-GPU מהסוג שצוין. מידע נוסף על האפשרויות הזמינות מופיע במאמר סוגי מכונות עם GPU בסדרת מכונות N1. השדה הזה משמש רק ל-GPU במכונות וירטואליות מסוג N1.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של העבודה מוצע סוג מכונת ה-GPU.
כדי ליצור ולהריץ את העבודה, משתמשים בפקודה
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: אם מגדירים את הערךtrue, Batch מאחזר את מנהלי ההתקנים שנדרשים לסוג ה-GPU שצוין בשדהpolicyממיקום של צד שלישי, ומתקין אותם בשמכם. אם מגדירים את השדה הזה לערךfalse(ברירת מחדל), צריך להתקין מנהלי התקנים (דרייברים) של GPU באופן ידני כדי להשתמש ביחידות GPU בעבודה הזו.
PROVISIONING_MODEL: מודל ההקצאה של אפשרות הצריכה: STANDARDלשימוש לפי דרישה אוSPOTלמכונות וירטואליות במודל Spot.
GPU_TYPE: סוג ה-GPU. אפשר לראות רשימה של סוגי ה-GPU הזמינים באמצעות הפקודהgcloud compute accelerator-types list. השדה הזה משמש רק ל-GPU במכונות וירטואליות מסוג N1.
GPU_COUNT: מספר יחידות ה-GPU מהסוג שצוין. מידע נוסף על האפשרויות הזמינות מפורט במאמר סוגי מכונות עם GPU בסדרת מכונות N1. השדה הזה משמש רק ל-GPU במכונות וירטואליות מסוג N1.
ALLOWED_LOCATIONS: אפשר להשתמש באפשרותallowedLocations[]כדי לציין אזור או אזורים ספציפיים באזור שבו מותר להפעיל את המכונות הווירטואליות של העבודה. לדוגמה,regions/us-central1מאפשרת את כל האזורים באזורus-central1. חשוב לציין מיקומים שבהם זמין סוג מכונת ה-GPU שרוצים להשתמש בו בעבודה הזו. אחרת, אם לא מציינים את השדה הזה, צריך לוודא שבמיקום של המשרה מוצע סוג מכונת ה-GPU.
Java
Node.js
Python
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- הצגת משרות ומשימות.
- מידע נוסף על אפשרויות ליצירת משרות