בדף הזה מוסבר איך לקבל מסקנות והסברים אונליין (בזמן אמת) ממודלים של סיווג טבלאי או רגרסיה שאומנו ב-AutoML, באמצעות מסוף Google Cloud או Agent Platform API.
הסקת מסקנות אונליין היא בקשה סינכרונית, בניגוד להסקת מסקנות באצווה, שהיא בקשה אסינכרונית. משתמשים בהסקת מסקנות אונליין כששולחים בקשות בתגובה לקלט של אפליקציה או במצבים אחרים שבהם נדרשת הסקת מסקנות בזמן אמת.
כדי להשתמש במודל להצגת מסקנות אונליין, צריך קודם לפרוס את המודל לנקודת קצה. פריסת מודל משייכת משאבים פיזיים למודל, כדי שיוכל להכניס לשימוש בסביבת הייצור היקשים אונליין עם זמן אחזור קצר.
הנושאים שמוסברים במאמר:
- פריסת מודל בנקודת קצה
- קבלת הסקת מסקנות אונליין באמצעות המודל שפרסתם
- קבלת הסבר אונליין באמצעות המודל שפרסתם
לפני שמתחילים
כדי לקבל מסקנות אונליין, קודם צריך לאמן מודל סיווג או רגרסיה ולהעריך את רמת הדיוק שלו.
פריסת מודל בנקודת קצה
אפשר לפרוס יותר ממודל אחד לנקודת קצה, ואפשר לפרוס מודל ליותר מנקודת קצה אחת. מידע נוסף על אפשרויות ועל תרחישי שימוש להטמעה של מודלים
כדי לפרוס מודל, משתמשים באחת מהשיטות הבאות:
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Models.
לוחצים על שם המודל שרוצים לפרוס כדי לפתוח את דף הפרטים שלו.
בוחרים בכרטיסייה Deploy & Test (פריסה ובדיקה).
אם המודל כבר נפרס בנקודות קצה כלשהן, הן מפורטות בקטע Deploy your model.
לוחצים על Deploy to endpoint.
בדף Define your endpoint, מגדירים את האפשרויות הבאות:
אפשר לבחור לפרוס את המודל לנקודת קצה חדשה או לנקודת קצה קיימת.
- כדי לפרוס את המודל לנקודת קצה חדשה, בוחרים באפשרות יצירת נקודת קצה חדשה ומזינים שם לנקודת הקצה החדשה.
- כדי לפרוס את המודל לנקודת קצה קיימת, בוחרים באפשרות הוספה לנקודת קצה קיימת ובוחרים את נקודת הקצה מהרשימה הנפתחת.
- אפשר להוסיף יותר ממודל אחד לנקודת קצה, ואפשר להוסיף מודל ליותר מנקודת קצה אחת. מידע נוסף
לוחצים על Continue.
בדף Model settings, קובעים את ההגדרות הבאות:
-
אם אתם פורסים את המודל לנקודת קצה חדשה, צריך להזין 100 בחלוקת התנועה. אם אתם פורסים את המודל לנקודת קצה קיימת שכבר פרוסים בה מודל אחד או יותר, אתם צריכים לעדכן את אחוז חלוקת התנועה של המודל שאתם פורסים ושל המודלים שכבר פרוסים, כך שסכום האחוזים יהיה 100%.
-
מזינים את המספר המינימלי של צמתי מחשוב שרוצים לספק עבור המודל.
זה מספר הצמתים שזמינים למודל הזה בכל רגע נתון. תחויבו על הצמתים שבהם נעשה שימוש, בין אם כדי לטפל בעומס של הסקת מסקנות או עבור צמתים במצב המתנה (מינימום), גם אם אין תנועה של הסקת מסקנות. לעיון בתמחור
-
בוחרים את סוג המכונה.
הגדלת משאבי המכונה תשפר את ביצועי ההסקה ותגדיל את העלויות.
-
לוחצים על המשך.
-
בדף Model monitoring (מעקב אחרי המודל), לוחצים על Continue (המשך).
בדף Monitoring objectives, מגדירים את ההגדרות הבאות:
- מזינים את המיקום של נתוני האימון.
- מזינים את השם של עמודת היעד.
לוחצים על Deploy (פריסה) כדי לפרוס את המודל בנקודת הקצה.
API
כשפורסים מודל באמצעות Agent Platform API, מבצעים את השלבים הבאים:
- אם צריך, יוצרים נקודת קצה.
- מוצאים את מזהה נקודת הקצה.
- פורסים את המודל בנקודת הקצה.
יצירת נקודת קצה
אם אתם פורסים מודל לנקודת קצה קיימת, אתם יכולים לדלג על השלב הזה.
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: [מזהה הפרויקט](/resource-manager/docs/creating-managing-projects#identifiers). .
- 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.
קבלת מזהה נקודת הקצה
כדי לפרוס את המודל, צריך את מזהה נקודת הקצה.
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 כבר יש משאבים אחרים, אפשר לפצל את התנועה בין המשאבים החדשים לבין המשאבים הישנים.DeployedModelEndpointDeployedModel
לדוגמה, כדי לשלוח 20% מהתנועה ל-DeployedModel החדש ו-80% מהתנועה ל-DeployedModel ישן יותר, מריצים את הפקודה הבאה.
לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- 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
משתמשים בשיטה 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.
Node.js
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Node.jsההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
איך משנים את הגדרות ברירת המחדל של רישום מסקנות
קבלת סטטוס פעולה
חלק מהבקשות מפעילות תהליכים ארוכים שדורשים זמן להשלמה. הבקשות האלה מחזירות שם פעולה, שאפשר להשתמש בו כדי לראות את הסטטוס של הפעולה או לבטל אותה. Agent Platform מספקת שיטות עזר לביצוע קריאות לפעולות ממושכות. מידע נוסף זמין במאמר בנושא עבודה עם פעולות ממושכות.
קבלת הסקה אונליין באמצעות המודל שפרסתם
כדי לבצע הסקה אונליין, שולחים פריט בדיקה אחד או יותר למודל לצורך ניתוח, והמודל מחזיר תוצאות שמבוססות על היעד של המודל. משתמשים ב Google Cloud מסוף או ב-Agent Platform API כדי לבקש הסקה אונליין.
מסוף Google Cloud
במסוף Google Cloud , בקטע Agent Platform, עוברים לדף Models.
ברשימת המודלים, לוחצים על שם המודל כדי לבקש מסקנות.
בוחרים בכרטיסייה Deploy & test (פריסה ובדיקה).
בקטע Test your model (בדיקת המודל), מוסיפים פריטי בדיקה כדי לבקש הסקה. נתוני ההסקה של נקודת הבסיס ימולאו בשבילכם, או שתוכלו להזין נתוני הסקה משלכם וללחוץ על חיזוי.
אחרי שההסקה מסתיימת, Gemini Enterprise Agent Platform מחזירה את התוצאות במסוף.
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
משתמשים בשיטה 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.
API: Regression
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
משתמשים בשיטה 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.
פירוש תוצאות התחזית
סיווג
מודלים של סיווג מחזירים ציון מהימנות.
ציון הביטחון מציין את עוצמת השיוך של כל סיווג או תווית לפריט בדיקה במודל. ככל שהמספר גבוה יותר, כך רמת הביטחון של המודל גבוהה יותר לגבי ההחלטה להחיל את התווית על הפריט הזה. אתם קובעים מה צריך להיות ציון מהימנות התוצאות כדי שתקבלו את התוצאות של המודל.
רגרסיה
מודלים של רגרסיה מחזירים ערך הסקה. בנוסף, כשמדובר ביעדים ב-BigQuery, הם מחזירים גם מרווח היקש. רווח ההסקה מספק טווח של ערכים שהמודל בטוח ב-95% שהוא מכיל את התוצאה בפועל.
קבלת הסבר אונליין באמצעות המודל שפרסתם
אתם יכולים לבקש הסבר על ההסקה (שנקרא גם שיוך תכונות) כדי לראות איך המודל הגיע להסקה. ערכי החשיבות של התכונות המקומיות מציינים את מידת התרומה של כל תכונה לתוצאת ההסקה. ייחוס תכונות כלול בהיקשים של 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. מידע נוסף מופיע ב מאמרי העזרה של Python API.
קבלת הסברים על חיזוי שהוחזר בעבר
ההסברים מגדילים את השימוש במשאבים, ולכן כדאי להשתמש בהם רק כשצריכים אותם באופן ספציפי. לפעמים כדאי לבקש הסברים לתוצאת היקש שכבר קיבלתם, למשל אם ההיקש היה חריג חשוד טעות או לא הגיוני.
אם כל ההסקות שלכם מגיעות מאותו מודל, אתם יכולים פשוט לשלוח מחדש את נתוני הבקשה, ולבקש הסברים הפעם. עם זאת, אם יש לכם כמה מודלים שמחזירים מסקנות, אתם צריכים לוודא שאתם שולחים את בקשת ההסבר למודל הנכון. כדי לראות הסברים על מודל מסוים, צריך לכלול בבקשה את מזהה המודל שפרסתם 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"
}