ערכת ה-SDK של Vertex AI כוללת את מחלקות החיזוי הבאות. מחלקה אחת מיועדת לחיזוי באצווה. המחלקות האחרות קשורות לחיזוי אונליין או לחיזוי באמצעות Vector Search. למידע נוסף, אפשר לעיין במאמר סקירה כללית על קבלת חיזויים בפלטפורמת הסוכנים של Gemini Enterprise.
סיווג של חיזויים בקבוצות
תחזית באצווה היא קבוצה של בקשות לתחזיות אסינכרוניות. אתם שולחים בקשות לתחזיות באצווה ממקור המודל בלי לפרוס את המודל לנקודת קצה. תחזיות באצווה מתאימות למקרים שבהם אתם לא צריכים תשובה מיידית ורוצים לעבד נתונים באמצעות בקשה אחת. BatchPredictionJob הוא המחלקה היחידה ב-Vertex AI SDK שספציפית לתחזיות באצווה.
BatchPredictionJob
המחלקות BatchPredictionJob מייצגות קבוצה של בקשות לא סינכרוניות לתחזיות. יש שתי דרכים ליצור משימת חיזוי באצווה:
הדרך המועדפת ליצור משימת חיזוי באצווה היא להשתמש בשיטה
batch_predictב-Modelשאומן. השיטה הזו דורשת את הפרמטרים הבאים:-
instances_format: הפורמט של קובץ בקשת החיזוי באצווה:jsonl,csv,bigquery,tf-record,tf-record-gzipאוfile-list. -
prediction_format: הפורמט של קובץ התגובה של התחזית באצווה: jsonl,csv,bigquery,tf-record,tf-record-gzipאוfile-list. gcs_source:רשימה של נתיבים אחד או יותר ב-Cloud Storage לבקשות לחיזוי באצווה.-
gcs_destination_prefix: הנתיב ב-Cloud Storage שאליו Gemini Enterprise Agent Platform כותב את התחזיות.
בדוגמה הבאה אפשר לראות איך מפעילים את
Model.batch_predict:batch_prediction_job = model.batch_predict( instances_format="jsonl", predictions_format="jsonl", job_display_name="your_job_display_name_string", gcs_source=['gs://path/to/my/dataset.csv'], gcs_destination_prefix='gs://path/to/my/destination', model_parameters=None, starting_replica_count=1, max_replica_count=5, machine_type="n1-standard-4", sync=True )-
הדרך השנייה ליצור עבודת חיזוי באצווה היא לבצע קריאה לשיטה
BatchPredictionJob.create. השיטהBatchPredictionJob.createדורשת ארבעה פרמטרים:-
job_display_name: שם שאתם מקצים למשימת החיזוי של נתונים רבים בבת אחת. שימו לב: הפרמטרjob_display_nameהוא חובה ב-BatchPredictionJob.create, אבל הוא אופציונלי ב-Model.batch_predict. -
model_name: השם המלא או המזהה שלModelשאומן ומשמש ליצירת תחזיות באצווה. -
instances_format: הפורמט של קובץ בקשת התחזית באצווה: jsonl,csv,bigquery,tf-record,tf-record-gzipאוfile-list. -
predictions_format: הפורמט של קובץ התגובה של התחזית באצווה: jsonl,csv,bigquery,tf-record,tf-record-gzipאוfile-list.
-
שיעורים מקוונים בנושא חיזוי
תחזיות אונליין הן בקשות סנכרוניות שנשלחות לנקודת קצה של מודל. כדי לשלוח בקשה לחיזוי אונליין, צריך לפרוס את המודל לנקודת קצה. משתמשים בתחזיות אונליין כשרוצים תחזיות שנוצרות על סמך קלט של אפליקציה, או כשצריך תגובה מהירה של תחזית.
Endpoint
כדי לקבל תחזיות אונליין מהמודל, צריך לפרוס את המודל לנקודת קצה. כשפורסים מודל לנקודת קצה, מקשרים את משאבי המכונה הפיזיים למודל כדי שהוא יוכל לספק תחזיות אונליין.
אפשר לפרוס יותר ממודל אחד לנקודת קצה אחת. אפשר גם לפרוס מודל אחד לכמה נקודות קצה. מידע נוסף זמין במאמר בנושא שיקולים לפריסת מודלים.
כדי ליצור משאב Endpoint, צריך לפרוס את המודל. כשקוראים לשיטה Model.deploy, היא יוצרת ומחזירה Endpoint.
קטע הקוד הבא הוא דוגמה שמראה איך ליצור משימת אימון בהתאמה אישית, ליצור ולאמן מודל, ואז לפרוס את המודל לנקודת קצה.
# Create your custom training job
job = aiplatform.CustomTrainingJob(
display_name="my_custom_training_job",
script_path="task.py",
container_uri="us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest",
requirements=["google-cloud-bigquery>=2.20.0", "db-dtypes"],
model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest"
)
# Start the training and create your model
model = job.run(
dataset=dataset,
model_display_name="my_model_name",
bigquery_destination=f"bq://{project_id}"
)
# Create an endpoint and deploy your model to that endpoint
endpoint = model.deploy(deployed_model_display_name="my_deployed_model")
# Get predictions using test data in a DataFrame named 'df_my_test_data'
predictions = endpoint.predict(instances=df_my_test_data)
PrivateEndpoint
נקודת קצה פרטית היא כמו משאב Endpoint, רק שהתחזיות נשלחות ברשת מאובטחת לשירות התחזיות אונליין של Gemini Enterprise Agent Platform. אם הארגון רוצה לשמור על פרטיות של כל התעבורה, צריך להשתמש בנקודת קצה פרטית.
כדי להשתמש בנקודת קצה פרטית, צריך להגדיר את Gemini Enterprise Agent Platform כך שתהיה לה גישה לרשת של ענן וירטואלי פרטי (VPC). נדרש VPC כדי שנקודת הקצה הפרטית של התחזית תתחבר ישירות ל-Gemini Enterprise Agent Platform. מידע נוסף זמין במאמרים בנושא הגדרה של קישור בין רשתות VPC שכנות ושימוש בנקודות קצה פרטיות לחיזוי אונליין.
ModelDeploymentMonitoringJob
כדאי להשתמש במשאב
ModelDeploymentMonitoringJob
כדי לעקוב אחרי המודל ולקבל התראות אם יש חריגה שעלולה להשפיע על איכות התחזיות של המודל.
כשנתוני הקלט חורגים מהנתונים ששימשו לאימון המודל, הביצועים של המודל עלולים להידרדר, גם אם המודל לא השתנה. מעקב אחרי מודלים מנתח את תאריך הקלט כדי לזהות הטיה וסחף בתכונות:
- Skew מתרחשת כשפיזור הנתונים של התכונה בסביבת הייצור חורג מפיזור הנתונים של התכונה ששימשו לאימון המודל.
- סחף מתרחש כשנתוני התכונה בסביבת הייצור משתנים באופן משמעותי לאורך זמן.
מידע נוסף זמין במאמר מבוא למעקב אחר מודלים ב-Gemini Enterprise Agent Platform. דוגמה להטמעה של מעקב אחר מודלים ב-Gemini Enterprise Agent Platform באמצעות Vertex AI SDK זמינה במחברת Gemini Enterprise Agent Platform model monitoring with explainable AI feature attributions ב-GitHub.
סיווגים של הצעות להשלמת החיפוש בחיפוש וקטורי
חיפוש וקטורי הוא שירות מנוהל שיוצר אינדקסים של דמיון, או וקטורים, כדי לבצע התאמה של דמיון. יש שני שלבים כלליים לביצוע התאמה לפי דמיון:
ליצור ייצוג וקטורי של הנתונים. הנתונים יכולים להיות טקסט, תמונות, סרטונים, אודיו או נתונים טבלאיים.
התכונה Vector Search משתמשת בנקודות הקצה של הווקטורים שאתם יוצרים כדי לבצע חיפוש של וקטורים דומים בהיקף גדול ובזמן אחזור נמוך.
מידע נוסף אפשר למצוא במאמר בנושא סקירה כללית של חיפוש וקטורי ובמחברת Create a Vector Search index ב-GitHub.
MatchingEngineIndex
המחלקות MatchingEngineIndex מייצגות את האינדקסים או הווקטורים שאתם יוצרים, שמשמשים את Vector Search לביצוע חיפוש הדמיון.
יש שני אלגוריתמים לחיפוש שאפשר להשתמש בהם לאינדקס:
-
TreeAhConfigמשתמש באלגוריתם tree-AH (עץ רדוד באמצעות גיבוב אסימטרי). משתמשים ב-MatchingEngineIndex.create_tree_ah_indexכדי ליצור אינדקס שמשתמש באלגוריתם tree-AH. BruteForceConfigמשתמשת בחיפוש ליניארי רגיל) משתמשים ב-MatchingEngineIndex.create_brute_force_indexכדי ליצור אינדקס שמשתמש בחיפוש ליניארי רגיל.
מידע נוסף על הגדרת האינדקסים זמין במאמר הגדרת אינדקסים.
הקוד הבא הוא דוגמה ליצירת אינדקס שמשתמש באלגוריתם tree-AH:
my_tree_ah_index = aiplatform.Index.create_tree_ah_index(
display_name="my_display_name",
contents_delta_uri="gs://my_bucket/embeddings",
dimensions=1,
approximate_neighbors_count=150,
distance_measure_type="SQUARED_L2_DISTANCE",
leaf_node_embedding_count=100,
leaf_nodes_to_search_percent=50,
description="my description",
labels={ "label_name": "label_value" }
)
הקוד הבא הוא דוגמה ליצירת אינדקס שמשתמש באלגוריתם של חיפוש בכוח:
my_brute_force_index = aiplatform.Index.create_brute_force_index(
display_name="my_display_name",
contents_delta_uri="gs://my_bucket/embeddings",
dimensions=1,
approximate_neighbors_count=150,
distance_measure_type="SQUARED_L2_DISTANCE",
description="my description",
labels={ "label_name": "label_value" }
)
MatchingEngineIndexEndpoint
משתמשים במחלקה MatchingEngineIndexEndpoint כדי ליצור ולאחזר נקודת קצה. אחרי שמפעילים מודל בנקודת הקצה, מקבלים כתובת IP שמשמשת להפעלת השאילתות.
הקוד הבא הוא דוגמה ליצירת נקודת קצה של אינדקס Matching Engine ואז לפריסת אינדקס Matching Engine אליה:
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
display_name="sample_index_endpoint",
description="index endpoint description",
network="projects/123456789123/global/networks/my_vpc"
)
my_index_endpoint = my_index_endpoint.deploy_index(
index=my_tree_ah_index, deployed_index_id="my_matching_engine_index_id"
)
המאמרים הבאים
- מידע נוסף על Vertex AI SDK