Los componentes de evaluación de modelos toman como entrada los resultados de las etiquetas validadas en el terreno y de las predicciones por lotes y generan métricas de evaluación. Los datos de verdad fundamental son datos "etiquetados correctamente" por personas y, por lo general, se proporcionan como el campo de destino en el conjunto de datos de prueba que has usado para entrenar el modelo. Para obtener más información, consulta Evaluación de modelos en Vertex AI.
Vertex AI proporciona los siguientes componentes de evaluación de modelos:
Compatibilidad con tipos de modelos
En la siguiente tabla se muestran los tipos de modelos admitidos para cada componente de evaluación de modelos:
Componente de evaluación de modelos | Tipos de modelos admitidos |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
Quitar el campo de destino
En algunos tipos de modelos, el componente BatchPredictionJob
requiere que excluyas la columna de destino (datos verificados) de tu conjunto de datos.
Configurar y dar formato a las porciones de un conjunto de datos tabulares
Una porción es un subconjunto de datos tabulares con características específicas. Las métricas segmentadas ofrecen métricas de evaluación más detalladas para los modelos de clasificación de entrenamiento personalizado y tabular de AutoML.
Por ejemplo, supongamos que tenemos un conjunto de datos de adopción de mascotas en el que se entrena un modelo para predecir si una mascota se adoptará en una semana. Aunque es útil consultar las métricas de todo el conjunto de datos, puede que le interesen las métricas relacionadas con la especie y la edad de la mascota. Es decir, te interesa el siguiente subconjunto del conjunto de datos:
Función | Valores |
---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
"perro", "gato", "conejo" |
Este análisis detallado puede ser útil para identificar dónde puede ser más propenso a errores el modelo o para asegurarse de que funciona bien en subconjuntos de datos críticos.
Configurar porciones
Para configurar un slice, crea un archivo JSON con la siguiente configuración:
{ "FEATURE": { "KIND": { CONFIG } } }
Donde:
FEATURE es una función para la que quieres crear una porción. Por ejemplo,
age
.KIND es uno de los siguientes elementos:
value
value
crea una sola porción en un solo valor de una característica. Especifica CONFIG como par clave-valor, donde la clave esfloat_value
ostring_value
. Por ejemplo,"float_value": 1.0
.La siguiente configuración de ejemplo crea una sola porción que contiene datos con el
age
de1
:{ "age": { "value": { "float_value": 1.0 } } }
range
range
crea una sola porción que incluye los datos de un intervalo específico. Especifique CONFIG como dos pares clave-valor en los que las claves seanlow
yhigh
.En la siguiente configuración de ejemplo se crea una sola porción que contiene datos en los que
age
es cualquier valor entre1
y3
:{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
crea una porción independiente para cada etiqueta posible de la función. Especifica CONFIG como"value": true
.En la siguiente configuración de ejemplo se crean tres segmentos, uno para
"dog"
,"cat"
y"rabbit"
:{ "species": { "all_values": { "value": true } } }
También puedes usar varias funciones para crear uno o varios segmentos.
La siguiente configuración crea una sola porción que contiene datos en los que el age
está entre 1
y 3
, y el species
es "dog"
:
{ "age": { "range": { "low": 1, "high": 3 } }, "species": { "value": { "string_value": "dog" } } }
La siguiente configuración crea varias porciones, una por cada especie única del conjunto de datos, donde age
es 1
.
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
Los segmentos resultantes contienen los siguientes datos del conjunto de datos de ejemplo:
Porción 1:
age:1
yspecies:"dog"
Sector 2:
age:1
yspecies:"cat"
Porción 3:
age:1
yspecies:"rabbit"
Dar formato a las porciones
Para dar formato a las porciones del componente ModelEvaluationClassificationOp
, sigue estos pasos:
Crea un
slicing_spec
. Por ejemplo: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 una lista para almacenar las configuraciones de los segmentos. Por ejemplo:
slicing_specs = []
Da formato a cada
slicing_spec
como JSON o diccionario. Por ejemplo:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
Combina cada
slicing_spec
en una lista. Por ejemplo:slicing_specs.append(slicing_spec_json)
Transfiere
slicing_specs
como parámetro al componenteModelEvaluationClassificationOp
. Por ejemplo:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Formatear las porciones de configuración de las métricas de equidad
Para evaluar la equidad de tu modelo, usa los siguientes componentes:
DetectDataBiasOp
: devuelve métricas de sesgo de los datos de las porciones que le transfieras al componente.DetectModelBiasOp
: devuelve las métricas de sesgo del modelo de las porciones que envíes al componente.
Para dar formato a tus porciones para los componentes DetectDataBiasOp
y DetectModelBiasOp
, haz lo siguiente:
Crea un
BiasConfig
. Por ejemplo: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 una lista para almacenar las configuraciones de sesgo. Por ejemplo:
bias_configs = []
Da formato a cada
bias_config
como JSON o diccionario. Por ejemplo:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
Combina cada
bias_config
en una lista. Por ejemplo:bias_configs.append(bias_config_json)
Transfiere
bias_configs
como parámetro al componenteDetectDataBiasOp
oDetectModelBiasOp
. Por ejemplo:DetectDataBiasOp(bias_configs=bias_configs) DetectModelBiasOp(bias_configs=bias_configs)
Parámetros de entrada obligatorios
Los parámetros de entrada necesarios para los componentes de evaluación de modelos varían en función del tipo de modelo que estés evaluando.
Modelos de AutoML
Cuando se entrenan modelos de AutoML, Vertex AI usa esquemas predeterminados. Algunos parámetros de entrada de los componentes de evaluación del modelo solo son obligatorios si has usado un esquema no predeterminado para entrenar el modelo.
Puedes ver y descargar archivos de esquema desde la siguiente ubicación de Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/
En las siguientes pestañas se muestran ejemplos de archivos de salida de predicciones por lotes y los parámetros de entrada necesarios para cada tipo de modelo:
Tabular
Clasificación
El esquema predeterminado incluye los siguientes campos:
scores
: arrayclasses
: array
A continuación, se muestra un ejemplo de un archivo de salida de predicción por lotes con la columna de destino 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"] } }
En esta tabla se describen los parámetros obligatorios del componente ModelEvaluationClassificationOp
con un modelo tabular:
Parámetro del componente de evaluación | Obligatorio |
---|---|
target_field_name |
Sí |
prediction_label_column |
No es necesario para el esquema predeterminado. Usa prediction.classes para los esquemas que no sean predeterminados. |
prediction_score_column |
No es necesario para el esquema predeterminado. Usa prediction.scores para los esquemas que no sean predeterminados. |
evaluation_class_labels |
No es necesario para el esquema predeterminado. Usa ["0","1"] para los esquemas que no sean predeterminados. |
Regresión
El esquema predeterminado incluye los siguientes campos:
value
: floatlower_bound
: floatupper_bound
: float
A continuación, se muestra un ejemplo de un archivo de salida de predicción por lotes con la columna de destino 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 } }
En esta tabla se describen los parámetros obligatorios del componente ModelEvaluationRegressionOp
con un modelo tabular:
Parámetro del componente de evaluación | Obligatorio |
---|---|
target_field_name |
Sí |
prediction_label_column |
No es obligatorio para los modelos de regresión. |
prediction_score_column |
No es necesario para el esquema predeterminado. Usa prediction.value para los esquemas que no sean predeterminados. |
evaluation_class_labels |
No es obligatorio para los modelos de regresión. |
Previsión
En el caso de los modelos de previsión tabulares, el componente BatchPredictionJob
requiere que excluyas la columna de destino (datos verificados)
de tu conjunto de datos.
El esquema predeterminado incluye los siguientes campos:
id
: cadenadisplayNames
: cadenatype
: enumtimeSegmentStart
: cadenatimeSegmentEnd
: cadenaconfidence
: float
A continuación se muestra un ejemplo de archivo CSV con
sale_dollars
como columna de destino:
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
El componente TargetFieldDataRemoverOp
elimina la columna de destino
antes de enviar el archivo 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
A continuación, se muestra un ejemplo de un archivo de salida de predicción por lotes sin la columna de destino 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] } }
En esta tabla se describen los parámetros obligatorios del componente ModelEvaluationForecastingOp
con un modelo tabular:
Parámetro del componente de evaluación | Obligatorio |
---|---|
target_field_name |
Sí |
prediction_label_column |
No es necesario para los modelos de previsión. |
prediction_score_column |
No es necesario para el esquema predeterminado. Usa "prediction.value" para los esquemas que no sean predeterminados. |
evaluation_class_labels |
No es necesario para los modelos de previsión. |
ground_truth_gcs_source |
Sí: el enlace de Cloud Storage al conjunto de datos original con la columna de destino. |
ground_truth_format |
Sí: el formato del conjunto de datos original. Por ejemplo, "jsonl" , "csv" o "bigquery" . |
Vídeo
Clasificación
En los modelos de clasificación de vídeo, el componente BatchPredictionJob
requiere que excluyas la columna de destino (datos verificados)
de tu conjunto de datos. Puedes usar el componente TargetFieldDataRemoverOp
para que el flujo de trabajo sea más eficiente.
El esquema predeterminado incluye los siguientes campos:
id
: cadenadisplayName
: cadenatype
: enumtimeSegmentStart
: cadenatimeSegmentEnd
: cadenaconfidence
: float
A continuación, se muestra un ejemplo de un conjunto de datos con ground_truth
como columna de destino:
{ "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" }
El componente TargetFieldDataRemoverOp
elimina la columna de destino
antes de enviar el archivo 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" }
A continuación, se muestra un ejemplo de un archivo de salida de predicción por lotes sin la columna de destino 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 } ] }
En esta tabla se describen los parámetros obligatorios del componente ModelEvaluationClassificationOp
con un modelo de vídeo:
Parámetro del componente de evaluación | Obligatorio |
---|---|
target_field_name |
Sí |
prediction_label_column |
No es necesario para el esquema predeterminado. Usa "prediction.displayName" para los esquemas que no sean predeterminados. |
prediction_score_column |
No es necesario para el esquema predeterminado. Usa "prediction.confidence" para los esquemas que no sean predeterminados. |
evaluation_class_labels |
No es obligatorio cuando se usa un esquema predeterminado o cuando se proporciona prediction_label_column . |
ground_truth_gcs_source |
Sí: el enlace de Cloud Storage al conjunto de datos original con la columna de destino. |
ground_truth_format |
Sí: el formato del conjunto de datos original. Por ejemplo, "jsonl" , "csv" o "bigquery" . |
Modelos con entrenamiento personalizado
En el caso de los modelos entrenados de forma personalizada, el componente BatchPredictionJob
requiere que excluya la columna de destino (datos verificados) de su conjunto de datos. Puedes usar el componente TargetFieldDataRemoverOp
para que el flujo de trabajo sea más eficiente.
En el siguiente ejemplo se muestra un archivo de salida de predicción por lotes y los parámetros de entrada necesarios para un modelo de clasificación tabular entrenado de forma personalizada:
Tabular
Clasificación
El esquema habitual incluye los siguientes campos:
instance
: matriz de datos de entrada en el mismo orden que las columnas del conjunto de datos de entrenamiento del modelo.prediction
: matriz de datos de entrada en el mismo orden que las columnas del conjunto de datos de entrenamiento del modelo.
A continuación, se muestra un ejemplo de conjunto de datos CSV con species
como columna de destino:
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
El componente TargetFieldDataRemoverOp
elimina la columna de destino
antes de enviar el archivo al componente de predicción por lotes:
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
A continuación, se muestra un ejemplo de un archivo de salida de predicción por lotes sin la columna de destino 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] }
En esta tabla se describen los parámetros obligatorios del componente ModelEvaluationClassificationOp
con un modelo de vídeo:
Parámetro del componente de evaluación | Obligatorio |
---|---|
target_field_name |
Sí |
prediction_label_column |
Debe estar vacía. Esta columna no existe en los modelos entrenados de forma personalizada. |
prediction_score_column |
No es obligatorio para el esquema predeterminado. Se asigna automáticamente a los formatos JSONL , CSV o BIGQUERY . |
evaluation_class_labels |
Sí. Debe tener la misma longitud que la matriz de predicción de salida. |
ground_truth_gcs_source |
Sí: el enlace de Cloud Storage al conjunto de datos original con la columna de destino. |
ground_truth_format |
Sí: el formato del conjunto de datos original. Por ejemplo, "jsonl" , "csv" o "bigquery" . |
Evaluaciones de modelos sin predicciones por lotes generadas por Vertex AI
Puedes usar un componente de canalización de evaluación de modelos con una predicción por lotes que no hayas generado en Vertex AI. Sin embargo, ten en cuenta que la entrada del componente de la canalización de evaluación del modelo debe ser un directorio de predicciones por lotes que contenga archivos con los siguientes prefijos:
prediction.results-
explanation.results-
predictions_
Referencia de la API
Para obtener información de referencia sobre los componentes, consulta la Google Cloud página de referencia del SDK de componentes de evaluación de modelos.
Para ver ejemplos de cómo usar los componentes de Model Evaluation, consulta los cuadernos que se indican en Crear una evaluación.
Historial de versiones y notas de las versiones
Para obtener más información sobre el historial de versiones y los cambios del SDK de componentes de la canalización de Google Cloud , consulta las Google Cloud notas de la versión del SDK de componentes de la canalización.