I componenti di valutazione del modello prendono i risultati di dati empirici reali e di previsione batch come input e generano metriche di valutazione. I dati empirici reali sono dati "correttamente etichettati" come determinati da esseri umani 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 dei tipi di modello
La seguente tabella mostra i tipi di modello supportati per ogni componente di valutazione del modello:
Componente di valutazione del modello | Tipi di modelli supportati |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
Rimuovi il campo di destinazione
Per alcuni tipi di modello, il componente BatchPredictionJob
richiede di escludere la colonna di destinazione (dati empirici reali) dal set di dati.
Configura e formatta le sezioni per il tuo set di dati tabulare
Una sezione è un sottoinsieme di dati tabulari con caratteristiche specificate. Le metriche a fette offrono metriche di valutazione più granulari per i modelli di classificazione dell'addestramento personalizzato e tabulari AutoML.
Ad esempio, considera un set di dati di adozione di animali domestici in cui un modello viene addestrato per prevedere se un animale domestico verrà adottato entro una settimana. Sebbene sia utile esaminare le metriche per l'intero set di dati, potrebbero interessarti le metriche relative alla specie e all'età dell'animale. In altre parole, ti interessa il seguente sottoinsieme del set di dati:
Selezione delle | 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 maggiormente soggetto a errori o per garantire che il modello funzioni bene su sottoinsiemi critici dei dati.
Configura sezioni
Per configurare una sezione, crea un file JSON con la seguente configurazione:
{ "FEATURE": { "KIND": { CONFIG } } }
Dove:
FEATURE è una funzionalità per cui vuoi creare una sezione. Ad esempio,
age
.KIND è uno dei seguenti:
value
value
crea una singola sezione su un singolo valore di una funzionalità. Specifica CONFIG come coppia chiave-valore in cui la chiave èfloat_value
ostring_value
. Ad esempio,"float_value": 1.0
.La seguente configurazione di esempio crea una singola sezione contenente dati con
age
di1
:{ "age": { "value": { "float_value": 1.0 } } }
range
range
crea una singola sezione che include i dati compresi in un intervallo specificato. Specifica CONFIG come due coppie chiave-valore in cui le chiavi sonolow
ehigh
.La seguente configurazione di esempio crea una singola sezione contenente dati in cui
age
è qualsiasi valore compreso tra1
e3
:{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
crea una sezione separata per ogni possibile etichetta per la funzionalità. Specifica CONFIG come"value": true
.La seguente configurazione di esempio crea tre sezioni, una per
"dog"
,"cat"
e"rabbit"
:{ "species": { "all_values": { "value": true } } }
Puoi anche utilizzare più funzionalità per creare una o più sezioni.
La seguente configurazione crea una singola sezione contenente 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ù sezioni, una per ogni specie univoca
nel set di dati, dove age
è 1
.
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
Le sezioni risultanti contengono i seguenti dati del set di dati di esempio:
Sezione 1:
age:1
especies:"dog"
Sezione 2:
age:1
especies:"cat"
Sezione 3:
age:1
especies:"rabbit"
Formattare le sezioni
Per formattare le sezioni per il componente ModelEvaluationClassificationOp
:
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') ) })
Crea un elenco per archiviare le configurazioni delle sezioni. Ad esempio:
slicing_specs = []
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)
Combina ogni
slicing_spec
in un elenco. Ad esempio:slicing_specs.append(slicing_spec_json)
Passa
slicing_specs
come parametro al componenteModelEvaluationClassificationOp
. Ad esempio:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Formato sezioni di configurazione delle metriche di equità
Per valutare l'equità del modello, utilizza i seguenti componenti:
DetectDataBiasOp
: restituisce le metriche di differenziazione dei dati per le sezioni passate nel componente.DetectModelBiasOp
: restituisce le metriche di bias del modello per le sezioni che passi nel componente.
Per formattare le sezioni per i componenti DetectDataBiasOp
e DetectModelBiasOp
:
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') ) }))
Crea un elenco per archiviare le configurazioni dei bias. Ad esempio:
bias_configs = []
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)
Combina ogni
bias_config
in un elenco. Ad esempio:bias_configs.append(bias_config_json)
Passa
bias_configs
come parametro al componenteDetectDataBiasOp
oDetectModelBiasOp
. 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 di modelli AutoML, Vertex AI utilizza 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 di schema dalla seguente posizione di Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/
Le seguenti schede mostrano file di output della previsione batch di esempio e parametri di input richiesti per ogni tipo di modello:
Tabulari
Classificazione
Lo schema predefinito include i seguenti campi:
scores
: arrayclasses
: array
Di seguito è riportato un esempio di file di output della previsione 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 richiesti per il componente ModelEvaluationClassificationOp
con un modello tabulare:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
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
: numero in virgola mobilelower_bound
: numero in virgola mobileupper_bound
: numero in virgola mobile
Di seguito è riportato un esempio di file di output della previsione 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 richiesti per il componente ModelEvaluationRegressionOp
con un modello tabulare:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
prediction_label_column |
Non obbligatoria 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 obbligatoria per i modelli di regressione. |
Previsione
Per i modelli di previsione tabulare, il componente BatchPredictionJob
richiede di escludere la colonna di destinazione (dati empirici reali)
dal set di dati.
Lo schema predefinito include i seguenti campi:
id
: stringadisplayNames
: stringatype
: enumtimeSegmentStart
: stringatimeSegmentEnd
: stringaconfidence
: numero in virgola mobile
Di seguito è riportato un file CSV di esempio 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
di destinazione 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 di destinazione 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 richiesti per il componente ModelEvaluationForecastingOp
con un modello tabulare:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
prediction_label_column |
Non necessaria 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 necessaria per i modelli di previsione. |
ground_truth_gcs_source |
Sì: il link Cloud Storage al 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 di destinazione (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 stringhedisplayName
: array di stringheconfidence
: array di valori in virgola mobile
Di seguito è riportato un set di dati di esempio 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
di destinazione 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 di destinazione 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 richiesti per il componente ModelEvaluationClassificationOp
con un modello di testo:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
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 Cloud Storage al 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 video, il componente BatchPredictionJob
richiede di escludere la colonna di destinazione (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:
id
: stringadisplayName
: stringatype
: enumtimeSegmentStart
: stringatimeSegmentEnd
: stringaconfidence
: numero in virgola mobile
Di seguito è riportato un set di dati di esempio 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
di destinazione 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 di destinazione 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 richiesti per il componente ModelEvaluationClassificationOp
con un modello video:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
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 quando viene utilizzato uno schema predefinito o quando
viene fornito prediction_label_column . |
ground_truth_gcs_source |
Sì: il link Cloud Storage al 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 con addestramento personalizzato, il componente BatchPredictionJob
richiede di escludere la colonna di destinazione (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 con addestramento personalizzato:
Tabulari
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 dei modelli.prediction
: array di dati di input nello stesso ordine delle colonne del set di dati di addestramento dei modelli.
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 di destinazione 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 richiesti per il componente ModelEvaluationClassificationOp
con un modello video:
Parametro del componente di valutazione | Obbligatorio |
---|---|
target_field_name |
Sì |
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 di output. |
ground_truth_gcs_source |
Sì: il link Cloud Storage al 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 batch generate da Vertex AI
Puoi utilizzare un componente della pipeline di valutazione dei modelli 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
Per informazioni sui componenti, consulta la pagina di riferimento dell'SDK Google Cloud Pipeline Componenti per i componenti di valutazione del modello.
Per esempi di come utilizzare i componenti di valutazione del modello, consulta i blocchi note elencati in Creare una valutazione.
Cronologia delle versioni e note di rilascio
Per saperne di più sulla cronologia delle versioni e sulle modifiche all'SDK Google Cloud Pipeline Componenti, consulta le note di rilascio dell'SDK Google Cloud Pipeline Componenti.