Componenti di valutazione del modello

I componenti di valutazione del modello prendono come input i risultati delle previsioni in batch e dei dati di fatto e generano metriche di valutazione. I dati di fatto sono dati "etichettati correttamente" come stabilito da persone e di solito vengono forniti come campo target nel set di dati di test utilizzato per addestrare il modello. Per ulteriori informazioni, consulta Valutazione dei modelli in Vertex AI.

Vertex AI fornisce i seguenti componenti di valutazione dei modelli:

Supporto del tipo di modello

La seguente tabella mostra i tipi di modelli supportati per ogni componente di valutazione del modello:

Componente di valutazione del modello Tipi di modelli supportati
ModelEvaluationClassificationOp
  • Dati tabulari, immagine, testo e video AutoML
  • Tabellari personalizzati
  • ModelEvaluationRegressionOp
  • Dati tabulari AutoML
  • Tabellari personalizzati
  • ModelEvaluationForecastingOp
  • Dati tabulari AutoML
  • Rimuovi il campo target

    Per alcuni tipi di modelli, il componente BatchPredictionJob richiede di escludere la colonna target (basata su dati empirici reali) dal set di dati.

    Configurare e formattare i segmenti per il set di dati tabulare

    Una sezione è un sottoinsieme di dati tabulari con caratteristiche specifiche. Le metriche con suddivisione offrono metriche di valutazione più granulari per i modelli di classificazione tabulari e di addestramento personalizzato AutoML.

    Ad esempio, prendiamo in considerazione un set di dati sull'adozione di animali domestici in cui un modello viene addestrato a prevedere se un animale domestico verrà adottato entro una settimana. Sebbene sia utile esaminare le metriche per l'intero set di dati, potresti essere interessato alle metriche relative alla specie e all'età dell'animale domestico. In altre parole, ti interessa il seguente sottoinsieme del set di dati:

    Funzionalità Valori
    age (in years) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
    species "cane", "gatto", "coniglio"

    Questa analisi granulare può essere utile per identificare i punti in cui il modello potrebbe essere più soggetto a errori o per garantire che funzioni bene su sottoinsiemi critici dei dati.

    Configura le sezioni

    Per configurare un segmento, crea un file JSON con la seguente configurazione:

    {
      "FEATURE": {
        "KIND": {
          CONFIG
        }
      }
    }
    

    Dove:

    • FEATURE è una funzionalità per la quale vuoi creare un segmento. Ad esempio, age.

    • KIND è uno dei seguenti valori:

      • value

        value crea un singolo slice su un singolo valore di una funzionalità. Specifica CONFIG come coppia chiave-valore in cui la chiave è float_value o string_value. Ad esempio, "float_value": 1.0.

        La seguente configurazione di esempio crea un singolo slice contenente i dati con il age di 1:

        {
          "age": {
            "value": {
              "float_value": 1.0
            }
          }
        }
      • range

        range crea un singolo segmento che include i dati all'interno di un intervallo specificato. Specifica CONFIG come due coppie chiave-valore in cui le chiavi sono low e high.

        La seguente configurazione di esempio crea un singolo slice contenente i dati in cui age è un valore qualsiasi compreso tra 1 e 3:

        {
          "age": {
            "range": {
              "low": 1,
              "high": 3
            }
          }
        }
      • all_values

        all_values crea un segmento separato per ogni possibile etichetta per la funzionalità. Specifica CONFIG come "value": true.

        La seguente configurazione di esempio crea tre slice, uno ciascuno per "dog", "cat" e "rabbit":

        {
          "species": {
            "all_values": {
              "value": true
            }
          }
        }

    Puoi anche utilizzare più funzionalità per creare uno o più slice.

    La seguente configurazione crea un singolo slice contenente i dati in cui age è compreso tra 1 e 3 e species è "dog":

    {
      "age": {
        "range": {
          "low": 1,
          "high": 3
        }
      },
      "species": {
        "value": {
          "string_value": "dog"
        }
      }
    }
    

    La seguente configurazione crea più slice, uno per ogni specie distinta nel set di dati, dove age è 1.

    {
      "species": {
        "all_values": {
          "value": true
        }
      },
      "age": {
        "value": {
          "float_value": 1.0
        }
      }
    }
    

    I segmenti risultanti contengono i seguenti dati del set di dati di esempio:

    • Sezione 1: age:1 e species:"dog"

    • Sezione 2: age:1 e species:"cat"

    • Sezione 3: age:1 e species:"rabbit"

    Formattare le fette

    Per formattare i segmenti per il componente ModelEvaluationClassificationOp:

    1. Crea un slicing_spec. Ad esempio:

      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. Crea un elenco per archiviare le configurazioni dei segmenti. Ad esempio:

      slicing_specs = []
    3. Formatta ogni slicing_spec come JSON o come dizionario. Ad esempio:

      slicing_spec_json = json_format.MessageToJson(slicing_spec)
      
      slicing_spec_dict = json_format.MessageToDict(slicing_spec)
    4. Combina ogni slicing_spec in un elenco. Ad esempio:

      slicing_specs.append(slicing_spec_json)
    5. Passa slicing_specs come parametro al componente ModelEvaluationClassificationOp. Ad esempio:

      ModelEvaluationClassificationOp(slicing_specs=slicing_specs)

    Formattare i segmenti di configurazione delle metriche di equità

    Per valutare l'equità del modello, utilizza i seguenti componenti:

    Per formattare i segmenti per i componenti DetectDataBiasOp e DetectModelBiasOp:

    1. Crea un BiasConfig. Ad esempio:

      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. Crea un elenco per memorizzare le configurazioni di bias. Ad esempio:

      bias_configs = []
    3. Formatta ogni bias_config come JSON o come dizionario. Ad esempio:

      bias_config_json = json_format.MessageToJson(bias_config)
      
      bias_config_dict = json_format.MessageToDict(bias_config)
    4. Combina ogni bias_config in un elenco. Ad esempio:

      bias_configs.append(bias_config_json)
    5. Passa bias_configs come parametro al componente DetectDataBiasOp o DetectModelBiasOp. Ad esempio:

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

    Parametri di input obbligatori

    I parametri di input richiesti per i componenti di valutazione del modello variano in base al tipo di modello che stai valutando.

    Modelli AutoML

    Durante l'addestramento dei modelli AutoML, Vertex AI utilizza gli schemi predefiniti. Alcuni parametri di input per i componenti di valutazione del modello sono obbligatori solo se hai utilizzato uno schema non predefinito per addestrare il modello.

    Puoi visualizzare e scaricare i file dello schema dalla seguente posizione Cloud Storage:
    gs://google-cloud-aiplatform/schema/modelevaluation/

    Le seguenti schede mostrano file di output di previsione batch di esempio e parametri di input obbligatori per ogni tipo di modello:

    Tabulare

    Classificazione

    Lo schema predefinito include i seguenti campi:

    • scores: array
    • classes: array

    Di seguito è riportato un esempio di file di output della previsione in batch con la colonna di destinazione 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"]
        }
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationClassificationOp con un modello tabulare:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Non obbligatorio per lo schema predefinito.
    Utilizza prediction.classes per gli schemi non predefiniti.
    prediction_score_column Non obbligatorio per lo schema predefinito.
    Utilizza prediction.scores per gli schemi non predefiniti.
    evaluation_class_labels Non obbligatorio per lo schema predefinito.
    Utilizza ["0","1"] per gli schemi non predefiniti.

    Regressione

    Lo schema predefinito include i seguenti campi:

    • value: float
    • lower_bound: float
    • upper_bound: float

    Di seguito è riportato un esempio di file di output della previsione in batch con la colonna di destinazione 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
      }
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationRegressionOp con un modello tabulare:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Non obbligatorio per i modelli di regressione.
    prediction_score_column Non obbligatorio per lo schema predefinito.
    Utilizza prediction.value per gli schemi non predefiniti.
    evaluation_class_labels Non obbligatorio per i modelli di regressione.

    Previsione

    Per i modelli di previsione tabulari, il componente BatchPredictionJob richiede di escludere la colonna target (basata su dati empirici reali) dal set di dati.

    Lo schema predefinito include i seguenti campi:

    • id: stringa
    • displayNames: stringa
    • type: enum
    • timeSegmentStart: stringa
    • timeSegmentEnd: stringa
    • confidence: float

    Di seguito è riportato un esempio di file CSV con sale_dollars come colonna di destinazione:

    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
              

    Il componente TargetFieldDataRemoverOp rimuove la colonna target prima di inviare il file al componente 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
              

    Di seguito è riportato un esempio di file di output della previsione batch senza la colonna target di 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]
      }
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationForecastingOp con un modello tabulare:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Non obbligatorio per i modelli di previsione.
    prediction_score_column Non obbligatorio per lo schema predefinito.
    Utilizza "prediction.value" per gli schemi non predefiniti.
    evaluation_class_labels Non obbligatorio per i modelli di previsione.
    ground_truth_gcs_source Sì: il link a Cloud Storage per il set di dati originale con la colonna di destinazione.
    ground_truth_format Sì: il formato del set di dati originale. Ad esempio, "jsonl", "csv" o "bigquery".

    Testo

    Classificazione

    Per i modelli di classificazione del testo, il componente BatchPredictionJob richiede di escludere la colonna target (basata su dati empirici reali) dal set di dati. Puoi utilizzare il componente TargetFieldDataRemoverOp per un flusso di lavoro più efficiente.

    Lo schema predefinito include i seguenti campi:

    • ids: array di stringhe
    • displayName: array di stringhe
    • confidence: array di numeri in virgola mobile

    Di seguito è riportato un esempio di set di dati con label come colonna di destinazione:

    {
      "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt",
      "mimeType": "text/plain",
      "label": "affection"
    }
              

    Il componente TargetFieldDataRemoverOp rimuove la colonna target prima di inviare il file al componente BatchPredictionJob:

    {
      "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt",
      "mimeType": "text/plain"
    }
              

    Di seguito è riportato un esempio di file di output della previsione batch senza la colonna target di label:

    {
      "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]
      }
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationClassificationOp con un modello di testo:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Non obbligatorio per lo schema predefinito.
    Utilizza "prediction.displayNames" per gli schemi non predefiniti.
    prediction_score_column Non obbligatorio per lo schema predefinito.
    Utilizza "prediction.confidences" per gli schemi non predefiniti.
    evaluation_class_labels Non obbligatorio per lo schema predefinito o quando viene fornito prediction_label_column.
    ground_truth_gcs_source Sì: il link a Cloud Storage per il set di dati originale con la colonna di destinazione.
    ground_truth_format Sì: il formato del set di dati originale. Ad esempio, "jsonl", "csv" o "bigquery".

    Video

    Classificazione

    Per i modelli di classificazione dei video, il componente BatchPredictionJob richiede di escludere la colonna target (valore di riferimento) dal set di dati. Puoi utilizzare il componente TargetFieldDataRemoverOp per un flusso di lavoro più efficiente.

    Lo schema predefinito include i seguenti campi:

    • id: stringa
    • displayName: stringa
    • type: enum
    • timeSegmentStart: stringa
    • timeSegmentEnd: stringa
    • confidence: float

    Di seguito è riportato un esempio di set di dati con ground_truth come colonna di destinazione:

    {
      "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi",
      "ground_truth": "cartwheel",
      "timeSegmentStart": "0.0",
      "timeSegmentEnd": "inf"
    }
              

    Il componente TargetFieldDataRemoverOp rimuove la colonna target prima di inviare il file al componente BatchPredictionJob:

    {
      "content": "gs://automl-video-demo-data/hmdb51/Aerial_Cartwheel_Tutorial_By_Jujimufu_cartwheel_f_nm_np1_ri_med_0.avi",
      "timeSegmentStart": "0.0",
      "timeSegmentEnd": "inf"
    }
              

    Di seguito è riportato un esempio di file di output della previsione batch senza la colonna target di label:

    {
      "instance": {
        "content": "gs://automl-video-demo-data/hmdb51/20_Marine_Corps_Pull_Ups___JimmyDShea_pullup_f_cm_np1_ba_bad_3.avi"
        "mimeType": "video/avi",
        "timeSegmentStart": "0.0",
        "timeSegmentEnd": "inf"
      },
      "prediction": [
        {
          "id":"5015420640832782336",
          "displayName":"pullup",
          "type":"segment-classification",
          "timeSegmentStart":"0s",
          "timeSegmentEnd":"2.600s",
          "confidence":0.98152995
        },
        {
          "id":"2709577631619088384",
          "displayName":"cartwheel",
          "type":"segment-classification",
          "timeSegmentStart":"0s",
          "timeSegmentEnd":"2.600s",
          "confidence":0.0047166348
        },
        {
          "id":"403734622405394432",
          "displayName":"golf",
          "type":"segment-classification",
          "timeSegmentStart":"0s",
          "timeSegmentEnd":"2.600s",
          "confidence":0.0046260506
        },
        {
          "id":"1556656127012241408",
          "displayName":"ride_horse",
          "type":"segment-classification",
          "timeSegmentStart":"0s",
          "timeSegmentEnd":"2.600s",
          "confidence":0.004590442
        },
        {
          "id":"7321263650046476288",
          "displayName":"kick_ball",
          "type":"segment-classification",
          "timeSegmentStart":"0s",
          "timeSegmentEnd":"2.600s",
          "confidence":0.004536863
        }
      ]
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationClassificationOp con un modello video:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Non obbligatorio per lo schema predefinito.
    Utilizza "prediction.displayName" per gli schemi non predefiniti.
    prediction_score_column Non obbligatorio per lo schema predefinito.
    Utilizza "prediction.confidence" per gli schemi non predefiniti.
    evaluation_class_labels Non è obbligatorio se viene utilizzato uno schema predefinito o se viene fornito prediction_label_column.
    ground_truth_gcs_source Sì: il link a Cloud Storage per il set di dati originale con la colonna di destinazione.
    ground_truth_format Sì: il formato del set di dati originale. Ad esempio, "jsonl", "csv" o "bigquery".

    Modelli con addestramento personalizzato

    Per i modelli addestrati in base alle esigenze, il componente BatchPredictionJob richiede di escludere la colonna target (basata su dati empirici reali) dal set di dati. Puoi utilizzare il componente TargetFieldDataRemoverOp per un flusso di lavoro più efficiente.

    L'esempio seguente mostra un file di output della previsione batch e i parametri di input richiesti per un modello di classificazione tabulare addestrato in base alle esigenze:

    Tabulare

    Classificazione

    Lo schema tipico include i seguenti campi:

    • instance: array di dati di input nello stesso ordine delle colonne del set di dati di addestramento del modello.
    • prediction: array di dati di input nello stesso ordine delle colonne del set di dati di addestramento del modello.

    Di seguito è riportato un set di dati CSV di esempio con species come colonna di destinazione:

    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
              

    Il componente TargetFieldDataRemoverOp rimuove la colonna di destinazione prima di inviare il file al componente di previsione batch:

    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
              

    Di seguito è riportato un esempio di file di output della previsione batch senza la colonna target di 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]
    }
              

    Questa tabella descrive i parametri obbligatori per il componente ModelEvaluationClassificationOp con un modello video:

    Parametro del componente di valutazione Obbligatorio
    target_field_name
    prediction_label_column Deve essere vuota; questa colonna non esiste nei modelli con addestramento personalizzato.
    prediction_score_column Non obbligatorio per lo schema predefinito; viene impostato automaticamente per i formati JSONL, CSV o BIGQUERY.
    evaluation_class_labels Sì. Deve avere la stessa lunghezza dell'array di previsione dell'output.
    ground_truth_gcs_source Sì: il link a Cloud Storage per il set di dati originale con la colonna di destinazione.
    ground_truth_format Sì: il formato del set di dati originale. Ad esempio, "jsonl", "csv" o "bigquery".

    Valutazioni dei modelli senza previsioni in batch generate da Vertex AI

    Puoi utilizzare un componente della pipeline di valutazione del modello con una previsione batch che non hai generato in Vertex AI. Tuttavia, tieni presente che l'input per il componente della pipeline di valutazione del modello deve essere una directory di previsione batch contenente file corrispondenti ai seguenti prefissi:

    • prediction.results-

    • explanation.results-

    • predictions_

    Riferimento API

    Cronologia delle versioni e note di rilascio

    Per scoprire di più sulla cronologia delle versioni e sulle modifiche all'SDK Google Cloud Pipeline Components, consulta le note di rilascio dell'SDK Google Cloud Pipeline Components.