ה-SDK של Vertex AI כולל את מחלקות החיזוי הבאות. מחלקת אחת מיועדת לחיזויים רבים בבת אחת. האחרים קשורים לחיזויים אונליין או לחיזויים של חיפוש וקטורי. מידע נוסף זמין במאמר סקירה כללית על קבלת תחזיות ב-Gemini Enterprise Agent Platform.
סיווג של חיזויים בקבוצות
חיזוי באצווה הוא קבוצה של בקשות לא סנכרוניות לחיזוי. אתם שולחים בקשה לתחזיות אצווה ממשאב המודל בלי לפרוס את המודל לנקודת קצה. תחזיות באצווה מתאימות למקרים שבהם לא נדרשת תגובה מיידית ורוצים לעבד נתונים באמצעות בקשה אחת.
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. ה-methodBatchPredictionJob.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.
סיווגים של הצעות להשלמת החיפוש בחיפוש וקטורי
חיפוש וקטורי הוא שירות מנוהל שיוצר אינדקסים של דמיון, או וקטורים, כדי לבצע התאמה של דמיון. יש שני שלבים כלליים לביצוע התאמה לפי דמיון:
יוצרים ייצוג וקטורי של הנתונים. הנתונים יכולים להיות טקסט, תמונות, סרטונים, אודיו או נתונים טבלאיים.
חיפוש וקטורי משתמש בנקודות הקצה של הווקטורים שאתם יוצרים כדי לבצע חיפוש של וקטורים דומים בהיקף גדול ובזמן אחזור נמוך.
מידע נוסף אפשר למצוא במאמר בנושא סקירה כללית של חיפוש וקטורי ובמחברת Create a Vector Search index ב-GitHub.
MatchingEngineIndex
המחלקות MatchingEngineIndex מייצגות את האינדקסים או הווקטורים שאתם יוצרים, שמשמשים את Vector Search לביצוע חיפוש הדמיון.
יש שני אלגוריתמים לחיפוש שאפשר להשתמש בהם לאינדקס:
-
TreeAhConfigמשתמש באלגוריתם shallow the 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