ה-Vertex AI SDK כולל את מחלקות החיזוי הבאות. מחלקת אחת מיועדת לתחזיות אצווה. האחרים קשורים לחיזויים אונליין או לחיזויים של חיפוש וקטורי. מידע נוסף זמין במאמר סקירה כללית על קבלת תחזיות ב-Vertex AI.
Batch prediction class
חיזוי באצווה הוא קבוצה של בקשות לא סנכרוניות לחיזוי. אתם שולחים בקשה לתחזיות אצווה ממשאב המודל בלי לפרוס את המודל לנקודת קצה. תחזיות באצווה מתאימות למקרים שבהם לא נדרשת תגובה מיידית ורוצים לעבד נתונים באמצעות בקשה אחת.
BatchPredictionJob היא המחלקה היחידה ב-Vertex AI SDK שספציפית לחיזויים של Batch.
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 שאליו Vertex AI כותב את התחזיות.
בדוגמה הבאה אפשר לראות איך אפשר להפעיל את
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 )-
הדרך השנייה ליצור עבודת חיזוי באצווה היא לבצע קריאה ל-method
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, אבל התחזיות נשלחות ברשת מאובטחת לשירות התחזיות אונליין של Vertex AI. אם הארגון רוצה לשמור על פרטיות של כל התעבורה, צריך להשתמש בנקודת קצה פרטית.
כדי להשתמש בנקודת קצה פרטית, צריך להגדיר את Vertex AI כך שתהיה לה גישה לרשת של ענן וירטואלי פרטי (VPC). כדי שנקודת הקצה הפרטית של התחזית תתחבר ישירות ל-Vertex AI, צריך להשתמש ב-VPC. מידע נוסף זמין במאמרים בנושא הגדרה של קישור בין רשתות VPC שכנות ושימוש בנקודות קצה פרטיות לחיזוי אונליין.
ModelDeploymentMonitoringJob
אפשר להשתמש במשאב ModelDeploymentMonitoringJob כדי לעקוב אחרי המודל ולקבל התראות אם יש חריגה שעלולה להשפיע על איכות התחזיות של המודל.
כשנתוני הקלט שונים מהנתונים ששימשו לאימון המודל, יכול להיות שביצועי המודל יורדים, גם אם המודל לא השתנה. ניטור המודל מנתח את תאריך הקלט כדי לזהות הטיה וסחף בתכונות:
- Skew מתרחשת כשפיזור הנתונים של התכונה בייצור חורג מפיזור הנתונים של התכונה ששימשו לאימון המודל.
- סחף מתרחש כשנתוני התכונה בסביבת הייצור משתנים באופן משמעותי לאורך זמן.
מידע נוסף זמין במאמר מבוא למעקב אחרי מודלים ב-Vertex AI. דוגמה לאופן ההטמעה של מעקב ב-Vertex AI באמצעות Vertex AI SDK מופיעה במחברת Vertex AI model monitoring with explainable AI feature attributions ב-GitHub.
מחלקות חיזוי של חיפוש וקטור
חיפוש וקטורי הוא שירות מנוהל שיוצר אינדקסים של דמיון, או וקטורים, כדי לבצע התאמה לפי דמיון. יש שני שלבים כלליים לביצוע התאמה לפי דמיון:
יוצרים ייצוג וקטורי של הנתונים. הנתונים יכולים להיות טקסט, תמונות, סרטונים, אודיו או נתונים טבלאיים.
התכונה Vector Search משתמשת בנקודות הקצה של הווקטורים שאתם יוצרים כדי לבצע חיפוש של וקטורים דומים בהיקף גדול ובזמן אחזור נמוך.
מידע נוסף זמין במאמר בנושא סקירה כללית של חיפוש וקטורי ובמחברת Create a Vector Search index ב-GitHub.
MatchingEngineIndex
המחלקות MatchingEngineIndex מייצגות את האינדקסים או הווקטורים שאתם יוצרים, שחיפוש וקטורי משתמש בהם כדי לבצע את חיפוש הדמיון.
יש שני אלגוריתמים לחיפוש שאפשר להשתמש בהם לאינדקס:
-
TreeAhConfigמשתמש באלגוריתם עץ רדוד (עץ רדוד באמצעות גיבוב אסימטרי). משתמשים ב-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"
)