רכיבי הערכת המודל מקבלים כקלט את נתוני האמת ואת התוצאות של חיזוי באצווה, ומפיקים מדדי הערכה. נתוני אמת בסיסית הם נתונים שסומנו בצורה נכונה על ידי בני אדם, והם בדרך כלל מסופקים כשדה היעד במערך נתוני הבדיקה ששימש לאימון המודל. מידע נוסף זמין במאמר הערכת מודלים ב-Vertex AI.
Vertex AI מספק את רכיבי הערכת המודלים הבאים:
תמיכה בסוגי מודלים
בטבלה הבאה מוצגים סוגי המודלים הנתמכים לכל רכיב של הערכת המודל:
| רכיב הערכת המודל | סוגי מודלים נתמכים |
|---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
הסרת שדה היעד
בסוגים מסוימים של מודלים, רכיב BatchPredictionJob מחייב להחריג את עמודת היעד (האמת הבסיסית) ממערך הנתונים.
הגדרה ועיצוב של פרוסות לערכת נתונים טבלאית
פלח הוא קבוצת משנה של נתונים טבלאיים עם מאפיינים ספציפיים. מדדים מפולחים מספקים מדדי הערכה פרטניים יותר למודלים של סיווג ב-AutoML tabular ולאימון מותאם אישית.
לדוגמה, נניח שיש לכם מערך נתונים של אימוץ חיות מחמד, ומודל שאומן כדי לחזות אם חיית מחמד תאומץ תוך שבוע. אמנם כדאי לבדוק את המדדים של כל מערך הנתונים, אבל יכול להיות שתרצו להתמקד במדדים שקשורים למין ולגיל של חיית המחמד. במילים אחרות, אתם מעוניינים בקבוצת המשנה הבאה של מערך הנתונים:
| תכונה | ערכים |
|---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
"dog", "cat", "rabbit" |
ניתוח מפורט כזה יכול לעזור לזהות איפה המודל עלול להיות הכי מועד לשגיאות, או לוודא שהמודל פועל בצורה טובה על קבוצות משנה קריטיות של הנתונים.
הגדרת פלחים
כדי להגדיר פרוסה, יוצרים קובץ JSON עם ההגדרה הבאה:
{
"FEATURE": {
"KIND": {
CONFIG
}
}
}
כאשר:
FEATURE היא תכונה שרוצים ליצור לה פלח. לדוגמה,
age.KIND הוא אחד מהבאים:
value
valueיוצרת פלח יחיד על ערך יחיד של תכונה. מציינים את CONFIG כצמד מפתח/ערך, כאשר המפתח הואfloat_valueאוstring_value. לדוגמה,"float_value": 1.0.ההגדרה לדוגמה הבאה יוצרת פרוסה אחת שמכילה נתונים עם
ageשל1:{ "age": { "value": { "float_value": 1.0 } } }range
rangeיוצרת פרוסה אחת שכוללת נתונים בטווח שצוין. מציינים את CONFIG כשני צמדי מפתח/ערך, כאשר המפתחות הםlowו-high.הגדרת הדוגמה הבאה יוצרת פלח יחיד שמכיל נתונים שבהם
ageהוא כל ערך בין1ל-3:{ "age": { "range": { "low": 1, "high": 3 } } }all_values
all_valuesיוצרת פרוסה נפרדת לכל תווית אפשרית של התכונה. מציינים את CONFIG בתור"value": true.הגדרת התצורה הבאה יוצרת שלוש פרוסות – אחת לכל אחת מההגדרות
"dog","cat"ו-"rabbit":{ "species": { "all_values": { "value": true } } }
אפשר גם להשתמש בכמה תכונות כדי ליצור פרוסות.
ההגדרה הבאה יוצרת פרוסה אחת שמכילה נתונים שבהם הערך של age הוא בין 1 לבין 3 והערך של species הוא "dog":
{
"age": {
"range": {
"low": 1,
"high": 3
}
},
"species": {
"value": {
"string_value": "dog"
}
}
}
ההגדרה הבאה יוצרת כמה פלחים – אחד לכל מין ייחודי בקבוצת הנתונים, כאשר age הוא 1.
{
"species": {
"all_values": {
"value": true
}
},
"age": {
"value": {
"float_value": 1.0
}
}
}
הפלחי הנתונים שיתקבלו יכללו את הנתונים הבאים ממערך הנתונים לדוגמה:
פרוסה 1:
age:1ו-species:"dog"פרוסה 2:
age:1ו-species:"cat"פרוסה 3:
age:1ו-species:"rabbit"
עיצוב רצועות
כדי לעצב את הפרוסות לרכיב ModelEvaluationClassificationOp, מבצעים את הפעולות הבאות:
יצירת
slicing_spec. לדוגמה:from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig slicing_spec = SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) })יוצרים רשימה לאחסון הגדרות הפלח. לדוגמה:
slicing_specs = []
כל
slicing_specצריך להיות בפורמט JSON או מילון. לדוגמה:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
שילוב כל
slicing_specלרשימה. לדוגמה:slicing_specs.append(slicing_spec_json)
מעבירים את
slicing_specsכפרמטר לרכיבModelEvaluationClassificationOp. לדוגמה:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
פורמט של פרוסות להגדרת מדדי הוגנות
כדי להעריך את ההוגנות של המודל, משתמשים ברכיבים הבאים:
DetectDataBiasOp: מחזירה מדדים של הטיית נתונים עבור הפלחים שמעבירים לרכיב.
DetectModelBiasOp: מחזירה מדדי הטיה של המודל עבור הפרוסות שמעבירים לרכיב.
כדי לעצב את הפרוסות לרכיבים DetectDataBiasOp ו-DetectModelBiasOp:
יצירת
BiasConfig. לדוגמה:from google.cloud.aiplatform_v1.types.ModelEvaluation import BiasConfig from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice import SliceSpec from google.cloud.aiplatform_v1.types.ModelEvaluationSlice.Slice.SliceSpec import SliceConfig bias_config = BiasConfig(bias_slices=SliceSpec(configs={ 'feature_a': SliceConfig(SliceSpec.Value(string_value='label_a') ) }))יוצרים רשימה לאחסון הגדרות ההטיה. לדוגמה:
bias_configs = []
כל
bias_configצריך להיות בפורמט JSON או מילון. לדוגמה:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
שילוב כל
bias_configלרשימה. לדוגמה:bias_configs.append(bias_config_json)
מעבירים את
bias_configsכפרמטר לרכיבDetectDataBiasOpאוDetectModelBiasOp. לדוגמה:DetectDataBiasOp(bias_configs=bias_configs) DetectModelBiasOp(bias_configs=bias_configs)
פרמטרים נדרשים של קלט
פרמטרי הקלט הנדרשים לרכיבי הערכת המודל משתנים בהתאם לסוג המודל שאתם מעריכים.
מודלים של AutoML
כשמאמנים מודלים של AutoML, Vertex AI משתמשת בסכימות ברירת מחדל. חלק מפרמטרי הקלט של רכיבי הערכת המודל נדרשים רק אם השתמשתם בסכימה שאינה ברירת מחדל כדי לאמן את המודל.
אפשר להציג ולהוריד קובצי סכימה ממיקום Cloud Storage הבא:
gs://google-cloud-aiplatform/schema/modelevaluation/
בכרטיסיות הבאות מוצגים קובצי פלט לדוגמה של תחזיות אצווה ופרמטרים נדרשים של קלט לכל סוג של פרמטרים של מודל טבלאי:
סיווג
סכימת ברירת המחדל כוללת את השדות הבאים:
scores: arrayclasses: array
הדוגמה הבאה היא של קובץ פלט של חיזוי באצווה עם עמודת היעד male:
{
"instance": {
"male": "1",
"age": "49",
"heartRate": "67",
"education": "medium_high",
"totChol": "282",
"diaBP": "79",
"BPMeds": "0",
"currentSmoker": "current_high",
"cigsPerDay": "25",
"prevalentStroke": "stroke_0",
"prevalentHyp": "hyp_0",
"TenYearCHD": "FALSE",
"diabetes": "0",
"sysBP": "134",
"BMI": "26.87",
"glucose": "78"
},
"prediction": {
"scores": [0.3666940927505493, 0.6333059072494507],
"classes": ["0", "1"]
}
}
בטבלה הזו מפורטים הפרמטרים הנדרשים לרכיב ModelEvaluationClassificationOp עם מודל טבלאי:
| פרמטר של רכיב הערכה | חובה |
|---|---|
target_field_name |
כן |
prediction_label_column |
לא נדרש לסכימה שמוגדרת כברירת מחדל. משתמשים ב- prediction.classes לסכימות שאינן ברירת מחדל. |
prediction_score_column |
לא נדרש לסכימה שמוגדרת כברירת מחדל. משתמשים ב- prediction.scores לסכימות שאינן ברירת מחדל. |
evaluation_class_labels |
לא נדרש לסכימה שמוגדרת כברירת מחדל. משתמשים ב- ["0","1"] לסכימות שאינן ברירת מחדל. |
רגרסיה
סכימת ברירת המחדל כוללת את השדות הבאים:
-
value: float -
lower_bound: float -
upper_bound: float
הדוגמה הבאה היא של קובץ פלט של חיזוי באצווה עם עמודת היעד age:
{
"instance": {
"BPMeds": "0",
"diabetes": "0",
"diaBP": "65",
"cigsPerDay": "45",
"prevalentHyp": "hyp_0",
"age": "46",
"male": "1",
"sysBP": "112.5",
"glucose": "78",
"BMI": "27.48",
"TenYearCHD": "FALSE",
"totChol": "209",
"education": "high",
"prevalentStroke": "stroke_0",
"heartRate": "75",
"currentSmoker": "current_high"
},
"prediction": {
"value": 44.96103286743164,
"lower_bound": 44.61349868774414,
"upper_bound": 44.590206146240234
}
}
בטבלה הזו מפורטים הפרמטרים הנדרשים לרכיב ModelEvaluationRegressionOp עם מודל טבלאי:
| פרמטר של רכיב הערכה | חובה |
|---|---|
target_field_name |
כן |
prediction_label_column |
לא נדרש למודלים של רגרסיה. |
prediction_score_column |
לא נדרש לסכימה שמוגדרת כברירת מחדל. משתמשים ב- prediction.value לסכימות שאינן ברירת מחדל. |
evaluation_class_labels |
לא נדרש למודלים של רגרסיה. |
תחזיות
במודלים של תחזיות טבלאיות, הרכיב BatchPredictionJob מחייב להחריג את עמודת היעד (האמת הבסיסית) ממערך הנתונים.
סכימת ברירת המחדל כוללת את השדות הבאים:
-
id: מחרוזת -
displayNames: מחרוזת -
type: enum -
timeSegmentStart: מחרוזת -
timeSegmentEnd: מחרוזת -
confidence: float
קובץ CSV לדוגמה עם
sale_dollars כעמודת היעד:
date,store_name,city,zip_code,county,sale_dollars
2020-03-17,Thriftway,,,,774.08999999999992
2020-03-10,Thriftway,,,,1160.67
2020-03-03,Thriftway,,,,2247.24
2020-06-08,New Star / Fort Dodge,,,,753.98
2020-06-01,New Star / Fort Dodge,,,,967.73
2020-01-10,Casey's General Store #1280 / Fort Dodge,,,,1040.92
2020-10-30,KUM & GO #76 / ADAIR,Adair,50002,ADAIR,1387.02
רכיב TargetFieldDataRemoverOp מסיר את עמודת היעד
לפני שליחת הקובץ לרכיב BatchPredictionJob:
date,store_name,city,zip_code,county
2020-03-17,Thriftway,nan,nan,nan
2020-03-10,Thriftway,nan,nan,nan
2020-03-03,Thriftway,nan,nan,nan
2020-06-08,New Star / Fort Dodge,nan,nan,nan
2020-06-01,New Star / Fort Dodge,nan,nan,nan
2020-01-10,Casey's General Store #1280 / Fort Dodge,nan,nan,nan
2020-10-30,KUM & GO #76 / ADAIR,Adair,50002.0,ADAIR
הדוגמה הבאה היא של קובץ פלט של חיזוי אצווה ללא עמודת היעד sale_dollars:
{
"instance": {
"content": "gs://kbn-us-central1-test/datasets/text/happy_11556.txt",
"mimeType":"text/plain"
},
"prediction": {
"ids": ["7903916851837534208","3292230833410146304","986387824196452352","2139309328803299328","5598073842623840256","6750995347230687232","4559431178561519616"],
"displayNames": ["affection","bonding","achievement","exercise","nature","enjoy_the_moment","leisure"],
"confidences": [0.99483216,0.005162797,4.1117933E-6,3.9997E-7,2.4624453E-7,1.9969502E-7,1.16997434E-7]
}
}
בטבלה הזו מפורטים הפרמטרים הנדרשים לרכיב ModelEvaluationForecastingOp עם מודל טבלאי:
| פרמטר של רכיב הערכה | חובה |
|---|---|
target_field_name |
כן |
prediction_label_column |
לא נדרש למודלים של חיזוי. |
prediction_score_column |
לא נדרש לסכימה שמוגדרת כברירת מחדל. משתמשים ב- "prediction.value" לסכימות שאינן ברירת מחדל. |
evaluation_class_labels |
לא נדרש למודלים של חיזוי. |
ground_truth_gcs_source |
כן: הקישור ל-Cloud Storage של מערך הנתונים המקורי עם עמודת היעד. |
ground_truth_format |
כן: הפורמט של מערך הנתונים המקורי. לדוגמה, "jsonl", "csv" או "bigquery". |
מודלים שעברו אימון בהתאמה אישית
במודלים שאומנו בהתאמה אישית, רכיב BatchPredictionJob מחייב אתכם להחריג את עמודת היעד (נתוני האמת) ממערך הנתונים. אפשר להשתמש ברכיב TargetFieldDataRemoverOp כדי ליצור תהליך עבודה יעיל יותר.
בדוגמה הבאה מוצג קובץ פלט של חיזוי אצווה ופרמטרי קלט נדרשים עבור מודל סיווג טבלאי שאומן בהתאמה אישית:
סיווג
סכימה טיפוסית כוללת את השדות הבאים:
-
instance: מערך של נתוני קלט באותו סדר כמו העמודות של מערך הנתונים לאימון המודל. -
prediction: מערך של נתוני קלט באותו סדר כמו העמודות של מערך הנתונים לאימון המודל.
הדוגמה הבאה היא של מערך נתונים בפורמט CSV עם
species כעמודת היעד:
petal_length,petal_width,sepal_length,sepal_width,species
6.4,2.8,5.6,2.2,2
5.0,2.3,3.3,1.0,1
4.9,2.5,4.5,1.7,2
4.9,3.1,1.5,0.1,0
רכיב TargetFieldDataRemoverOp מסיר את עמודת היעד לפני שליחת הקובץ לרכיב של חיזוי אצווה:
petal_length,petal_width,sepal_length,sepal_width
6.4,2.8,5.6,2.2
5.0,2.3,3.3,1.0
4.9,2.5,4.5,1.7
4.9,3.1,1.5,0.1
הדוגמה הבאה היא של קובץ פלט של חיזוי אצווה ללא עמודת היעד species:
{
"instance": [5.6, 2.5, 3.9, 1.1],
"prediction": [0.0005816521588712931, 0.9989032745361328, 0.0005150380893610418]
}
{
"instance": [5.0, 3.6, 1.4, 0.2],
"prediction": [0.999255359172821, 0.000527293945197016, 0.00021737271163146943]
}
{
"instance": [6.0, 2.9, 4.5, 1.5],
"prediction": [0.00025063654175028205, 0.9994204044342041, 0.00032893591560423374]
}
בטבלה הזו מפורטים הפרמטרים הנדרשים לרכיב ModelEvaluationClassificationOp עם מודל שאומן בהתאמה אישית:
| פרמטר של רכיב הערכה | חובה |
|---|---|
target_field_name |
כן |
prediction_label_column |
העמודה הזו צריכה להיות ריקה. היא לא קיימת במודלים שעברו אימון בהתאמה אישית. |
prediction_score_column |
לא נדרש בסכימת ברירת המחדל. מוגדר אוטומטית בפורמטים JSONL, CSV או BIGQUERY. |
evaluation_class_labels |
כן. האורך של המערך הזה חייב להיות זהה לאורך של מערך התחזיות של הפלט. |
ground_truth_gcs_source |
כן: הקישור ל-Cloud Storage של מערך הנתונים המקורי עם עמודת היעד. |
ground_truth_format |
כן: הפורמט של מערך הנתונים המקורי. לדוגמה, "jsonl", "csv" או "bigquery". |
הערכות מודל ללא חיזויים של Vertex AI Batch
אפשר להשתמש ברכיב של צינור עיבוד נתונים להערכת מודל עם תחזית באצווה שלא נוצרה ב-Vertex AI. עם זאת, חשוב לשים לב שהקלט של רכיב צינור ההערכה של המודל חייב להיות ספרייה של חיזויים באצווה שמכילה קבצים שתואמים לקידומות הבאות:
prediction.results-explanation.results-predictions_
הפניית API
לעיון בהפניה לרכיב, אפשר לעבור אל Google Cloud דף ההפניה ל-SDK של רכיבי הערכת מודלים.
דוגמאות לשימוש ברכיבי Model Evaluation אפשר למצוא במחברות שמופיעות במאמר יצירת הערכה.
היסטוריית גרסאות ונתוני גרסה
מידע נוסף על היסטוריית הגרסאות והשינויים ב- Google Cloud Pipeline Components SDK זמין בהערות לגבי הגרסה של Pipeline Components SDK.Google Cloud