במאמר הזה נסביר איך להשתמש בהזמנות של Compute Engine כדי להבטיח ברמה גבוהה שלמשימות ההסקה באצווה יש את המשאבים הווירטואליים (VM) הדרושים להרצה.
התכונה 'מקומות שמורים' היא תכונה של Compute Engine. הם עוזרים לוודא שמתי שתצטרכו יהיו לכם משאבים בשביל ליצור מכונות וירטואליות עם אותה חומרה (זיכרון ו-vCPU) ומשאבים אופציונליים (מעבדי CPU, יחידות GPU, יחידות TPU ודיסקים מקומיים של SSD).
כשיוצרים שמירת מקום, מערכת Compute Engine בודקת שהקיבולת המבוקשת זמינה בתחום (zone) שצוין. אם כן, מערכת Compute Engine שומרת את המשאבים, יוצרת את שמירת המקום וקורה הדבר הבא:
- אתם יכולים להשתמש במשאבים המוזמנים באופן מיידי, והם יישארו זמינים עד שתמחקו את ההזמנה.
- החיוב על המשאבים המוזמנים מתבצע לפי אותו תעריף על פי דרישה כמו על מכונות וירטואליות פעילות, כולל הנחות רלוונטיות, עד למחיקת ההזמנה. מכונה וירטואלית שצורכת הזמנה לא מחויבת בחיובים נפרדים. החיוב מתבצע רק על המשאבים שלא נכללים בהזמנה, כמו דיסקים או כתובות IP. מידע נוסף זמין במאמר בנושא תמחור של הזמנות.
מגבלות ודרישות
כשמשתמשים בשמירת מקום ב-Compute Engine עם Agent Platform, חשוב להביא בחשבון את המגבלות והדרישות הבאות:
- Agent Platform יכולה להשתמש במקומות שמורים רק עבור מעבדי CPU, מכונות וירטואליות עם GPU או TPU (גרסת טרום-השקה (Preview)).
- Agent Platform לא יכולה להשתמש במקומות שמורים של מכונות וירטואליות שמחוברים אליהן באופן ידני דיסקים מקומיים מסוג 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 ששמורות במקום משותף, צריך להשתמש בהן באמצעות פרויקט הבעלים או פרויקט צרכן שבו המקום השמור משותף. מידע נוסף זמין במאמר איך פועל מקום שמור משותף.
- כדי להשתמש בהזמנה
SPECIFIC_RESERVATION, צריך להקצות לחשבון השירות של Agent Platform את תפקיד ה-IAM Compute Viewer בפרויקט שבו נמצאות ההזמנות (service-${PROJECT_NUMBER}@gcp-sa-aiplatform.iam.gserviceaccount.com, כאשר PROJECT_NUMBER הוא מספר הפרויקט שבו נעשה שימוש בהזמנה). -
השירותים והיכולות הבאים לא נתמכים כשמשתמשים בהזמנות של Compute Engine עם הסקת מסקנות באצווה ב-Agent Platform:
- עמידה בדרישות של התוכנית הפדרלית לניהול סיכונים והרשאות (FedRAMP)
חיוב
כשמשתמשים בהזמנות ב-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.קבלת מסקנות בכמות גדולה באמצעות הזמנה
כדי ליצור בקשה להסקת מסקנות באצווה שצורכת מקום שמור של מכונות וירטואליות עם GPU ב-Compute Engine, אפשר להשתמש ב-API בארכיטקטורת REST ולבחור ב-Cloud Storage או ב-BigQuery כמקור וכיעד.
Cloud Storage
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION_ID: האזור שבו המודל מאוחסן והמשימה של חיזוי אצווה מבוצעת. לדוגמה,
us-central1. -
PROJECT_ID: הפרויקט שבו נוצרה ההזמנה. כדי להשתמש בהזמנה משותפת מפרויקט אחר, צריך לשתף את ההזמנה עם הפרויקט הזה. מידע נוסף זמין במאמר בנושא שינוי פרויקטים צרכניים בהזמנה משותפת.
-
BATCH_JOB_NAME: שם מוצג למשימת התחזית באצווה.
-
MODEL_ID: המזהה של המודל שמשמש ליצירת תחזיות.
-
INPUT_FORMAT: הפורמט של נתוני הקלט:
jsonl,csv,tf-record,tf-record-gzipאוfile-list. -
INPUT_URI: ה-URI של נתוני הקלט ב-Cloud Storage. יכול להכיל תווים כלליים לחיפוש.
-
OUTPUT_DIRECTORY: ה-URI של Cloud Storage של ספרייה שבה רוצים שפלטפורמת הסוכנים תשמור את הפלט.
-
MACHINE_TYPE: משאבי המכונה שישמשו לעבודת החיזוי באצווה הזו.
-
ACCELERATOR_TYPE: סוג המאיץ לצירוף למכונה. מידע נוסף על סוג ה-GPU שכל סוג מכונה תומך בו זמין במאמר מעבדי GPU לעומסי עבודה של מחשוב.
ACCELERATOR_COUNT: מספר המאיצים לצירוף למכונה.
-
RESERVATION_AFFINITY_TYPE: הערך חייב להיות
ANY,SPECIFIC_RESERVATIONאוNONE.ANYהמשמעות היא שהמכונות הווירטואליות ב-customJobיכולות להשתמש באופן אוטומטי בכל הזמנה עם מאפיינים תואמים.SPECIFIC_RESERVATIONפירושו שהמכונות הווירטואליות שלcustomJobיכולות להשתמש רק בהזמנה שהמכונות הווירטואליות מטרגטות ספציפית לפי שם.-
NONE– המכונות הווירטואליות שלcustomJobלא יכולות להשתמש באף הזמנה. ציון הערךNONEזהה להשמטת הגדרת ההשתייכות להזמנה.
-
BATCH_SIZE: מספר המקרים לשליחה בכל בקשת חיזוי. ברירת המחדל היא 64. הגדלת גודל האצווה יכולה להוביל לתפוקה גבוהה יותר, אבל היא גם עלולה לגרום לפסק זמן של הבקשה.
-
STARTING_REPLICA_COUNT: מספר הצמתים במשימת החיזוי באצווה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
גוף בקשת JSON:
{
"displayName": "BATCH_JOB_NAME",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "INPUT_FORMAT",
"gcsSource": {
"uris": ["INPUT_URI"],
},
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_DIRECTORY",
},
},
"dedicatedResources" : {
"machineSpec" : {
"machineType": MACHINE_TYPE,
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT,
"reservationAffinity": {
"reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
]
}
},
"startingReplicaCount": STARTING_REPLICA_COUNT
},
"manualBatchTuningParameters": {
"batch_size": BATCH_SIZE,
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
"displayName": "BATCH_JOB_NAME 202005291958",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"gcsSource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"gcsDestination": {
"outputUriPrefix": "OUTPUT_DIRECTORY"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2020-05-30T02:58:44.341643Z",
"updateTime": "2020-05-30T02:58:44.341643Z",
}
BigQuery
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION_ID: האזור שבו המודל מאוחסן והמשימה של חיזוי אצווה מבוצעת. לדוגמה,
us-central1. -
PROJECT_ID: הפרויקט שבו נוצרה ההזמנה. כדי להשתמש בהזמנה משותפת מפרויקט אחר, צריך לשתף את ההזמנה עם הפרויקט הזה. מידע נוסף זמין במאמר בנושא שינוי פרויקטים צרכניים בהזמנה משותפת.
-
BATCH_JOB_NAME: שם מוצג למשימת התחזית באצווה.
-
MODEL_ID: המזהה של המודל שמשמש ליצירת תחזיות.
-
INPUT_PROJECT_ID: המזהה של Google Cloud הפרויקט שממנו רוצים לקבל את הנתונים.
-
INPUT_DATASET_NAME: השם של מערך הנתונים ב-BigQuery שממנו רוצים לקבל את הנתונים.
-
INPUT_TABLE_NAME: השם של הטבלה ב-BigQuery שממנה רוצים לקבל את הנתונים.
-
OUTPUT_PROJECT_ID: המזהה של Google Cloud הפרויקט שבו רוצים לשמור את הפלט.
-
OUTPUT_DATASET_NAME: השם של מערך הנתונים ביעד ב-BigQuery שבו רוצים לשמור את הפלט.
-
OUTPUT_TABLE_NAME: השם של טבלת היעד ב-BigQuery שבה רוצים לשמור את הפלט.
-
MACHINE_TYPE: משאבי המכונה שישמשו לעבודת החיזוי באצווה הזו.
-
ACCELERATOR_TYPE: סוג המאיץ לצירוף למכונה. מידע נוסף על סוג ה-GPU שכל סוג מכונה תומך בו זמין במאמר מעבדי GPU לעומסי עבודה של מחשוב.
ACCELERATOR_COUNT: מספר המאיצים לצירוף למכונה.
-
RESERVATION_AFFINITY_TYPE: הערך חייב להיות
ANY,SPECIFIC_RESERVATIONאוNONE.ANYהמשמעות היא שהמכונות הווירטואליות ב-customJobיכולות להשתמש באופן אוטומטי בכל הזמנה עם מאפיינים תואמים.SPECIFIC_RESERVATIONפירושו שהמכונות הווירטואליות שלcustomJobיכולות להשתמש רק בהזמנה שהמכונות הווירטואליות מטרגטות ספציפית לפי שם.-
NONE– המכונות הווירטואליות שלcustomJobלא יכולות להשתמש באף הזמנה. ציון הערךNONEזהה להשמטת הגדרת ההשתייכות להזמנה.
-
BATCH_SIZE: מספר המקרים לשליחה בכל בקשת חיזוי. ברירת המחדל היא 64. הגדלת גודל האצווה יכולה להוביל לתפוקה גבוהה יותר, אבל היא גם עלולה לגרום לפסק זמן של הבקשה.
-
STARTING_REPLICA_COUNT: מספר הצמתים במשימת החיזוי באצווה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs
גוף בקשת JSON:
{
"displayName": "BATCH_JOB_NAME",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "bigquery",
"bigquerySource": {
"inputUri": "bq://INPUT_PROJECT_ID.INPUT_DATASET_NAME.INPUT_TABLE_NAME"
},
},
"outputConfig": {
"predictionsFormat":"bigquery",
"bigqueryDestination":{
"outputUri": "bq://OUTPUT_PROJECT_ID.OUTPUT_DATASET_NAME.OUTPUT_TABLE_NAME"
}
},
"dedicatedResources" : {
"machineSpec" : {
"machineType": MACHINE_TYPE,
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": ACCELERATOR_COUNT,
"reservationAffinity": {
"reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
"key": "compute.googleapis.com/reservation-name",
"values": [
"projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
]
}
},
"startingReplicaCount": STARTING_REPLICA_COUNT
},
"manualBatchTuningParameters": {
"batch_size": BATCH_SIZE,
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"
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_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/batchPredictionJobs/BATCH_JOB_ID",
"displayName": "BATCH_JOB_NAME 202005291958",
"model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID",
"inputConfig": {
"instancesFormat": "jsonl",
"bigquerySource": {
"uris": [
"INPUT_URI"
]
}
},
"outputConfig": {
"predictionsFormat": "jsonl",
"bigqueryDestination": {
"outputUri": "OUTPUT_URI"
}
},
"state": "JOB_STATE_PENDING",
"createTime": "2020-05-30T02:58:44.341643Z",
"updateTime": "2020-05-30T02:58:44.341643Z",
}
אחזור תוצאות של הסקה בקבוצות
כשמשימת הסקת מסקנות באצווה מסתיימת, הפלט של הסקת המסקנות מאוחסן בקטגוריה של Cloud Storage או במיקום ב-BigQuery שציינתם בבקשה.
המאמרים הבאים
- מידע נוסף על הזמנות של משאבים אזוריים ב-Compute Engine
- איך משתמשים במקומות שמורים עם הסקת מסקנות אונליין ב-Agent Platform
- איך משתמשים בהזמנות עם Agent Platform training
- איך רואים את ההזמנות
- איך עוקבים אחרי השימוש בהזמנות