רכיבים של הערכת מודל

רכיבי הערכת המודל מקבלים כקלט את אמת הקרקע (ground truth) ואת התוצאות של חיזוי באצווה, ויוצרים מדדי הערכה. נתוני אמת קרקע (ground truth) הם נתונים ש"תויגו בצורה נכונה" על ידי בני אדם, ובדרך כלל הם מסופקים כשדה היעד בקבוצת הנתונים לבדיקה ששימשה לאימון המודל. מידע נוסף מופיע במאמר הערכת מודלים ב-Agent Platform.

ב-Agent Platform יש את הרכיבים הבאים להערכת מודלים:

תמיכה בסוגי מודלים

בטבלה הבאה מוצגים סוגי המודלים שנתמכים בכל רכיב להערכת מודלים:

רכיב הערכת המודל סוגי המודלים הנתמכים
ModelEvaluationClassificationOp
  • AutoML tabular או AutoML Image
  • טבלה בהתאמה אישית
  • ModelEvaluationRegressionOp
  • ייצוג טבלאי של AutoML
  • טבלה בהתאמה אישית
  • ModelEvaluationForecastingOp
  • ייצוג טבלאי של AutoML
  • הסרת שדה היעד

    בחלק מסוגי המודלים, הרכיב BatchPredictionJob דורש להחריג את עמודת היעד (אמת קרקע) ממערך הנתונים.

    הגדרה ועיצוב של פרוסות בקבוצת נתונים בטבלה

    פרוסה היא קבוצת משנה של נתונים בטבלה עם מאפיינים מסוימים. מדדים מחולקים לפרוסות מציעים מדדי הערכה מפורטים יותר למודלים של סיווג ב-AutoML Tabular ובאימון בהתאמה אישית.

    לדוגמה, נניח שיש לנו קבוצת נתונים של אימוץ חיות מחמד, שבה מודל מאומן לחזות אם חיית מחמד תאומץ תוך שבוע. אפשר להסתכל על המדדים של כל מערך הנתונים, אבל אולי תרצו לראות מדדים שקשורים לסוג ולגיל של חיית המחמד. במילים אחרות, אתם רוצים לקבל את קבוצת המשנה הבאה של קבוצת הנתונים:

    תכונה ערכים
    age (in years) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
    species "כלב", "חתול", "ארנב"

    הניתוח המפורט הזה יכול לעזור לזהות איפה המודל עלול לטעות, או לוודא שהמודל פועל היטב בקבוצות משנה קריטיות של הנתונים.

    הגדרת פרוסות

    כדי להגדיר פרוסה, יוצרים קובץ 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:

    1. יוצרים 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') ) })
    2. יוצרים רשימה לשמירת הגדרות הפרוסות. לדוגמה:

      slicing_specs = []
    3. צריך להגדיר את הפורמט של כל slicing_spec כ-JSON או כמילון. לדוגמה:

      slicing_spec_json = json_format.MessageToJson(slicing_spec)
      
      slicing_spec_dict = json_format.MessageToDict(slicing_spec)
    4. שלבו כל slicing_spec ברשימה. לדוגמה:

      slicing_specs.append(slicing_spec_json)
    5. מעבירים את slicing_specs כפרמטר לרכיב ModelEvaluationClassificationOp. לדוגמה:

      ModelEvaluationClassificationOp(slicing_specs=slicing_specs)

    פורמט של פרוסות הגדרה למדדי הוגנות

    כדי להעריך את ההוגנות של המודל, משתמשים ברכיבים הבאים:

    כדי לעצב את הפרוסות של הרכיבים DetectDataBiasOp ו-DetectModelBiasOp:

    1. יוצרים 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') ) }))
    2. יוצרים רשימה לשמירת הגדרות ההטיה. לדוגמה:

      bias_configs = []
    3. צריך להגדיר את הפורמט של כל bias_config כ-JSON או כמילון. לדוגמה:

      bias_config_json = json_format.MessageToJson(bias_config)
      
      bias_config_dict = json_format.MessageToDict(bias_config)
    4. משלבים כל bias_config ברשימה. לדוגמה:

      bias_configs.append(bias_config_json)
    5. מעבירים את bias_configs כפרמטר לרכיב DetectDataBiasOp או DetectModelBiasOp. לדוגמה:

      DetectDataBiasOp(bias_configs=bias_configs)
      
      DetectModelBiasOp(bias_configs=bias_configs)

    פרמטרים נדרשים של קלט

    הפרמטרים הנדרשים לקלט של רכיבי הערכת המודל משתנים בהתאם לסוג המודל שאתם מעריכים.

    מודלים של AutoML

    כשמאמנים מודלים של AutoML, Gemini Enterprise Agent Platform משתמשת בסכימות שמוגדרות כברירת מחדל. חלק מהפרמטרים של הקלט לרכיבי הערכת המודל נדרשים רק אם השתמשתם בסכימה שאינה ברירת המחדל כדי לאמן את המודל.

    אפשר לראות ולהוריד קובצי סכימה מהמיקום הבא ב-Cloud Storage:
    gs://google-cloud-aiplatform/schema/modelevaluation/

    בכרטיסיות הבאות מוצגות דוגמאות לקובצי פלט של חיזוי באצווה ולפרמטרים של קלט שנדרשים לכל סוג של פרמטרים של מודל טבלאי:

    סיווג

    הסכימה שמוגדרת כברירת מחדל כוללת את השדות הבאים:

    • scores: מערך
    • classes: מערך

    הדוגמה הבאה היא של קובץ פלט של חיזוי באצ' עם עמודת היעד 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: מספר ממשי
    • ‫lower_bound: מספר ממשי
    • ‫upper_bound: מספר ממשי

    הדוגמה הבאה היא של קובץ פלט של חיזוי באצ' עם עמודת היעד 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: מספר ממשי

    הקובץ הבא הוא קובץ 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".

    הערכות מודלים בלי חיזויים באצווה שנוצרו על ידי Agent Platform

    אתם יכולים להשתמש ברכיב של צינור עיבוד נתונים להערכת מודלים עם חיזוי באצווה שלא יצרתם ב-Agent Platform. עם זאת, שימו לב שהקלט של רכיב צינור עיבוד הנתונים להערכת המודל חייב להיות ספריית חיזוי באצווה שמכילה קבצים שתואמים לתחיליות הבאות:

    • prediction.results-

    • explanation.results-

    • predictions_

    מאמרי העזרה של ה-API

    היסטוריית גרסאות ונתוני גרסה

    למידע נוסף על היסטוריית הגרסאות והשינויים ב- Google Cloud Pipeline Components SDK, קראו את נתוני הגרסה שלGoogle Cloud Pipeline Components SDK.