I componenti di valutazione del modello prendono come input i dati di fatto e i risultati delle previsioni in batch e generano metriche di valutazione. I dati di fatto sono dati "etichettati correttamente" come determinato da persone e vengono solitamente forniti come campo target nel set di dati di test utilizzato per addestrare il modello. Per saperne di più, consulta Valutazione dei modelli in Agent Platform.
Agent Platform fornisce i seguenti componenti di valutazione del modello:
Supporto dei tipi di modelli
La tabella seguente mostra i tipi di modelli supportati per ciascun 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 modelli, il componente BatchPredictionJob richiede di escludere la colonna target (dato di fatto) dal set di dati.
Configura e formatta le sezioni per il set di dati tabulare
Una sezione è un sottoinsieme di dati tabulari con caratteristiche specificate. Le metriche suddivise offrono metriche di valutazione più granulari per i modelli di classificazione tabulari e di addestramento personalizzato AutoML.
Ad esempio, considera un set di dati sull'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, 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 |
"dog", "cat", "rabbit" |
Questa analisi dettagliata può essere utile per identificare dove il modello potrebbe essere più soggetto a errori o per garantire che il modello funzioni bene su sottoinsiemi di dati critici.
Configura le sezioni
Per configurare una sezione, crea un file JSON con la seguente configurazione:
{
"FEATURE": {
"KIND": {
CONFIG
}
}
}
Dove:
FEATURE è una caratteristica per cui vuoi creare una sezione. Ad esempio,
age.KIND è uno dei seguenti:
valuevaluecrea una singola sezione su un singolo valore di una caratteristica. Specifica CONFIG come coppia chiave-valore in cui la chiave èfloat_valueostring_value. Ad esempio,"float_value": 1.0.La seguente configurazione di esempio crea una singola sezione contenente dati con
agedi1:{ "age": { "value": { "float_value": 1.0 } } }rangerangecrea una singola sezione che include i dati all'interno di un intervallo specificato. Specifica CONFIG come due coppie chiave/valore in cui le chiavi sonolowehigh.La seguente configurazione di esempio crea una singola sezione contenente dati in cui
ageè un valore compreso tra1e3:{ "age": { "range": { "low": 1, "high": 3 } } }all_valuesall_valuescrea una sezione separata per ogni possibile etichetta della caratteristica. Specifica CONFIG come"value": true.La seguente configurazione di esempio crea tre sezioni, una per
"dog", una per"cat"e una per"rabbit":{ "species": { "all_values": { "value": true } } }
Puoi anche utilizzare più caratteristiche per creare una o più sezioni.
La seguente configurazione crea un singolo segmento 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ù 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:1especies:"dog"Sezione 2:
age:1especies:"cat"Sezione 3:
age:1especies:"rabbit"
Formatta le sezioni
Per formattare le sezioni per il componente ModelEvaluationClassificationOp, segui questi passaggi:
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_speccome JSON o dizionario. Ad esempio:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
Combina ogni
slicing_specin un elenco. Ad esempio:slicing_specs.append(slicing_spec_json)
Passa
slicing_specscome parametro al componenteModelEvaluationClassificationOp. Ad esempio:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Formato delle sezioni di configurazione delle metriche di equità
Per valutare l'equità del modello, utilizza i seguenti componenti:
DetectDataBiasOp: restituisce le metriche di bias dei dati per le sezioni che passi al componente.DetectModelBiasOp: restituisce le metriche di bias del modello per le sezioni che passi al componente.
Per formattare le sezioni per i componenti DetectDataBiasOp e DetectModelBiasOp, segui questi passaggi:
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 di bias. Ad esempio:
bias_configs = []
Formatta ogni
bias_configcome JSON o dizionario. Ad esempio:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
Combina ogni
bias_configin un elenco. Ad esempio:bias_configs.append(bias_config_json)
Passa
bias_configscome parametro al componenteDetectDataBiasOpoDetectModelBiasOp. 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, Gemini Enterprise Agent Platform 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 i file di output di esempio della previsione in batch e i parametri di input richiesti per ogni tipo di modello tabulare:
Classificazione
Lo schema predefinito include i seguenti campi:
scores: arrayclasses: array
Di seguito è riportato un esempio di file di output di previsione in batch con la colonna target 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 |
Sì |
prediction_label_column |
Non richiesto per lo schema predefinito. Utilizza prediction.classes per gli schemi non predefiniti. |
prediction_score_column |
Non richiesto per lo schema predefinito. Utilizza prediction.scores per gli schemi non predefiniti. |
evaluation_class_labels |
Non richiesto per lo schema predefinito. Utilizza ["0","1"] per gli schemi non predefiniti. |
Regressione
Lo schema predefinito include i seguenti campi:
value: floatlower_bound: floatupper_bound: float
Di seguito è riportato un esempio di file di output di previsione in batch con la colonna target 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 |
Sì |
prediction_label_column |
Non obbligatorio per i modelli di regressione. |
prediction_score_column |
Non richiesto 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 (dato di fatto) dal set di dati.
Lo schema predefinito include i seguenti campi:
id: stringdisplayNames: stringtype: enumtimeSegmentStart: stringtimeSegmentEnd: stringconfidence: float
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 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 di previsione in batch senza la colonna di destinazione 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 richiesti per il componente ModelEvaluationForecastingOp con un modello tabulare:
| Parametro del componente di valutazione | Obbligatorio |
|---|---|
target_field_name |
Sì |
prediction_label_column |
Non obbligatorio per i modelli di previsione. |
prediction_score_column |
Non richiesto 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 di 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 target (dato di fatto) dal set di dati. Puoi utilizzare il componente TargetFieldDataRemoverOp per un flusso di lavoro più efficiente.
L'esempio seguente mostra un file di output di previsione in batch e i parametri di input richiesti per un modello di classificazione tabulare con addestramento personalizzato:
Classificazione
Lo schema tipico include i seguenti campi:
instance: array di dati di input nello stesso ordine delle colonne del dataset 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 target prima di inviare il file al componente di previsione in 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 di previsione in batch senza la colonna di destinazione 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 richiesti per il componente ModelEvaluationClassificationOp con un modello addestrato personalizzato:
| 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 di 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 del modello senza previsioni in batch generate da Agent Platform
Puoi utilizzare un componente della pipeline di valutazione del modello con previsioni in batch che non hai generato in Agent Platform. Tuttavia, tieni presente che l'input per il componente della pipeline di valutazione del modello deve essere una directory di previsioni in batch contenente file che corrispondono ai seguenti prefissi:
prediction.results-explanation.results-predictions_
Riferimento API
Per il riferimento ai componenti, consulta la pagina di riferimento dell'SDKGoogle Cloud per i componenti di valutazione del modello.
Per esempi di come utilizzare i componenti di valutazione dei modelli su Gemini Enterprise Agent Platform, consulta i blocchi note elencati in Crea una valutazione.
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'SDKGoogle Cloud Pipeline Components.