אחרי שיוצרים את מקור הנתונים ומוסיפים את צמתי העיבוד לאפליקציה, צריך לבחור לאן לשלוח את הנתונים המעובדים. אפשרות אחת היא לקבל את הפלט של אפליקציית השידור החי ישירות, כדי שתוכלו לפעול בהתאם לניתוח הנתונים בזמן אמת.
באופן כללי, מגדירים את האפליקציה לאחסון פלט המודל בGoogle Cloud מחסן נתונים כמו Media Warehouse של Gemini Enterprise Agent Platform Vision או BigQuery.
אחרי שהנתונים מאוחסנים באחד ממחסני הנתונים האלה, אפשר להשתמש בהם למשימות ניתוח אופליין על סמך גרף האפליקציה. עם זאת, אפשר גם לקבל את הפלט של המודל בשידור חי. אתם יכולים להגדיר את Gemini Enterprise Agent Platform Vision להעביר את התוצאות של המודל למשאב של סטרימינג, ולהשתמש בכלי של שורת הפקודה (vaictl) או ב-API של Gemini Enterprise Agent Platform Vision כדי לצרוך אותן בזמן אמת.
נניח שיש לכם גרף של אפליקציה עם שלושה צמתים:
- צומת מקור הנתונים 'מקור נתונים' (
input-stream) - צומת העיבוד 'ספירת תפוסה' (
occupancy-count) - צומת היעד של פלט האפליקציה 'מאגר מדיה' (
warehouse)
הפלט של האפליקציה נשלח כרגע מהסטרימינג לתהליך של ספירת התפוסה, ואז אל Media Warehouse של Gemini Enterprise Agent Platform Vision, שם הוא נשמר.
הגדרת אפליקציית API:
|
{
"applicationConfigs": {
"nodes": [
{
"displayName": "Input Stream",
"name": "input-stream",
"processor": "builtin:stream-input"
},
{
"displayName": "Occupancy Count",
"name": "occupancy-count",
"nodeConfig": {
"occupancyCountConfig": {
"enablePeopleCounting": true,
"enableVehicleCounting": true
}
},
"parents": [
{
"parentNode": "input-stream"
}
],
"processor": "builtin:occupancy-count"
},
{
"displayName": "Media Warehouse",
"name": "warehouse",
"nodeConfig": {
"mediaWarehouseConfig": {
"corpus": "projects/PROJECT_ID/locations/LOCATION_ID/corpora/CORPUS_ID",
"ttl": "86400s"
}
},
"parents": [
{
"parentNode": "input-stream"
},
{
"parentNode": "occupancy-count"
}
],
"processor": "builtin:media-warehouse"
}
]
}
} |
הפעלת פלט של סטרימינג (Google Cloud מסוף)
אפשר להפעיל את הפלט של הסטרימינג במסוף Google Cloud כשפורסים את המודל בפעם הראשונה, או כשמבטלים את הפריסה ואז פורסים מחדש את המודל.
המסוף
פותחים את הכרטיסייה Applications (אפליקציות) במרכז הבקרה של Gemini Enterprise Agent Platform Vision.
לצד שם האפליקציה ברשימה, בוחרים באפשרות הצגת האפליקציה.
בדף של הכלי ליצירת גרף של אפליקציות, לוחצים על הלחצן פריסה.
בתפריט האפשרויות של Deploy application שנפתח, בוחרים באפשרות Enable output streaming.

