בדף הזה נסביר איך להשתמש בפלטפורמת הסוכנים של Gemini Enterprise כדי לייצא את המודל הטבלאי של AutoML ל-Cloud Storage, להוריד את המודל לשרת מקומי או לשרת שמארח ספק ענן אחר, ואז להשתמש ב-Docker כדי להפוך את המודל לזמין לחיזויים.
מידע על ייצוא מודלים של תמונות וסרטונים ב-Edge זמין במאמר ייצוא מודלים של AutoML Edge.
אחרי שמייצאים את המודל הטבלאי, אם רוצים לייבא אותו בחזרה ל-Agent Platform, אפשר לעיין במאמר בנושא ייבוא מודלים ל-Agent Platform.
מגבלות
לייצוא של מודלים טבלאיים של AutoML יש את המגבלות הבאות:
אפשר לייצא רק מודלים של סיווג טבלאי ורגרסיה של AutoML. אין תמיכה בייצוא של מודלים של AutoML לחיזוי נתונים טבלאיים.
אי אפשר להשתמש ב-Vertex AI ניתן להסברה באמצעות מודלים טבלאיים שיוצאו. אם אתם צריכים להשתמש ב-Vertex Explainable AI, אתם צריכים להציג חיזויים ממודל שמארח Agent Platform.
אפשר להפעיל את המודל הטבלאי המיוצא רק במעבדי ארכיטקטורת x86 שתומכים בערכות ההוראות Advanced Vector Extensions (AVX).
תהליך הייצוא
השלבים לייצוא המודל:
לפני שמתחילים
כדי לבצע את המשימה הזו, צריך קודם לסיים את המשימות הבאות:
- מגדירים את הפרויקט כמו שמתואר במאמר הגדרת פרויקט וסביבת פיתוח.
- מאמנים את המודל שרוצים להוריד.
- מתקינים ומפעילים את Google Cloud CLI בשרת שבו תשתמשו כדי להריץ את המודל המיוצא.
- מתקינים את Docker בשרת.
ייצוא המודל
המסוף
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Models.
לוחצים על המודל הטבלאי שרוצים לייצא כדי לפתוח את דף הפרטים שלו.
לוחצים על ייצוא בסרגל הלחצנים כדי לייצא את המודל.
בוחרים תיקייה קיימת או יוצרים תיקייה חדשה ב-Cloud Storage במיקום הרצוי.
הקטגוריה צריכה לעמוד בדרישות לגבי קטגוריות.
אי אפשר לייצא מודל לקטגוריה ברמה העליונה. צריך להשתמש לפחות ברמה אחת של תיקייה.
כדי לקבל את התוצאות הטובות ביותר, כדאי ליצור תיקייה חדשה וריקה. בשלב מאוחר יותר, תעתיקו את כל התוכן של התיקייה.
לוחצים על ייצוא.
בקטע הבא נסביר איך להוריד את המודל המיוצא לשרת.
REST
משתמשים בשיטה models.export כדי לייצא מודל ל-Cloud Storage.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION: האזור שלכם.
- PROJECT: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
- MODEL_ID: המזהה של המודל שרוצים לייצא.
-
GCS_DESTINATION : תיקיית היעד ב-Cloud Storage. לדוגמה,
gs://export-bucket/exports.אי אפשר לייצא מודל לקטגוריה ברמה העליונה. צריך להשתמש לפחות ברמה אחת של תיקייה.
התיקייה צריכה לעמוד בדרישות של הקטגוריה.
כדי לקבל את התוצאות הטובות ביותר, כדאי ליצור תיקייה חדשה. תעתיקו את כל התוכן של התיקייה בשלב מאוחר יותר.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/models/MODEL_ID:export
גוף בקשת JSON:
{
"outputConfig": {
"exportFormatId": "tf-saved-model",
"artifactDestination": {
"outputUriPrefix": "GCS_DESTINATION"
}
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/locations/LOCATION/models/MODEL_ID:export"
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/locations/LOCATION/models/MODEL_ID:export" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/models/MODEL_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.ExportModelOperationMetadata",
"genericMetadata": {
"createTime": "2020-10-12T20:53:40.130785Z",
"updateTime": "2020-10-12T20:53:40.130785Z"
},
"outputInfo": {
"artifactOutputUri": "gs://OUTPUT_BUCKET/model-MODEL_ID/EXPORT_FORMAT/YYYY-MM-DDThh:mm:ss.sssZ"
}
}
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Java API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Node.js API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של Python API.
קבלת הסטטוס של פעולת ייצוא
חלק מהבקשות מפעילות תהליכים ארוכים שדורשים זמן להשלמה. הבקשות האלה מחזירות שם פעולה, שאפשר להשתמש בו כדי לראות את הסטטוס של הפעולה או לבטל אותה. Agent Platform מספקת שיטות עזר לביצוע קריאות לפעולות ממושכות. מידע נוסף זמין במאמר בנושא עבודה עם פעולות ממושכות.
משיכה והרצה של שרת המודל
במשימה הזו תורידו את המודל המיוצא מ-Cloud Storage ותפעילו את קונטיינר Docker, כדי שהמודל יהיה מוכן לקבל בקשות לחיזוי.
כדי לשלוף ולהריץ את שרת המודל:
במחשב שבו יופעל המודל, עוברים לספרייה שבה רוצים לשמור את המודל המיוצא.
מורידים את המודל המיוצא:
gcloud storage cp <var>gcs-destination</var> . --recursiveכאשר gcs-destination הוא הנתיב למיקום של המודל המיוצא ב-Cloud Storage.
המודל מועתק לספרייה הנוכחית, בנתיב הבא:
./model-<model-id>/tf-saved-model/<export-timestamp>הנתיב יכול להכיל את הערך
tf-saved-modelאוcustom-trained.משנים את השם של הספרייה כדי להסיר את חותמת הזמן.
mv model-<model-id>/tf-saved-model/<export-timestamp> model-<model-id>/tf-saved-model/<new-dir-name>חותמת הזמן הופכת את הספרייה ללא תקינה עבור Docker.
מושכים את קובץ אימג' של Docker של שרת המודל.
sudo docker pull MODEL_SERVER_IMAGEהתמונה של שרת המודלים למשיכה נמצאת בקובץ
environment.jsonבספריית המודלים המיוצאים. הנתיב צריך להיות:./model-<model-id>/tf-saved-model/<new-dir-name>/environment.jsonמפעילים את קונטיינר Docker באמצעות שם הספרייה שיצרתם:
docker run -v `pwd`/model-<model-id>/tf-saved-model/<new-dir-name>:/models/default -p 8080:8080 -it MODEL_SERVER_IMAGE
אפשר להפסיק את שרת המודל בכל שלב באמצעות Ctrl-C.
עדכון של קובץ Docker של שרת המודל
מכיוון שאתם מורידים את קובץ ה-Docker של שרת המודל כשאתם מייצאים את המודל, אתם צריכים לעדכן את שרת המודל באופן מפורש כדי לקבל עדכונים ותיקוני באגים. צריך לעדכן את שרת המודל באופן תקופתי באמצעות הפקודה הבאה:
docker pull MODEL_SERVER_IMAGE
מוודאים שכתובת ה-URI של קובץ האימג' של Docker זהה לכתובת ה-URI של קובץ האימג' של Docker שמשכתם קודם.
קבלת חיזויים מהמודל המיוצא
שרת המודלים בקונטיינר של תמונת Agent Platform מטפל בבקשות לחיזוי ומחזיר תוצאות חיזוי.
אי אפשר להשתמש בתחזיות אצווה במודלים שמייצאים.
פורמט נתוני החיזוי
אתם מספקים את הנתונים (השדה payload) לבקשת החיזוי בפורמט JSON הבא:
{ "instances": [ { "column_name_1": value, "column_name_2": value, … } , … ] }
בדוגמה הבאה מוצגת בקשה עם שלוש עמודות: עמודה קטגורית, מערך מספרי ומבנה. הבקשה כוללת שתי שורות.
{
"instances": [
{
"categorical_col": "mouse",
"num_array_col": [
1,
2,
3
],
"struct_col": {
"foo": "piano",
"bar": "2019-05-17T23:56:09.05Z"
}
},
{
"categorical_col": "dog",
"num_array_col": [
5,
6,
7
],
"struct_col": {
"foo": "guitar",
"bar": "2019-06-17T23:56:09.05Z"
}
}
]
}
שליחת בקשת חיזוי
מכניסים את נתוני הבקשה לקובץ טקסט, למשל,
tmp/request.json.מספר השורות של הנתונים בבקשה לתחזית, שנקרא גודל המיני-batch, משפיע על זמן האחזור ועל קצב העברת הנתונים של התחזית. ככל שגודל אצווה המיני גדול יותר, כך זמן האחזור והתפוקה גבוהים יותר. כדי להקטין את זמן האחזור, משתמשים בגודל קטן יותר של מיני-אצווה. כדי להגדיל את קצב העברת הנתונים, מגדילים את גודל המיני-batch. הגדלים הנפוצים ביותר של קבוצות קטנות הם 1, 32, 64, 128, 256, 512 ו-1,024.
שליחת בקשה לתחזית:
curl -X POST --data @/tmp/request.json http://localhost:8080/predict
פורמט של תוצאות תחזיות
הפורמט של התוצאות תלוי במטרה של המודל.
תוצאות של מודל סיווג
תוצאות התחזית של מודלים לסיווג (בינארי ורב-מחלקה) מחזירות ציון הסתברות לכל ערך פוטנציאלי של עמודת היעד. אתם צריכים להחליט איך אתם רוצים להשתמש בציונים. לדוגמה, כדי לקבל סיווג בינארי מהציונים שסופקו, צריך לזהות ערך סף. אם יש שתי סיווגים, A ו-B, צריך לסווג את הדוגמה כ-A אם הציון של A גבוה מהסף שנבחר, אחרת צריך לסווג אותה כ-B. במערכי נתונים לא מאוזנים, יכול להיות שערך הסף יתקרב ל-100% או ל-0%.
מטען הייעודי (payload) של תוצאות למודל סיווג נראה דומה לדוגמה הזו:
{
"predictions": [
{
"scores": [
0.539999994635582,
0.2599999845027924,
0.2000000208627896
],
"classes": [
"apple",
"orange",
"grape"
]
},
{
"scores": [
0.23999999463558197,
0.35999998450279236,
0.40000002086278963
],
"classes": [
"apple",
"orange",
"grape"
]
}
]
}
תוצאות של מודל רגרסיה
ערך חזוי מוחזר לכל שורה תקינה בבקשת החיזוי. מרווחי החיזוי לא מוחזרים עבור מודלים שמיוצאים.
מטען הייעודי (payload) של תוצאות למודל רגרסיה נראה דומה לדוגמה הזו:
{
"predictions": [
{
"value": -304.3663330078125,
"lower_bound": -56.32196807861328,
"upper_bound": 126.51904296875
},
{
"value": -112.3663330078125,
"lower_bound": 16.32196807861328,
"upper_bound": 255.51904296875
}
]
}