בדף הזה מוסבר איך לקבל הסברים והסקות אונליין (בזמן אמת) ממודלים מאומנים של AutoML לסיווג או לרגרסיה של נתונים בטבלאות, באמצעות מסוף Google Cloud או Agent Platform API.
הסקה אונליין היא בקשה סינכרונית, בניגוד להסקה באצווה שהיא בקשה אסינכרונית. השתמשו בהסקת מסקנות אונליין כשאתם שולחים בקשות בתגובה לקלט של אפליקציה, או במצבים אחרים שבהם אתם צריכים הסקת מסקנות בזמן אמת.
כדי להשתמש במודל להסקת מסקנות אונליין, צריך לפרוס את המודל בנקודת קצה (endpoint). כשפורסים מודל, משויכים אליו משאבים פיזיים כדי שהוא יוכל להציג הסקות אונליין עם זמן אחזור קצר.
הנושאים הכלולים:
- פריסת מודל בנקודת קצה (endpoint)
- מקבלים הסקה אונליין באמצעות המודל שנפרס
- קבלת הסבר אונליין באמצעות המודל שנפרס
לפני שמתחילים
כדי לקבל הסקות אונליין, קודם צריך לאמן מודל סיווג או רגרסיה ולהעריך את רמת הדיוק שלו.
פריסת מודל בנקודת קצה (endpoint)
אפשר לפרוס יותר ממודל אחד בנקודת קצה, ואפשר לפרוס מודל ביותר מנקודת קצה אחת. למידע נוסף על אפשרויות ותרחישים לדוגמה לפריסת מודלים, קראו את המאמר מידע על פריסת מודלים.
כדי לפרוס מודל, אפשר להשתמש באחת מהשיטות הבאות:
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, נכנסים לדף Models.
לוחצים על שם המודל שרוצים לפרוס כדי לפתוח את דף הפרטים שלו.
לוחצים על הכרטיסייה פריסה ובדיקה.
אם המודל כבר פרוס בנקודות קצה, הן מופיעות בקטע Deploy your model.
לוחצים על Deploy to endpoint.
בדף Define your endpoint, מגדירים את הפרטים הבאים:
אתם יכולים לפרוס את המודל בנקודת קצה חדשה או בנקודת קצה קיימת.
- כדי לפרוס את המודל בנקודת קצה חדשה, בוחרים באפשרות Create new endpoint ונותנים שם לנקודת הקצה החדשה.
- כדי לפרוס את המודל בנקודת קצה קיימת, בוחרים באפשרות Add to existing endpoint ובוחרים את נקודת הקצה מהרשימה הנפתחת.
- אפשר להוסיף יותר ממודל אחד לנקודת קצה, ואפשר להוסיף מודל ליותר מנקודת קצה אחת. מידע נוסף
לוחצים על Continue.
בדף Model settings, קובעים את ההגדרות הבאות:
-
אם פורסים את המודל בנקודת קצה חדשה, מאשרים את הערך 100 בשדה חלוקת התנועה. אם אתם פורסים את המודל בנקודת קצה קיימת שכבר נפרסו בה מודל אחד או יותר, אתם צריכים לעדכן את אחוז חלוקת התנועה של המודל שאתם פורסים ושל המודלים שכבר נפרסו, כך שסך כל האחוזים יהיה 100%.
-
מזינים את המספר המינימלי של צומתי המחשוב שרוצים לספק למודל.
זה מספר הצמתים שזמינים למודל הזה בכל זמן נתון. אתם מחויבים על הצמתים שבהם אתם משתמשים, בין אם כדי לטפל בעומס ההסקה ובין אם על צמתים במצב המתנה (מינימום), גם בלי תנועת הסקה. לדף התמחור
-
בוחרים את סוג המכונה.
משאבי מכונה גדולים יותר ישפרו את ביצועי ההסקה ויגדילו את העלויות.
-
לוחצים על המשך.
-
בדף Model monitoring, לוחצים על Continue.
בדף Monitoring objectives, קובעים את ההגדרות הבאות:
- מזינים את המיקום של נתוני האימון.
- מזינים את השם של עמודת היעד.
לוחצים על Deploy כדי לפרוס את המודל בנקודת הקצה.
API
כשפורסים מודל באמצעות Agent Platform API, מבצעים את השלבים הבאים:
- אם צריך, יוצרים נקודת קצה.
- משיגים את מזהה נקודת הקצה.
- פורסים את המודל בנקודת הקצה.
יצירת נקודת קצה (endpoint)
אם אתם פורסים מודל בנקודת קצה קיימת, אתם יכולים לדלג על השלב הזה.
gcloud
בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints create:
gcloud ai endpoints create \
--region=LOCATION \
--display-name=ENDPOINT_NAME
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
ENDPOINT_NAME: השם המוצג של נקודת הקצה.
יכול להיות שיעברו כמה שניות עד שהכלי Google Cloud CLI ייצור את נקודת הקצה.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שלכם.
- PROJECT_ID: מזהה הפרויקט. .
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints
תוכן בקשת JSON:
{
"display_name": "ENDPOINT_NAME"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
"genericMetadata": {
"createTime": "2020-11-05T17:45:42.812656Z",
"updateTime": "2020-11-05T17:45:42.812656Z"
}
}
}
"done": true.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.
איך מקבלים את מזהה נקודת הקצה
כדי לפרוס את המודל, צריך את מזהה נקודת הקצה.
gcloud
בדוגמה הבאה משתמשים בפקודה gcloud ai endpoints list:
gcloud ai endpoints list \
--region=LOCATION \
--filter=display_name=ENDPOINT_NAME
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
ENDPOINT_NAME: השם המוצג של נקודת הקצה.
שימו לב למספר שמופיע בעמודה
ENDPOINT_ID. משתמשים במזהה הזה בשלב הבא.
REST
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
- PROJECT_ID: .
- ENDPOINT_NAME: השם המוצג של נקודת הקצה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints?filter=display_name=ENDPOINT_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"endpoints": [
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID",
"displayName": "ENDPOINT_NAME",
"etag": "AMEw9yPz5pf4PwBHbRWOGh0PcAxUdjbdX2Jm3QO_amguy3DbZGP5Oi_YUKRywIE-BtLx",
"createTime": "2020-04-17T18:31:11.585169Z",
"updateTime": "2020-04-17T18:35:08.568959Z"
}
]
}
פריסת המודל
בוחרים את הכרטיסייה של השפה או הסביבה שלכם:
gcloud
בדוגמאות הבאות משתמשים בפקודה gcloud ai endpoints deploy-model.
בדוגמה הבאה פורסים Model ב-Endpoint בלי להשתמש במעבדי GPU כדי להאיץ את הצגת החיזויים, ובלי לפצל את התנועה בין כמה משאבי DeployedModel:
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- ENDPOINT_ID: המזהה של נקודת הקצה.
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
- MODEL_ID: המזהה של המודל לפריסה.
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר להשתמש בשם המוצג שלModelגם בשבילDeployedModel. -
MACHINE_TYPE: אופציונלי. משאבי המכונה שמשמשים לכל צומת בפריסה הזו. הגדרת ברירת המחדל היא
n1-standard-2. מידע נוסף על סוגי מכונות -
MIN_REPLICA_COUNT: המספר המינימלי של הצמתים לפריסה הזו.
אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר המקסימלי של הצמתים, אבל אף פעם לא פחות מהמספר הזה.
הערך הזה חייב להיות שווה ל-1 או גדול יותר. אם משמיטים את הדגל
--min-replica-count, ערך ברירת המחדל הוא 1. -
MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים בפריסה הזו.
אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר הצמתים הזה, ולא פחות ממספר הצמתים המינימלי.
אם לא מציינים את הדגל
--max-replica-count, המספר המקסימלי של הצמתים מוגדר לערך של--min-replica-count.
מריצים את הפקודה gcloud ai endpoints deploy-model:
Linux, macOS או Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100
חלוקת התנועה
הדגל --traffic-split=0=100 בדוגמאות שלמעלה שולח 100% מתנועת החיזוי שמתקבלת ב-Endpoint אל ה-DeployedModel החדש, שמיוצג על ידי המזהה הזמני 0. אם ב-Endpoint כבר יש משאבי DeployedModel אחרים, אתם יכולים לפצל את התנועה בין משאבי ה-DeployedModel החדשים והישנים.
לדוגמה, כדי לשלוח 20% מהתנועה ל-DeployedModel החדש ו-80% לגרסה ישנה יותר, מריצים את הפקודה הבאה.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- OLD_DEPLOYED_MODEL_ID: המזהה של ה-
DeployedModelהקיים.
מריצים את הפקודה gcloud ai endpoints deploy-model:
Linux, macOS או Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID\ --region=LOCATION_ID \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID` --region=LOCATION_ID ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
Windows (cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID^ --region=LOCATION_ID ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=20,OLD_DEPLOYED_MODEL_ID=80
REST
כדי לבקש הסקה אונליין, משתמשים ב-method endpoints.predict.
פורסים את המודל.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
- PROJECT_ID: .
- ENDPOINT_ID: המזהה של נקודת הקצה.
- MODEL_ID: המזהה של המודל לפריסה.
-
DEPLOYED_MODEL_NAME: שם ל-
DeployedModel. אפשר להשתמש בשם המוצג שלModelגם בשבילDeployedModel. -
MACHINE_TYPE: אופציונלי. משאבי המכונה שמשמשים לכל צומת בפריסה הזו. הגדרת ברירת המחדל היא
n1-standard-2. מידע נוסף על סוגי מכונות - ACCELERATOR_TYPE: סוג המאיץ שרוצים לצרף למכונה. אופציונלי אם לא צוין ACCELERATOR_COUNT או אם הערך שלו הוא אפס. לא מומלץ למודלים של AutoML או למודלים באימון מותאם אישית שמשתמשים בתמונות ללא GPU. מידע נוסף
- ACCELERATOR_COUNT: מספר המאיצים לשימוש בכל רפליקה. זה שינוי אופציונלי. צריך להיות אפס או לא מוגדר במודלים של AutoML או במודלים באימון מותאם אישית שמשתמשים בתמונות ללא GPU.
- MIN_REPLICA_COUNT: המספר המינימלי של הצמתים לפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר המקסימלי של הצמתים, אבל אף פעם לא פחות מהמספר הזה. הערך הזה חייב להיות שווה ל-1 או גדול יותר.
- MAX_REPLICA_COUNT: המספר המקסימלי של הצמתים בפריסה הזו. אפשר להגדיל או להקטין את מספר הצמתים בהתאם לעומס ההסקה, עד למספר הצמתים הזה, ולא פחות ממספר הצמתים המינימלי.
- REQUIRED_REPLICA_COUNT: אופציונלי. מספר הצמתים הנדרש כדי שהפריסה הזו תסומן כפריסה שהושלמה בהצלחה. הערך חייב להיות גדול מ-1 או שווה לו, וקטן ממספר הצמתים המינימלי או שווה לו. אם לא מציינים ערך, ברירת המחדל היא המספר המינימלי של הצמתים.
- TRAFFIC_SPLIT_THIS_MODEL: אחוז תנועת החיזוי לנקודת הקצה הזו שצריך לנתב למודל שנפרס באמצעות הפעולה הזו. ברירת המחדל היא 100. סכום כל אחוזי התנועה צריך להיות 100. מידע נוסף על חלוקת התנועה
- DEPLOYED_MODEL_ID_N: אופציונלי. אם מודלים אחרים נפרסים בנקודת הקצה הזו, צריך לעדכן את אחוזי חלוקת התנועה שלהם כך שכל האחוזים יסתכמו ב-100.
- TRAFFIC_SPLIT_MODEL_N: ערך אחוז חלוקת התנועה של מפתח מזהה המודל שנפרס.
- PROJECT_NUMBER: מספר הפרויקט שנוצר באופן אוטומטי
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel
תוכן בקשת JSON:
{
"deployedModel": {
"model": "projects/PROJECT/locations/us-central1/models/MODEL_ID",
"displayName": "DEPLOYED_MODEL_NAME",
"dedicatedResources": {
"machineSpec": {
"machineType": "MACHINE_TYPE",
"acceleratorType": "ACCELERATOR_TYPE",
"acceleratorCount": "ACCELERATOR_COUNT"
},
"minReplicaCount": MIN_REPLICA_COUNT,
"maxReplicaCount": MAX_REPLICA_COUNT,
"requiredReplicaCount": REQUIRED_REPLICA_COUNT
},
},
"trafficSplit": {
"0": TRAFFIC_SPLIT_THIS_MODEL,
"DEPLOYED_MODEL_ID_1": TRAFFIC_SPLIT_MODEL_1,
"DEPLOYED_MODEL_ID_2": TRAFFIC_SPLIT_MODEL_2
},
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeployModelOperationMetadata",
"genericMetadata": {
"createTime": "2020-10-19T17:53:16.502088Z",
"updateTime": "2020-10-19T17:53:16.502088Z"
}
}
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.
איך משנים את הגדרות ברירת המחדל של רישום הסקות ביומן
קבלת סטטוס הפעולה
חלק מהבקשות מפעילות פעולות ממושכות שלוקח זמן להשלים אותן. הבקשות האלה מחזירות שם פעולה, שבו אפשר להשתמש כדי לראות את סטטוס הפעולה או לבטל אותה. ב-Agent Platform יש שיטות עזר לשליחת קריאות לפעולות ממושכות. מידע נוסף זמין במאמר עבודה עם פעולות ממושכות.
הסקת מסקנות אונליין באמצעות המודל שנפרס
כדי להסיק מסקנות אונליין, שולחים פריט בדיקה אחד או יותר למודל לניתוח, והמודל מחזיר תוצאות שמבוססות על מטרת המודל. כדי לשלוח בקשה להסקת מסקנות אונליין, משתמשים במסוף Google Cloud או ב-Agent Platform API.
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, נכנסים לדף Models.
ברשימת המודלים, לוחצים על שם המודל שממנו רוצים לבקש הסקות.
לוחצים על הכרטיסייה פריסה ובדיקה.
בקטע Test your model, מוסיפים פריטי בדיקה כדי לבקש הסקה. נתוני ההסקה הבסיסיים ממולאים בשבילכם, או שאתם יכולים להזין נתוני הסקה משלכם וללחוץ על Predict.
בסיום תהליך ההסקה, פלטפורמת הסוכנים של Gemini Enterprise מחזירה את התוצאות במסוף.
API: סיווג
gcloud
-
יוצרים קובץ בשם
request.jsonעם התוכן הבא:{ "instances": [ { PREDICTION_DATA_ROW } ] }מחליפים את מה שכתוב בשדות הבאים:
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מחרוזות וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
-
-
מריצים את הפקודה הבאה:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
מחליפים את מה שכתוב בשדות הבאים:
- ENDPOINT_ID: המזהה של נקודת הקצה.
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
REST
כדי לבקש הסקה אונליין, משתמשים ב-method endpoints.predict.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION_ID: האזור שבו נמצאת נקודת הקצה. לדוגמה,
us-central1. - PROJECT_ID: .
- ENDPOINT_ID: המזהה של נקודת הקצה.
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מחרוזות וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
- DEPLOYED_MODEL_ID: פלט של השיטה
predict, ומתקבל כקלט של השיטהexplain. המזהה של המודל ששימש ליצירת ההסקה. אם אתם צריכים לבקש הסברים להסקה שכבר ביקשתם, ויש לכם יותר ממודל אחד פרוס, אתם יכולים להשתמש במזהה הזה כדי לוודא שההסברים יוחזרו לאותו מודל שסיפק את ההסקה הקודמת.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
גוף בקשת JSON:
{
"instances": [
{
PREDICTION_DATA_ROW
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/endpoints/ENDPOINT_ID:predict"
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/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"predictions": [
{
"scores": [
0.96771615743637085,
0.032283786684274673
],
"classes": [
"0",
"1"
]
}
]
"deployedModelId": "2429510197"
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.
API: רגרסיה
gcloud
-
יוצרים קובץ בשם request.json עם התוכן הבא:
{ "instances": [ { PREDICTION_DATA_ROW } ] }מחליפים את מה שכתוב בשדות הבאים:
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מספרים וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"age":3.6, "sq_ft":5392, "code": "90331"
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
-
-
מריצים את הפקודה הבאה:
gcloud ai endpoints predict ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
מחליפים את מה שכתוב בשדות הבאים:
- ENDPOINT_ID: המזהה של נקודת הקצה.
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
REST
כדי לבקש הסקה אונליין, משתמשים ב-method endpoints.predict.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION_ID: האזור שבו נמצאת נקודת הקצה. לדוגמה,
us-central1. - PROJECT_ID: .
- ENDPOINT_ID: המזהה של נקודת הקצה.
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מספרים וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"age":3.6, "sq_ft":5392, "code": "90331"
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
- DEPLOYED_MODEL_ID: פלט של השיטה
predict, ומתקבל כקלט של השיטהexplain. המזהה של המודל ששימש ליצירת ההסקה. אם אתם צריכים לבקש הסברים להסקה שכבר ביקשתם, ויש לכם יותר ממודל אחד פרוס, אתם יכולים להשתמש במזהה הזה כדי לוודא שההסברים יוחזרו לאותו מודל שסיפק את ההסקה הקודמת.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:predict
גוף בקשת JSON:
{
"instances": [
{
PREDICTION_DATA_ROW
}
]
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/endpoints/ENDPOINT_ID:predict"
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/endpoints/ENDPOINT_ID:predict" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"predictions": [
[
{
"value": 65.14233,
"lower_bound": 4.6572,
"upper_bound": 164.0279
}
]
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Java שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי הוראות ההגדרה של Node.js שמפורטות במאמר התחלה מהירה של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.
פירוש תוצאות החיזוי
סיווג
מודלים של סיווג מחזירים ציון מהימנות.
ציון הסמך מציין את מידת החוזק של השיוך שהמודל מבצע בין כל סוג או תווית לבין פריט בדיקה. ככל שהמספר גבוה יותר, כך רמת הסבירות של המודל שהתווית צריכה להיות מוחלת על הפריט הזה גבוהה יותר. אתם מחליטים מה צריך להיות ציון הסמך כדי לקבל את תוצאות המודל.
רגרסיה
מודלים של רגרסיה מחזירים ערך הסקה. ביעד BigQuery, הפונקציות מחזירות גם מרווח הסקה. טווח ההסקה מספק טווח של ערכים שהמודל בטוח ב-95% שהם מכילים את התוצאה בפועל.
קבלת הסבר אונליין באמצעות המודל שנפרס
אתם יכולים לבקש הסקה עם הסברים (שנקראים גם שיוך (Attribution) של מאפיינים) כדי לראות איך המודל הגיע להסקה. ערכי החשיבות של המאפיינים המקומיים מציינים את מידת התרומה של כל מאפיין לתוצאת ההסקה. שיוך התכונות נכלל בהיקשים של Agent Platform באמצעות Vertex AI ניתן להסברה.
המסוף
כשמשתמשים במסוף Google Cloud כדי לבקש הסקה אונליין, ערכי חשיבות המאפיינים המקומיים מוחזרים באופן אוטומטי.
אם השתמשתם בערכי החיזוי שמולאו מראש, כל ערכי חשיבות התכונות המקומיות הם אפס. הסיבה לכך היא שהערכים שמולאו מראש הם נתוני החיזוי הבסיסיים, ולכן החיזוי שמוחזר הוא ערך החיזוי הבסיסי.
gcloud
יוצרים קובץ בשם
request.jsonעם התוכן הבא:{ "instances": [ { PREDICTION_DATA_ROW } ] }מחליפים את מה שכתוב בשדות הבאים:
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מחרוזות וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
-
מריצים את הפקודה הבאה:
gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION_ID \ --json-request=request.json
מחליפים את מה שכתוב בשדות הבאים:
- ENDPOINT_ID: המזהה של נקודת הקצה.
- LOCATION_ID: האזור שבו אתם משתמשים ב-Agent Platform.
אם רוצים לשלוח בקשה להסבר ל-
DeployedModelספציפי ב-Endpoint, אפשר לציין את הדגל--deployed-model-id:gcloud ai endpoints explain ENDPOINT_ID \ --region=LOCATION \ --deployed-model-id=DEPLOYED_MODEL_ID \ --json-request=request.json
בנוסף לפלייסהולדרים שתוארו קודם, מחליפים את הערכים הבאים:
-
DEPLOYED_MODEL_ID אופציונלי: המזהה של המודל שנפרס ורוצים לקבל הסברים לגביו. המזהה נכלל בתשובה של ה-method
predict. אם אתם צריכים לבקש הסברים למודל מסוים, ויש לכם יותר ממודל אחד שנפרס באותה נקודת קצה, אתם יכולים להשתמש במזהה הזה כדי לוודא שההסברים יוחזרו למודל הספציפי הזה.
REST
בדוגמה הבאה מוצגת בקשה להסקת מסקנות אונליין למודל סיווג טבלאי עם שיוך תכונות מקומי. פורמט הבקשה זהה למודלים של רגרסיה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
LOCATION: האזור שבו נמצאת נקודת הקצה. לדוגמה,
us-central1. - PROJECT: .
- ENDPOINT_ID: המזהה של נקודת הקצה.
-
PREDICTION_DATA_ROW: אובייקט JSON שבו המפתחות הם שמות המאפיינים והערכים הם ערכי המאפיינים התואמים. לדוגמה, במערך נתונים עם שלושה מאפיינים – מספר, מערך של מחרוזות וקטגוריה – שורת הנתונים עשויה להיראות כמו בקשת הדוגמה הבאה:
"length":3.6, "material":"cotton", "tag_array": ["abc","def"]
צריך לספק ערך לכל מאפיין שנכלל באימון. הפורמט של הנתונים שמשמשים להסקת מסקנות חייב להיות זהה לפורמט שמשמש לאימון. פרטים נוספים זמינים במאמר פורמט הנתונים להסקת מסקנות.
-
DEPLOYED_MODEL_ID (אופציונלי): המזהה של המודל שנפרס, שעבורו רוצים לקבל הסברים. המזהה נכלל בתשובה של ה-method
predict. אם אתם צריכים לבקש הסברים למודל מסוים, ויש לכם יותר ממודל אחד שנפרס באותה נקודת קצה, אתם יכולים להשתמש במזהה הזה כדי לוודא שההסברים יוחזרו למודל הספציפי הזה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID:explain
גוף בקשת JSON:
{
"instances": [
{
PREDICTION_DATA_ROW
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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/endpoints/ENDPOINT_ID:explain"
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/endpoints/ENDPOINT_ID:explain" | Select-Object -Expand Content
Python
במאמר התקנת Vertex AI SDK ל-Python מוסבר איך להתקין או לעדכן את Vertex AI SDK ל-Python. מידע נוסף מופיע ב מאמרי העזרה של ה-API מבוסס-Python.
קבלת הסברים על חיזוי שהוחזר בעבר
הסברים מגדילים את השימוש במשאבים, לכן כדאי לבקש הסברים רק במצבים שבהם אתם באמת צריכים אותם. לפעמים כדאי לבקש הסברים לתוצאת הסקה שכבר קיבלתם, למשל אם ההסקה הייתה חריגה או לא הגיונית.
אם כל ההסברים מגיעים מאותו מודל, אפשר פשוט לשלוח מחדש את נתוני הבקשה, והפעם לבקש הסברים. עם זאת, אם יש לכם כמה מודלים שמחזירים הסקות, אתם צריכים לוודא שאתם שולחים את בקשת ההסבר למודל הנכון. כדי לראות הסברים למודל מסוים, צריך לכלול בבקשה את המזהה של המודל שנפרס deployedModelID, שמופיע בתגובה לבקשת ההסקה המקורית.
שימו לב שמזהה המודל שנפרס שונה ממזהה המודל.
פירוש תוצאות ההסבר
כדי לחשב את החשיבות של תכונה מקומית, קודם כל מחשבים את ציון ההסקה הבסיסי. ערכי הבסיס מחושבים מנתוני האימון, באמצעות הערך החציוני של מאפיינים מספריים והשכיח של מאפיינים קטגוריים. ההסקה שנוצרת מערכי הבסיס היא ציון ההסקה הבסיסי. ערכי הבסיס מחושבים פעם אחת למודל ולא משתנים.
בהסקה ספציפית, חשיבות המאפיין המקומית של כל מאפיין מציינת כמה המאפיין הזה הוסיף לתוצאה או הפחית ממנה בהשוואה לציון ההסקה הבסיסי. סכום כל הערכים של חשיבות המאפיינים שווה להפרש בין ציון ההסקה הבסיסי לבין תוצאת ההסקה.
במודלים של סיווג, הציון הוא תמיד בין 0.0 ל-1.0, כולל. לכן, ערכי החשיבות של מאפיינים מקומיים במודלים של סיווג הם תמיד בין -1.0 ל-1.0 (כולל).
לדוגמאות של שאילתות לשיוך תכונות ולמידע נוסף, קראו את המאמר שיוך תכונות לסיווג ולרגרסיה.פלט לדוגמה של הסקות והסברים
סיווג
המטען הייעודי (payload) שמוחזר מהסקה אונליין ממודל סיווג טבלאי עם חשיבות המאפיינים דומה לדוגמה הבאה.
הערך instanceOutputValue של 0.928652400970459 הוא ציון הסמך של הסיווג עם הציון הגבוה ביותר, במקרה הזה class_a. השדה baselineOutputValue מכיל את ציון ההסקה הבסיסי, 0.808652400970459. התכונה שהכי השפיעה על התוצאה הזו היא feature_3.
{
"predictions": [
{
"scores": [
0.928652400970459,
0.071347599029541
],
"classes": [
"class_a",
"class_b"
]
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 0.808652400970459,
"instanceOutputValue": 0.928652400970459,
"approximationError": 0.0058915703929231,
"featureAttributions": {
"feature_1": 0.012394922231235,
"feature_2": 0.050212341234556,
"feature_3": 0.057392736534209,
},
"outputIndex": [
0
],
"outputName": "scores"
}
],
}
]
"deployedModelId": "234567"
}
רגרסיה
המטען הייעודי (payload) שמוחזר להסקת מסקנות אונליין עם חשיבות המאפיינים ממודל רגרסיה טבלאי של AutoML נראה דומה לדוגמה הבאה.
השדה instanceOutputValue של 1795.1246466281819 הוא הערך החזוי, והשדות lower_bound ו-upper_bound מספקים את הרווח בר-הסמך של 95%.
השדה baselineOutputValue מכיל את ציון ההסקה הבסיסי, 1788.7423095703125. התכונה שהכי השפיעה על התוצאה הזו היא feature_3.
{
"predictions": [
{
"value": 1795.1246466281819,
"lower_bound": 246.32196807861328,
"upper_bound": 8677.51904296875
}
]
"explanations": [
{
"attributions": [
{
"baselineOutputValue": 1788.7423095703125,
"instanceOutputValue": 1795.1246466281819,
"approximationError": 0.0038215703911553,
"featureAttributions": {
"feature_1": 0.123949222312359,
"feature_2": 0.802123412345569,
"feature_3": 5.456264423211472,
},
"outputIndex": [
-1
]
}
]
}
],
"deployedModelId": "345678"
}