באמצעות Vertex AI Feature Store אפשר לתזמן ולהריץ משימות של מעקב אחרי תכונות כדי לעקוב אחרי נתוני התכונות, לאחזר נתונים סטטיסטיים של התכונות ולזהות סחף של תכונות. אפשר לעקוב אחרי נתוני תכונות רק אם רשמתם את מקור נתוני התכונות במרכז רישום התכונות.
כדי לעקוב אחרי נתוני התכונות, אפשר ליצור את משאב FeatureMonitor מתחת למשאב FeatureGroup. במהלך יצירת משאב FeatureMonitor, אפשר להגדיר את לוח הזמנים של המעקב כך שמשימות המעקב יופעלו מעת לעת על נתוני התכונה. לחלופין, אפשר להריץ ידנית משימה של מעקב אחרי תכונות כדי לעקוב אחרי נתוני התכונות מחוץ ללוח הזמנים של המעקב.
לכל משימת מעקב שמופעלת, Vertex AI Feature Store יוצר משאב FeatureMonitorJob שאפשר לאחזר כדי לראות את הנתונים הסטטיסטיים של התכונות ומידע על סחף שזוהה בנתוני התכונות.
לפני שמתחילים
לפני שמתחילים לעקוב אחרי תכונות באמצעות Vertex AI Feature Store, צריך להשלים את הדרישות המוקדמות שמפורטות בקטע הזה.
רישום של מקור נתונים של תכונות
כדי לרשום את מקור הנתונים של התכונות מ-BigQuery במאגר התכונות, צריך ליצור קבוצות תכונות ותכונות. משאבי FeatureMonitor שמשמשים לאחזור ולמעקב אחרי נתונים סטטיסטיים של תכונות משויכים לקבוצות של תכונות.
אימות ב-Agent Platform
מאמתים את Gemini Enterprise Agent Platform, אלא אם כבר עשיתם זאת.
צריך לבחור את הכרטיסייה הרלוונטית לאופן שבו תכננתם להשתמש בדוגמאות בדף הזה:
Python
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של Python שבדף הזה, מתקינים ומפעילים את ה-CLI של gcloud, ואז מגדירים את Application Default Credentials באמצעות פרטי הכניסה של המשתמש.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
אם אתם משתמשים במעטפת מקומית, אתם צריכים ליצור פרטי כניסה לאימות מקומי עבור חשבון המשתמש:
gcloud auth application-default login
אם אתם משתמשים ב-Cloud Shell, אין צורך לבצע את הפעולה הזו.
אם מוחזרת שגיאת אימות ואתם משתמשים בספק זהויות חיצוני (IdP), ודאו ש נכנסתם ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
REST
כדי להשתמש בסביבת פיתוח מקומית בדוגמאות של API בארכיטקטורת REST שבדף הזה, צריך להשתמש בפרטי הכניסה שאתם נותנים ל-CLI של gcloud.
התקינו את ה-CLI של Google Cloud.
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מידע נוסף מופיע במאמר אימות לשימוש ב-REST במסמכי האימות של Google Cloud .
יצירת מעקב אחרי תכונות עם לוח זמנים למעקב
כדי לאחזר נתונים סטטיסטיים של תכונות ולעקוב אחריהם, יוצרים משאב FeatureMonitor ומציינים את לוח הזמנים להפעלת משימות של מעקב אחרי תכונות ולאחזור נתונים סטטיסטיים של התכונות שרשומות בקבוצת התכונות.
אפשר להשתמש בדוגמאות הבאות כדי ליצור משאב FeatureMonitor. כדי להגדיר כמה לוחות זמנים לאותה קבוצת תכונות, צריך ליצור כמה FeatureMonitor משאבים.
REST
כדי ליצור משאב FeatureMonitor ולתזמן משימות של ניטור תכונות, שולחים בקשת POST באמצעות method featureMonitors.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו רוצים ליצור את הכלי למעקב אחרי תכונות, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שבה הגדרתם את מעקב התכונות.
- FEATURE_MONITOR_NAME: שם לניטור התכונה החדשה שרוצים ליצור.
- FEATURE_ID_1 ו-FEATURE_ID_2: המזהים של התכונות שרוצים לעקוב אחריהן.
- DRIFT_THRESHOLD_1 ו-DRIFT_THRESHOLD_2: ספי שינוי לכל תכונה
שכלולה בכלי למעקב אחרי תכונות. הסף של הסחף משמש לזיהוי אנומליות, כמו סחף של תכונות. מזינים ערך בטווח
[0, 1). אם לא מזינים ערך, ערך הסף מוגדר כ-0.3כברירת מחדל.
Vertex AI Feature Store משווה את התמונות מביצועים עוקבים של משימות מעקב אחרי תכונות ומחשב סטיות באמצעות הפונקציה ML.TFDV_VALIDATE ב-BigQuery. כדי לסווג אנומליות, נעשה שימוש במרחק L-infinity עבור מאפיינים קטגוריים ובדיברגנציה של Jensen-Shannon עבור מאפיינים מספריים. - CRON: ביטוי של תזמון cron שמייצג את התדירות של הרצת משימת המעקב אחרי התכונה. מידע נוסף זמין במאמר בנושא cron.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME
גוף בקשת JSON:
{
"feature_selection_config": {
"feature_configs": [
{"feature_id":"FEATURE_ID_1", "drift_threshold": "DRIFT_THRESHOLD_1" },
{"feature_id":"FEATURE_ID_2", "drift_threshold": "DRIFT_THRESHOLD_2" }
],
},
"schedule_config": {
"cron": "CRON"
}
}
כדי לשלוח את הבקשה עליכם לבחור אחת מהאפשרויות הבאות:
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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME"
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://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors?feature_monitor_id=FEATURE_MONITOR_NAME" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.aiplatform.v1beta1.CreateFeatureMonitorOperationMetadata",
"genericMetadata": {
"createTime": "2024-12-15T19:35:03.975958Z",
"updateTime": "2024-12-15T19:35:03.975958Z"
}
}
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
def create_feature_monitor_sample(
project: str,
location: str,
existing_feature_group_id: str,
feature_monitor_id: str,
feature_selection_configs: List[Tuple[str, float]]
schedule_config: str # Cron string. For example, "0 * * * *" indicates hourly execution.
):
aiplatform.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = feature_store.FeatureGroup("FEATUREGROUP_NAME")
feature_monitor = feature_group.create_feature_monitor(
name= "FEATURE_MONITOR_NAME",
feature_selection_configs=[("FEATURE_ID_1", DRIFT_THRESHOLD_1),("FEATURE_ID_2", DRIFT_THRESHOLD_2)],
schedule_config="CRON"
)
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו רוצים ליצור את הכלי למעקב אחרי תכונות, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שבה הגדרתם את מעקב התכונות.
- FEATURE_MONITOR_NAME: שם לניטור התכונה החדשה שרוצים ליצור.
- FEATURE_ID_1 ו-FEATURE_ID_2: המזהים של התכונות שרוצים לעקוב אחריהן.
- DRIFT_THRESHOLD_1 ו-DRIFT_THRESHOLD_2: ספי שינוי לכל תכונה
שנכללת בכלי למעקב אחרי תכונות. הסף של הסחף משמש לזיהוי סחף של תכונות. צריך להזין ערך בין
0ל-1. אם לא מזינים ערך, ערך הסף מוגדר כ-0.3כברירת מחדל.
Vertex AI Feature Store משווה בין תמונת מצב של הנתונים ממשימת המעקב הנוכחית אחרי התכונות לבין תמונת המצב של הנתונים ממשימת המעקב הקודמת אחרי התכונות. שימו לב: כדי לחשב את סטיית ההתפלגות, Vertex AI Feature Store משתמש בפונקציה ML.TFDV_VALIDATE ב-BigQuery.
לגבי המדד שמשמש להשוואת נתונים סטטיסטיים, נעשה שימוש במרחק L-אינסוף עבור תכונות קטגוריות, ובשונות ג'נסן-שאנון עבור תכונות מספריות. - CRON: ביטוי של תזמון cron שמייצג את התדירות של הפעלת משימת המעקב אחרי התכונה. מידע נוסף זמין במאמר בנושא cron.
הפעלת משימת ניטור תכונות באופן ידני
אתם יכולים לדלג על ההמתנה בין משימות עוקבות של ניטור תכונות מתוזמנות ולהריץ משימת ניטור תכונות באופן ידני. זה שימושי אם אתם רוצים לאחזר מידע על ניטור ולזהות חריגות בנתוני התכונות באופן מיידי, במקום לחכות להרצת משימת הניטור המתוזמנת הבאה.
REST
כדי להריץ ידנית משימת מעקב אחר תכונות על ידי יצירת משאב FeatureMonitorJob , שולחים בקשת POST באמצעות השיטה featureMonitorJobs.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו רוצים להריץ את משימת המעקב אחרי התכונה, כמו
us-central1. - FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - PROJECT_ID: מזהה הפרויקט.
- FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו רוצים להריץ את משימת המעקב אחר התכונה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_ID/featureMonitorJobs" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME}")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_job = feature_monitor.create_feature_monitor_job()
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו רוצים להריץ את משימת המעקב אחרי התכונה, כמו
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו רוצים להריץ את משימת המעקב אחר התכונה.
אחזור נתונים סטטיסטיים של תכונות ממשימת מעקב
אפשר לאחזר נתונים סטטיסטיים של תכונות עבור כל התכונות במשימת מעקב אחרי תכונות, על ידי אחזור המשאב FeatureMonitorJob באמצעות מזהה משימת המעקב אחרי התכונות שנוצר במהלך ההפעלה של משימת המעקב אחרי התכונות. אפשר גם לאחזר נתונים סטטיסטיים של תכונות עבור משאב ספציפי במשימת המעקב האחרונה.
הצגת רשימה של משימות מעקב אחר תכונות
בדוגמאות הבאות מוצגות דרכים לאחזר רשימה של כל המשאבים מסוג FeatureMonitorJob שנוצרו עבור משאב מסוג FeatureMonitor.
REST
כדי לאחזר רשימה של משאבי FeatureMonitorJob עבור משאב FeatureMonitor ספציפי, שולחים בקשת GET באמצעות השיטה featureMonitorJobs.list.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו נמצא משאב
Feature, למשלus-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשלגביו רוצים להציג את רשימת המשימות של מעקב אחרי תכונות.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"featureMonitorJobs": [
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_1",
"createTime": "2024-12-18T19:18:18.077161Z",
"finalStatus": {},
"featureSelectionConfig": {
"featureConfigs": [
{
"featureId": "feature_name_1",
"driftThreshold": 0.2
},
{
"featureId": "feature_name_2",
"driftThreshold": 0.2
}
]
}
},
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID_2",
"createTime": "2024-12-19T19:18:30.859921Z",
"finalStatus": {},
"featureSelectionConfig": {
"featureConfigs": [
{
"featureId": "feature_name_1",
"driftThreshold": 0.2
},
{
"featureId": "feature_name_2",
"driftThreshold": 0.2
}
]
}
}
]
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME")
feature_monitor = feature_group.get_feature_monitor(FEATURE_MONITOR_NAME)
feature_monitor_jobs = feature_monitor.list_feature_monitor_jobs()
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו נמצא משאב
Feature, למשלus-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשלגביו רוצים להציג את רשימת המשימות של מעקב אחרי תכונות.
הצגת נתונים סטטיסטיים של תכונות מתוך משימת מעקב
בדוגמאות הבאות מוצגות דרכים להצגת הנתונים הסטטיסטיים של כל התכונות במשימת מעקב אחרי תכונות. לכל תכונה, הנתונים הסטטיסטיים והאנומליות מוצגים בפורמט FeatureNameStatistics.
REST
כדי לראות את נתוני התכונה ממשימת מעקב על ידי אחזור משאב FeatureMonitorJob, שולחים בקשת GET באמצעות השיטה featureMonitorJobs.get.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו הופעלה משימת המעקב אחר התכונה. - FEATURE_MONITOR_JOB_ID: המזהה של משאב FeatureMonitorJob שרוצים לאחזר.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID",
"createTime": "2024-12-19T19:18:18.077161Z",
"finalStatus": {},
"jobSummary": {
"featureStatsAndAnomalies": [
{
"featureId": "feature_id_1",
"featureStats": {
"name": "feature_name_1",
"type": "STRING",
"stringStats": {
"commonStats": {
"numNonMissing": "6",
"minNumValues": "1",
"maxNumValues": "1",
"avgNumValues": 1,
"numValuesHistogram": {
"buckets": [
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.6
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.6
}
],
"type": "QUANTILES"
},
"totNumValues": "6"
},
"unique": "2",
"topValues": [
{
"value": "59",
"frequency": 2
},
{
"value": "19",
"frequency": 1
}
],
"avgLength": 2,
"rankHistogram": {
"buckets": [
{
"label": "59",
"sampleCount": 2
},
{
"lowRank": "1",
"highRank": "1",
"label": "19",
"sampleCount": 1
}
]
}
}
},
"statsTime": "2024-12-19T19:18:18.077161Z",
"featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
"featureMonitorId": "FEATURE_MONITOR_NAME"
},
{
"featureId": "feature_id_2",
"featureStats": {
"name": "feature_name_1",
"type": "STRING",
"stringStats": {
"commonStats": {
"numNonMissing": "6",
"minNumValues": "1",
"maxNumValues": "1",
"avgNumValues": 1,
"numValuesHistogram": {
"buckets": [
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.6
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.6
}
],
"type": "QUANTILES"
},
"totNumValues": "6"
},
"unique": "2",
"topValues": [
{
"value": "59",
"frequency": 2
},
{
"value": "19",
"frequency": 1
}
],
"avgLength": 2,
"rankHistogram": {
"buckets": [
{
"label": "59",
"sampleCount": 2
},
{
"lowRank": "1",
"highRank": "1",
"label": "19",
"sampleCount": 1
}
]
}
}
},
"statsTime": "2024-12-19T19:18:18.077161Z",
"featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
"featureMonitorId": "FEATURE_MONITOR_NAME"
}
]
},
"driftBaseFeatureMonitorJobId": "2250003330000300000",
"driftBaseSnapshotTime": "2024-12-12T16:00:01.211686Z",
"featureSelectionConfig": {
"featureConfigs": [
{
"featureId": "feature_id_1",
"driftThreshold": 0.2
},
{
"featureId": "feature_id_2",
"driftThreshold": 0.2
}
]
},
"triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו הופעלה משימת המעקב אחר התכונה. - FEATURE_MONITOR_JOB_ID: המזהה של משאב
FeatureMonitorJobשרוצים לאחזר.
הצגת נתונים סטטיסטיים של תכונה
אפשר לאחזר את הנתונים הסטטיסטיים של תכונה ספציפית מתוך משימות מעקב התכונות האחרונות שהופעלו, על ידי אחזור פרטי התכונה וציון מספר משימות המעקב שמהן רוצים לאחזר את הנתונים הסטטיסטיים. הנתונים הסטטיסטיים והאנומליות מוצגים בפורמט FeatureNameStatistics.
בדוגמאות הבאות אפשר לראות איך צופים בנתונים הסטטיסטיים של תכונה ספציפית מתוך מספר מסוים של משימות עדכניות של מעקב אחרי תכונות.
REST
כדי לראות את נתוני התכונה של תכונה ספציפית במשאב Feature, שולחים בקשת GET באמצעות השיטה features.get ומציינים את מספר משימות המעקב שמהן רוצים לאחזר את הנתונים הסטטיסטיים.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את התכונה.
- FEATURE_NAME: השם של משאב
Featureשעבורו רוצים לאחזר את נתוני התכונה. - LATEST_STATS_COUNT: מספר משימות המעקב האחרונות שמהן יאוחזרו נתונים סטטיסטיים של התכונה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME?feature_stats_and_anomaly_spec.latest_stats_count=LATEST_STATS_COUNT" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/features/FEATURE_NAME",
"createTime": "2024-12-19T21:17:23.373559Z",
"updateTime": "2024-12-19T21:17:23.373559Z",
"etag": "sample_etag",
"featureStatsAndAnomaly": [
{
"featureStats": {
"name": "FEATURE_NAME",
"type": "STRING",
"stringStats": {
"commonStats": {
"numNonMissing": "4",
"minNumValues": "1",
"maxNumValues": "1",
"avgNumValues": 1,
"numValuesHistogram": {
"buckets": [
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.4
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.4
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.4
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.4
}
],
"type": "QUANTILES"
},
"totNumValues": "4"
},
"unique": "4",
"topValues": [
{
"value": "feature_value_1",
"frequency": 1
},
{
"value": "feature_value_2",
"frequency": 1
},
{
"value": "feature_value_3",
"frequency": 1
},
{
"value": "feature_value_4",
"frequency": 1
}
],
"avgLength": 4,
"rankHistogram": {
"buckets": [
{
"label": "label_1",
"sampleCount": 1
},
{
"lowRank": "1",
"highRank": "1",
"label": "label_2",
"sampleCount": 1
},
{
"lowRank": "2",
"highRank": "2",
"label": "label_3",
"sampleCount": 1
},
{
"lowRank": "3",
"highRank": "3",
"label": "label_4",
"sampleCount": 1
}
]
}
}
},
"driftDetectionThreshold": 0.1,
"statsTime": "2024-12-19T22:00:02.734796Z",
"featureMonitorJobId": "feature_monitor_job_id_1",
"featureMonitorId": "feature_monitor_name_1"
}
],
"versionColumnName": "version_column_name"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_stats_and_anomalies = feature_group.get_feature("FEATURE_NAME", latest_stats_count=LATEST_STATS_COUNT)
print(feature_stats_and_anomalies)
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_NAME: השם של התכונה שעבורה רוצים לאחזר את נתוני השימוש בתכונה.
- LATEST_STATS_COUNT: מספר משימות המעקב האחרונות שמהן יאוחזרו נתונים סטטיסטיים של התכונה.
תרחיש שימוש לדוגמה: שימוש במעקב אחרי תכונות כדי לזהות סחף של תכונות
אתם יכולים להשתמש במעקב אחרי תכונות כדי לזהות אנומליה בנתוני התכונות שנקראת סחף תכונות. סחף הוא שינוי משמעותי ובלתי צפוי בנתוני התכונות ב-BigQuery לאורך זמן. בעזרת Vertex AI Feature Store אפשר לזהות סחף של תכונות על ידי השוואה בין תמונת המצב בזמן הפעלת משימת המעקב לבין תמונת המצב של הנתונים במהלך ההפעלה הקודמת של משימת המעקב.
לכל תכונה שכלולה בכלי למעקב אחרי תכונות, אם ההבדל בין שני הצילומים חורג מהסף שצוין בפרמטר drift_threshold, Vertex AI Feature Store מזהה סחף של תכונה ומחזיר את המידע הבא במשאב FeatureMonitorJob:
הפרמטר
driftDetectedמוגדר לערךtrue.הסטייה בהתפלגות בין שתי התמונות. עבור תכונות מספריות, Vertex AI Feature Store מחשב את הערך הזה באמצעות Jensen-Shannon divergence. עבור תכונות קטגוריות, Vertex AI Feature Store מחשב את הערך הזה באמצעות מרחק L-אינסוף.
הסף שהסטייה של ההתפלגות חרגה ממנו.
בדוגמאות הבאות אפשר לראות איך מאחזרים משאב FeatureMonitorJob ומוודאים אם זוהה שינוי.
REST
כדי לאחזר משאב FeatureMonitorJob , שולחים בקשת GET באמצעות ה-method featureMonitorJobs.get.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו הופעלה משימת המעקב אחר התכונה. - FEATURE_MONITOR_JOB_ID: המזהה של משאב
FeatureMonitorJobשרוצים לאחזר.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID
כדי לשלוח את הבקשה אתם צריכים לבחור אחת מהאפשרויות הבאות:
curl
מריצים את הפקודה הבאה:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID"
PowerShell
מריצים את הפקודה הבאה:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID" | Select-Object -Expand Content
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/featureMonitors/FEATURE_MONITOR_NAME/featureMonitorJobs/FEATURE_MONITOR_JOB_ID",
"createTime": "2024-12-14T19:45:30.026522Z",
"finalStatus": {},
"jobSummary": {
"featureStatsAndAnomalies": [
{
"featureId": "feature_id_1",
"featureStats": {
"name": "feature_name_1",
"type": "STRING",
"stringStats": {
"commonStats": {
"numNonMissing": "3",
"minNumValues": "1",
"maxNumValues": "1",
"avgNumValues": 1,
"numValuesHistogram": {
"buckets": [
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.9
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.9
},
{
"lowValue": 1,
"highValue": 1,
"sampleCount": 0.9
}
],
"type": "QUANTILES"
},
"totNumValues": "3"
},
"unique": "3",
"topValues": [
{
"value": "sample_value_1",
"frequency": 1
},
{
"value": "sample_value_2",
"frequency": 1
},
{
"value": "sample_value_3",
"frequency": 1
}
],
"avgLength": 3,
"rankHistogram": {
"buckets": [
{
"label": "sample_label_1",
"sampleCount": 1
},
{
"lowRank": "1",
"highRank": "1",
"label": "sample_label_2",
"sampleCount": 1
},
{
"lowRank": "2",
"highRank": "3",
"label": "sample_label_3",
"sampleCount": 1
}
]
}
}
},
"distributionDeviation": 0.1388880008888000,
"driftDetectionThreshold": 0.1,
"driftDetected": true,
"statsTime": "2024-12-15T19:45:37.026522Z",
"featureMonitorJobId": "FEATURE_MONITOR_JOB_ID",
"featureMonitorId": "FEATURE_MONITOR_NAME"
}
]
},
"driftBaseFeatureMonitorJobId": "2250003330000300000",
"driftBaseSnapshotTime": "2024-12-12T18:18:18.077161Z",
"description": "sample_feature_monitor_job_description",
"featureSelectionConfig": {
"featureConfigs": [
{
"featureId": "feature_name",
"driftThreshold": 0.1
}
]
},
"triggerType": "FEATURE_MONITOR_JOB_TRIGGER_ON_DEMAND"
}
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonההוראות להגדרה במאמר מדריך למתחילים של Agent Platform באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של Agent Platform Python API.
כדי לבצע אימות ב-Agent Platform, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
aiplatofrm.init(project="PROJECT_ID", location="LOCATION_ID")
feature_group = FeatureGroup.get("FEATUREGROUP_NAME"})
feature_monitor = feature_group.get_feature_monitor("FEATURE_MONITOR_NAME")
feature_monitor_job = feature_monitor.get_feature_monitor_job("FEATURE_MONITOR_JOB_ID)")
# Retrieve feature stats and anomalies
feature_stats_and_anomalies = feature_monitor_job.feature_stats_and_anomalies
print(feature_stats_and_anomalies)
# Check whether drifts are detected
for feature_stats_and_anomalies in feature_monitor_job.feature_stats_and_anomalies:
print("feature: ", feature_stats_and_anomalies.feature_id)
print("distribution deviation: ", feature_stats_and_anomalies.distribution_deviation)
print("drift detected: ", feature_stats_and_anomalies.drift_detected)
מחליפים את מה שכתוב בשדות הבאים:
- LOCATION_ID: האזור שבו הופעלה משימת המעקב אחרי התכונה, למשל
us-central1. - PROJECT_ID: מזהה הפרויקט.
- FEATUREGROUP_NAME: השם של קבוצת התכונות שמכילה את משאב
FeatureMonitor. - FEATURE_MONITOR_NAME: השם של משאב
FeatureMonitorשעבורו הופעלה משימת המעקב אחר התכונה. - FEATURE_MONITOR_JOB_ID: המזהה של משאב
FeatureMonitorJobשרוצים לאחזר.