בתפריט הנפתח Model(s) (מודלים) הרלוונטי, בוחרים את המודלים שרוצים להפעיל עבורם את האפשרות של פלט בסטרימינג .
לוחצים על פריסה.
הפעלת פלט של סטרימינג (API)
עדכון צומת האפליקציה
אפשר לעדכן את ההגדרה של אפליקציה בשורת הפקודה כדי שצומת של מודל ישלח פלט לסטרימינג באופן ספציפי.
אחרי שמסיימים את השלב הזה, אפשר לעדכן את מופע האפליקציה כדי לציין את משאב הנתונים של הסטרימינג שמקבל את נתוני הפלט של צומת הניתוח.
REST
בדוגמה הזו נעשה שימוש בשיטה projects.locations.applications.patch. הבקשה הזו מעדכנת את הגדרת אפליקציית ה-API מהאפליקציה לדוגמה הקודמת, כך שהצומת occupancy-count ישלח הערות פלט לזרם של Gemini Enterprise Agent Platform Vision. ההתנהגות הזו מופעלת באמצעות השדה output_all_output_channels_to_stream.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT: מזהה הפרויקט או מספר הפרויקט ב- Google Cloud.
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform Vision. לדוגמה:
us-central1, europe-west4. אזורים זמינים - APPLICATION_ID: המזהה של אפליקציית היעד.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID
גוף בקשת JSON:
{
"applicationConfigs": {
"nodes": [
{
"displayName": "Input Stream",
"name": "input-stream",
"processor": "builtin:stream-input"
},
{
"displayName": "Occupancy Count",
"name": "occupancy-count",
"nodeConfig": {
"occupancyCountConfig": {
"enablePeopleCounting": true,
"enableVehicleCounting": true
}
},
"parents": [
{
"parentNode": "input-stream"
}
],
"processor": "builtin:occupancy-count",
"output_all_output_channels_to_stream": true
}
]
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
curl
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID"
PowerShell
שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID" | Select-Object -Expand Content
200 OK ללא שגיאה, והשירות מעדכן את משאב האפליקציה בהתאם.
עדכון מופע האפליקציה
בדוגמה הקודמת אפשר לראות איך מעדכנים את האפליקציה, וכך מאפשרים לצומת היעד לשלוח פלט לזרם. אחרי שמפעילים את האפשרות הזו, אפשר לעדכן את מופע האפליקציה כדי לציין את משאב הסטרימינג שמקבל את נתוני הפלט של צומת הניתוח.
אם לא מציינים זרם בפקודה הזו, פלטפורמת האפליקציה ממשיכה להשתמש בזרם ברירת מחדל שנוצר כשצומת האפליקציה נפרס.
צריך ליצור משאב סטרימינג שהצומת ישלח אליו את הפלט
לפני ששולחים את הבקשה הבאה.
REST
בדוגמה הזו נשתמש בשיטה projects.locations.applications.updateApplicationInstances. הבקשה הזו משתמשת בהגדרת אפליקציית ה-API המעודכנת מאפליקציית הדוגמה הקודמת. קבוצת פקודות העדכון הקודמת הגדירה את הצומת occupancy-count כך שיוכל לשלוח הערות פלט לזרם של Gemini Enterprise Agent Platform Vision. הפקודה הזו
מעדכנת את מופע האפליקציה כדי לשלוח את הנתונים מהצומת occupancy-count
של היצרן למשאב קיים של הזרם.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT: מזהה הפרויקט או מספר הפרויקט ב- Google Cloud.
- LOCATION_ID: האזור שבו משתמשים ב-Agent Platform Vision. לדוגמה:
us-central1, europe-west4. אזורים זמינים - APPLICATION_ID: המזהה של אפליקציית היעד.
-
inputResources: משאב הקלט (או המשאבים) של מופע האפליקציה הנוכחי. זהו מערך של אובייקטים שמכילים את השדות הבאים:-
consumerNode: השם של צומת הגרף שמקבל את משאב הקלט. inputResource: שם המשאב המלא של הקלט.
-
-
outputResources.outputResource: משאבstreamשאליו רוצים להוציא את נתוני האפליקציה. -
outputResources.producerNode: השם של צומת הפקת הפלט של האפליקציה. בדוגמה הזו זהו צומת הניתוח,occupancy-count. - INSTANCE_ID: המזהה של מופע האפליקציה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances
גוף בקשת JSON:
{
"applicationInstances": [
{
"instance": {
"inputResources": [
{
"consumerNode": "input-stream",
"inputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/INPUT_STREAM_ID"
}
],
"outputResources":[
{
"outputResource": "projects/PROJECT_NUMBER/locations/LOCATION_ID/clusters/application-cluster-0/streams/OUTPUT_STREAM_ID",
"producerNode": "occupancy-count"
}
]
},
"instanceId": INSTANCE_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://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances"
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://visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/applications/APPLICATION_ID:updateApplicationInstances" | Select-Object -Expand Content
200 OK ללא שגיאה, והשירות מעדכן את מופע האפליקציה בהתאם.