במאמר הזה נסביר איך להשתמש בהזמנות של Compute Engine כדי להבטיח ברמה גבוהה שלמשימות האימון שלכם ב-Serverless יהיו המשאבים הנדרשים של מכונות וירטואליות (VM) להרצה.
התכונה 'מקומות שמורים' היא תכונה של Compute Engine. הם עוזרים לוודא שמתי שתצטרכו יהיו לכם משאבים בשביל ליצור מכונות וירטואליות עם אותה חומרה (זיכרון ו-vCPU) ומשאבים אופציונליים (מעבדי CPU, מעבדי GPU, מעבדי TPU ודיסקים מקומיים של SSD).
כשיוצרים שמירת מקום, מערכת Compute Engine בודקת שהקיבולת המבוקשת זמינה בתחום (zone) שצוין. אם כן, מערכת Compute Engine שומרת את המשאבים, יוצרת את שמירת המקום ומתרחשים הדברים הבאים:
- אתם יכולים להשתמש במשאבים המוזמנים באופן מיידי, והם יישארו זמינים עד שתמחקו את ההזמנה.
- אתם מחויבים על המשאבים שהוזמנו באותו תעריף על פי דרישה כמו על מכונות וירטואליות פעילות, כולל הנחות רלוונטיות, עד למחיקת ההזמנה. אם מכונה וירטואלית צורכת מקום שמור, לא יחולו עליה חיובים נפרדים. החיוב מתבצע רק על המשאבים שלא נכללים בהזמנה, כמו דיסקים או כתובות IP. מידע נוסף זמין במאמר תמחור של הזמנות.
מגבלות ודרישות
כשמשתמשים בשמירת מקום ב-Compute Engine עם Agent Platform, חשוב להביא בחשבון את המגבלות והדרישות הבאות:
- ב-Agent Platform אפשר להשתמש בהזמנות רק עבור מעבדי CPU, מכונות וירטואליות עם GPU או TPU (גרסת טרום-השקה (Preview)).
- פלטפורמת הסוכנים לא יכולה להשתמש בהזמנות של מכונות וירטואליות שצורפו אליהן באופן ידני דיסקים לאחסון מתמיד (SSD) מקומי.
- השימוש בהזמנות של Compute Engine עם Agent Platform נתמך רק עבור אימון, הסקה ו-Gemini Enterprise Agent Platform Workbench (גרסת Preview) ללא שרתים ב-Gemini Enterprise Agent Platform.
- כדי שהמאפיינים של המכונה הווירטואלית בהזמנה יתאימו בדיוק לעומס העבודה של Agent Platform כדי לנצל את ההזמנה. לדוגמה, אם בהזמנה מצוין סוג מכונה
a2-ultragpu-8g, עומס העבודה של Agent Platform יכול להשתמש בהזמנה רק אם הוא גם משתמש בסוג מכונהa2-ultragpu-8g. דרישות - כדי להשתמש בהזמנה משותפת של מכונות וירטואליות עם GPU או TPU, צריך להשתמש בה דרך הפרויקט של הבעלים או דרך פרויקט צרכן שבו ההזמנה משותפת. איך עובד שיתוף ההזמנות.
- כדי לתמוך בעדכונים קבועים של פריסות Agent Platform, מומלץ להגדיל את מספר מכונות ה-VM לפחות במכונת VM אחת נוספת לכל פריסה בו-זמנית.
-
Flex Start for Dynamic Workload Scheduler והפעלת משימות אימון במשאב מתמשך נתמכים שניהם, למעט כשמשתמשים בהזמנות של Compute Engine עם אימון ב-Agent Platform.
חיוב
כשמשתמשים בהזמנות ב-Compute Engine, מתבצע חיוב על הפעולות הבאות:
- התמחור של Compute Engine עבור משאבי Compute Engine, כולל הנחות תמורת התחייבות לשימוש (CUD) שרלוונטיות. המחירון של Compute Engine
- עמלות על ניהול אימון ללא שרתים בפלטפורמת הסוכנים, בנוסף לשימוש בתשתית. מידע נוסף על התמחור של מודלים עם אימון בהתאמה אישית
לפני שמתחילים
- כדאי לעיין בדרישות ו בהגבלות בנוגע להזמנות.
- כדאי לעיין בדרישות המכסה וב הגבלות לגבי הזמנות משותפות.
התרת שימוש בהזמנה
לפני שמשתמשים בשמירת מקום למעבדי CPU, למכונות וירטואליות של GPU או ל-TPU, צריך להגדיר את מדיניות השיתוף שלה כדי לאפשר ל-Agent Platform להשתמש בשמירת המקום. כדי לעשות זאת, משתמשים באחת מהשיטות הבאות:
אפשר לצרוך תוכן במהלך יצירת הזמנה
כשיוצרים הזמנה לפרויקט יחיד או הזמנה משותפת של מכונות וירטואליות של GPU, אפשר לאפשר ל-Agent Platform להשתמש בהזמנה באופן הבא:
- אם אתם משתמשים במסוף, בקטע Google Cloud services בוחרים באפשרות Share reservation. Google Cloud
- אם אתם משתמשים ב-Google Cloud CLI, צריך לכלול את הדגל
--reservation-sharing-policyעם הערךALLOW_ALL. - אם אתם משתמשים ב-API בארכיטקטורת REST, עליכם לכלול בגוף הבקשה את השדה
serviceShareTypeעם הערךALLOW_ALL.
אפשר להשתמש בהזמנה קיימת
אפשר לשנות מקום שמור שנוצר באופן אוטומטי של מכונות וירטואליות עם GPU או TPU למקום שמור לעתיד רק אחרי שעת ההתחלה של המקום השמור.
כדי לאפשר ל-Agent Platform להשתמש בהזמנה קיימת, אפשר להשתמש באחת מהשיטות הבאות:
איך מוודאים שההזמנה מנוצלת
כדי לוודא שההזמנה מנוצלת, אפשר לעיין במאמר אימות ניצול ההזמנות במסמכי התיעוד של Compute Engine.יצירת משימת אימון בלי שרת (serverless) באמצעות מקום שמור
שימוש ב-REST API כדי ליצור משימת אימון ללא שרת בפלטפורמת Gemini Enterprise Agent שצורכת הזמנה של מכונות וירטואליות עם GPU ב-Compute Engine.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שבו יופעלו הקונטיינר או חבילת Python.
- PROJECT_ID: הפרויקט שבו נוצרה ההזמנה. כדי להשתמש בהזמנה משותפת מפרויקט אחר, צריך לשתף את ההזמנה עם הפרויקט הזה. מידע נוסף זמין במאמר בנושא שינוי פרויקטים צרכניים בהזמנה משותפת.
-
JOB_NAME: שדה חובה. שם מוצג ל
CustomJob. - MACHINE_TYPE: סוג המכונה שבה יש להשתמש למשימה. הגדרת ברירת המחדל היא
n1-standard-2. מידע נוסף על סוגי המכונות הנתמכים זמין במאמר בנושא הגדרת משאבי מחשוב לאימון מותאם אישית. - ACCELERATOR_TYPE: סוג המאיץ לצירוף למכונה. מידע נוסף על סוג ה-GPU שכל סוג מכונה תומך בו זמין במאמר מעבדי GPU לעומסי עבודה של מחשוב.
- ACCELERATOR_COUNT: מספר המאיצים לצירוף למכונה.
- מגדירים את משימת האימון בהתאמה אישית:
RESERVATION_AFFINITY_TYPE: הערך חייב להיות
ANY_RESERVATION,SPECIFIC_RESERVATIONאוNO_RESERVATION.-
ANY_RESERVATIONאומר שהמכונות הווירטואליות שלcustomJobיכולות להשתמש באופן אוטומטי בכל הזמנה עם מאפיינים תואמים. -
SPECIFIC_RESERVATIONאומר שהמכונות הווירטואליות שלcustomJobיכולות להשתמש רק בפרטי בקשה שהמכונות הווירטואליות מיועדות ספציפית אליהם לפי שם. - הערך
NO_RESERVATIONמציין שהמכונות הווירטואליות שלcustomJobלא יכולות לצרוך הזמנה. הגדרתNO_RESERVATIONזהה להשמטת הגדרת שיוך להזמנה.
-
- ZONE: האזור שבו נוצרה ההזמנה.
- RESERVATION_NAME: השם של ההזמנה.
- DISK_TYPE: אופציונלי. סוג דיסק האתחול שבו רוצים להשתמש למשימה, או
pd-standard(ברירת מחדל) אוpd-ssd. מידע נוסף על סוגי דיסקים - DISK_SIZE: אופציונלי. הגודל ב-GB של דיסק האתחול שבו יש להשתמש עבור העבודה. ערך ברירת המחדל הוא 100.
- REPLICA_COUNT: מספר העותקים המשוכפלים של העובדים לשימוש. ברוב המקרים, צריך להגדיר את הערך הזה ל-
1עבור מאגר העובדים הראשון. - אם אפליקציית האימון פועלת בקונטיינר בהתאמה אישית, צריך לציין את הפרטים הבאים:
- CUSTOM_CONTAINER_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר ב-Artifact Registry או ב-Docker Hub, שיופעל בכל עותק משוכפל של העובד.
- CUSTOM_CONTAINER_COMMAND: אופציונלי. הפקודה שתופעל כשהקונטיינר יופעל. הפקודה הזו מבטלת את נקודת הכניסה שמוגדרת כברירת מחדל במאגר.
- CUSTOM_CONTAINER_ARGS: אופציונלי. הארגומנטים שיועברו כשמפעילים את הקונטיינר.
- אם אפליקציית האימון היא חבילת Python שפועלת בקונטיינר מוכן מראש,
מציינים את הפרטים הבאים:
- EXECUTOR_IMAGE_URI: ה-URI של קובץ אימג' של קונטיינר שמריץ את הקוד שסופק. אפשר לעיין במאגרי התגים המוכנים מראש שזמינים לאימון.
- PYTHON_PACKAGE_URIS: רשימה מופרדת בפסיקים של URI של Cloud Storage שמציינים את קובצי חבילת Python שהם תוכנית האימון והחבילות התלויות שלה. המספר המקסימלי של כתובות URI של חבילות הוא 100.
- PYTHON_MODULE: השם של מודול Python להפעלה אחרי התקנת החבילות.
- PYTHON_PACKAGE_ARGS: אופציונלי. ארגומנטים בשורת הפקודה שיועברו למודול Python.
- TIMEOUT: אופציונלי. זמן הריצה המקסימלי של העבודה.
- מציינים את התוויות LABEL_NAME ו-LABEL_VALUE שרוצים להוסיף למשרה המותאמת אישית.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs
גוף בקשת JSON:
{
"displayName": "JOB_NAME",
"jobSpec": {
"workerPoolSpecs": [
{
"machineSpec": {
"machineType": "MACHINE_TYPE",
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT,
"reservationAffinity": {
"reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
// Use the following key and values only if
// the reservationAffinityType is SPECIFIC_RESERVATION.
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
]
},
},
"replicaCount": REPLICA_COUNT,
"diskSpec": {
"bootDiskType": DISK_TYPE,
"bootDiskSizeGb": DISK_SIZE
},
// Union field task can be only one of the following:
"containerSpec": {
"imageUri": CUSTOM_CONTAINER_IMAGE_URI,
"command": [
CUSTOM_CONTAINER_COMMAND
],
"args": [
CUSTOM_CONTAINER_ARGS
]
},
"pythonPackageSpec": {
"executorImageUri": EXECUTOR_IMAGE_URI,
"packageUris": [
PYTHON_PACKAGE_URIS
],
"pythonModule": PYTHON_MODULE,
"args": [
PYTHON_PACKAGE_ARGS
]
}
// End of list of possible types for union field task.
}
// Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
// for distributed training.
],
"scheduling": {
"timeout": TIMEOUT
}
},
"labels": {
LABEL_NAME_1": LABEL_VALUE_1,
LABEL_NAME_2": LABEL_VALUE_2
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content
התשובה מכילה מידע על המפרטים וגם על TRAININGPIPELINE_ID.
המאמרים הבאים
- מידע נוסף על הזמנות של משאבים אזוריים ב-Compute Engine
- איך משתמשים במקומות שמורים עם הסקת מסקנות אונליין ב-Agent Platform
- איך משתמשים בהזמנות עם הסקת מסקנות באצווה ב-Agent Platform
- איך רואים את ההזמנות
- איך עוקבים אחרי השימוש בהזמנות