באמצעות פונקציות Cloud Run, אפשר לעבד עוד יותר את נתוני הפלט ממודל שאומן בהתאמה אישית ב-Vertex AI ומצמתי אפליקציות ב-BigQuery. אפשר להשתמש בשילובים האלה עם צמתי אפליקציות בדרכים הבאות:
- צומת Vertex AI custom model: אפשר להשתמש בפונקציות Cloud Run כדי לבצע עיבוד אחרי החיזוי של תוצאות ממודל מקורי בהתאמה אישית של Vertex AI.
- צומת BigQuery: שימוש בפונקציות Cloud Run כדי ליצור שורות מותאמות אישית ב-BigQuery עם ההערות המקוריות.
כל פונקציות Cloud Run שבהן אתם משתמשים ב-App Platform צריכות לעמוד בדרישות הבאות:
- פונקציות Cloud Run חייבות לספק טריגר HTTP.
- פונקציות Cloud Run צריכות לקבל מחרוזת JSON של
AppPlatformCloudFunctionRequestולהחזיר מחרוזת JSON שלAppPlatformCloudFunctionResponse. - סכימת מטען הייעוד של ההערה שמאוחסנת בבקשה ובתגובה צריכה להיות בהתאם למפרט של מודל היעד.
הגדרות API: AppPlatformMetadata, AppPlatformCloudFunctionRequest, AppPlatformCloudFunctionResponse
// Message of essential metadata of App Platform. // This message is usually attached to a certain model output annotation for // customer to identify the source of the data. message AppPlatformMetadata { // The application resource name. string application = 1; // The instance resource id. Instance is the nested resource of application // under collection 'instances'. string instance_id = 2; // The node name of the application graph. string node = 3; // The referred model resource name of the application node. string processor = 4; } // For any Cloud Run function based customer processing logic, customer's cloud // function is expected to receive AppPlatformCloudFunctionRequest as request // and send back AppPlatformCloudFunctionResponse as response. // Message of request from AppPlatform to Cloud Run functions. message AppPlatformCloudFunctionRequest { // The metadata of the AppPlatform for customer to identify the source of the // payload. AppPlatformMetadata app_platform_metadata = 1; // A general annotation message that uses struct format to represent different // concrete annotation protobufs. message StructedInputAnnotation { // The ingestion time of the current annotation. int64 ingestion_time_micros = 1; // The struct format of the actual annotation. protobuf.Struct annotation = 2; } // The actual annotations to be processed by the customized Cloud Run function. repeated StructedInputAnnotation annotations = 2; } // Message of the response from customer's Cloud Run function to AppPlatform. message AppPlatformCloudFunctionResponse { // A general annotation message that uses struct format to represent different // concrete annotation protobufs. message StructedOutputAnnotation { // The struct format of the actual annotation. protobuf.Struct annotation = 1; } // The modified annotations that is returned back to AppPlatform. // If the annotations fields are empty, then those annotations will be dropped // by AppPlatform. repeated StructedOutputAnnotation annotations = 2; }
דוגמאות לשימוש
אפשר להשתמש בקוד הבא כדי לבצע עיבוד לאחר העיבוד של הערות של מודל שעבר אימון מותאם אישית ב-Vertex AI, ולהחליף את ההערות בזוג קבוע של מפתח וערך.
Python
import functions_framework
from flask import jsonify
@functions_framework.http
def hello_http(request):
request_json = request.get_json(silent=True)
request_args = request.args
if request_json and 'annotations' in request_json:
annotations = []
for ele in request_json['annotations']:
for k, v in ele.items():
if k == "annotation":
if "predictions" in v:
# Replace the annotation.
v["predictions"][0] = {"user": "googler"}
annotations.append({"annotation" : v})
else:
annotations = 'Failure'
return jsonify(annotations=annotations)