Os componentes de avaliação de modelos usam dados reais e resultados de previsões em lote como entrada e geram métricas de avaliação. Os dados de verdade fundamental são dados "corretamente etiquetados" determinados por humanos e são normalmente fornecidos como o campo de destino no conjunto de dados de teste que usou para preparar o modelo. Para mais informações, consulte o artigo Avaliação de modelos no Vertex AI.
O Vertex AI fornece os seguintes componentes de avaliação de modelos:
Apoio técnico do tipo de modelo
A tabela seguinte mostra os tipos de modelos suportados para cada componente de avaliação de modelos:
Componente de avaliação de modelos | Tipos de modelos suportados |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
Remova o campo de destino
Para alguns tipos de modelos, o componente BatchPredictionJob
requer que exclua a coluna de destino (dados reais) do seu conjunto de dados.
Configure e formate fatias para o seu conjunto de dados tabulares
Uma fatia é um subconjunto de dados tabulares com caraterísticas especificadas. As métricas segmentadas oferecem métricas de avaliação mais detalhadas para modelos de classificação de preparação personalizados e tabulares do AutoML.
Por exemplo, considere um conjunto de dados de adoção de animais de estimação em que um modelo é preparado para prever se um animal de estimação vai ser adotado no prazo de uma semana. Embora seja útil analisar as métricas para o conjunto de dados completo, pode ter interesse em métricas relacionadas com a espécie e a idade do animal de estimação. Por outras palavras, tem interesse no seguinte subconjunto do conjunto de dados:
Funcionalidade | Valores |
---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
"cão", "gato", "coelho" |
Esta análise detalhada pode ser útil para identificar onde o modelo pode ser mais propenso a erros ou garantir que o modelo tem um bom desempenho em subconjuntos críticos dos dados.
Configure fatias
Para configurar uma fatia, crie um ficheiro JSON com a seguinte configuração:
{ "FEATURE": { "KIND": { CONFIG } } }
Onde:
FEATURE é uma funcionalidade para a qual quer criar uma fatia. Por exemplo,
age
.KIND é uma das seguintes opções:
value
value
cria uma única fatia num único valor de uma funcionalidade. Especifique CONFIG como um par de chave-valor em que a chave éfloat_value
oustring_value
. Por exemplo,"float_value": 1.0
.A configuração de exemplo seguinte cria uma única fatia que contém dados com o
age
de1
:{ "age": { "value": { "float_value": 1.0 } } }
range
range
cria uma única fatia que inclui dados dentro de um intervalo especificado. Especifique CONFIG como dois pares de chave-valor em que as chaves sãolow
ehigh
.A configuração de exemplo seguinte cria uma única fatia que contém dados em que o
age
é qualquer valor entre1
e3
:{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
cria uma fatia separada para cada etiqueta possível da funcionalidade. Especifique CONFIG como"value": true
.A seguinte configuração de exemplo cria três fatias, uma para cada uma das seguintes opções:
"dog"
,"cat"
e"rabbit"
:{ "species": { "all_values": { "value": true } } }
Também pode usar várias funcionalidades para criar uma ou mais divisões.
A configuração seguinte cria uma única fatia que contém dados em que
o age
está entre 1
e 3
e o species
é "dog"
:
{ "age": { "range": { "low": 1, "high": 3 } }, "species": { "value": { "string_value": "dog" } } }
A seguinte configuração cria várias divisões, uma para cada espécie única no conjunto de dados, em que age
é 1
.
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
As segmentações resultantes contêm os seguintes dados do conjunto de dados de exemplo:
Fatia 1:
age:1
especies:"dog"
Setor 2:
age:1
especies:"cat"
Setor 3:
age:1
especies:"rabbit"
Formate fatias
Para formatar fatias para o componente ModelEvaluationClassificationOp
, faça o seguinte:
Crie um
slicing_spec
. Por exemplo: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') ) })
Crie uma lista para armazenar as configurações de segmentação. Por exemplo:
slicing_specs = []
Formate cada
slicing_spec
como JSON ou um dicionário. Por exemplo:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
Combine cada
slicing_spec
numa lista. Por exemplo:slicing_specs.append(slicing_spec_json)
Transmita
slicing_specs
como um parâmetro ao componenteModelEvaluationClassificationOp
. Por exemplo:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Formate as divisões da configuração das métricas de equidade
Para avaliar a imparcialidade do seu modelo, use os seguintes componentes:
DetectDataBiasOp
: devolve métricas de parcialidade dos dados para as divisões que transmite ao componente.DetectModelBiasOp
: devolve métricas de parcialidade do modelo para as fatias que transmite ao componente.
Para formatar as fatias para os componentes DetectDataBiasOp
e DetectModelBiasOp
, faça o seguinte:
Crie um
BiasConfig
. Por exemplo: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') ) }))
Crie uma lista para armazenar as configurações de parcialidade. Por exemplo:
bias_configs = []
Formate cada
bias_config
como JSON ou um dicionário. Por exemplo:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
Combine cada
bias_config
numa lista. Por exemplo:bias_configs.append(bias_config_json)
Transmita
bias_configs
como um parâmetro ao componenteDetectDataBiasOp
ouDetectModelBiasOp
. Por exemplo:DetectDataBiasOp(bias_configs=bias_configs) DetectModelBiasOp(bias_configs=bias_configs)
Parâmetros de entrada obrigatórios
Os parâmetros de entrada necessários para os componentes de avaliação de modelos variam consoante o tipo de modelo que está a avaliar.
Modelos da AutoML
Quando prepara modelos do AutoML, o Vertex AI usa esquemas predefinidos. Alguns parâmetros de entrada para os componentes de avaliação do modelo só são necessários se tiver usado um esquema não predefinido para preparar o modelo.
Pode ver e transferir ficheiros de esquemas a partir da seguinte localização do Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/
Os separadores seguintes mostram exemplos de ficheiros de saída de previsão em lote e parâmetros de entrada necessários para cada tipo de modelo:
Tabular
Classificação
O esquema predefinido inclui os seguintes campos:
scores
: matrizclasses
: matriz
Segue-se um exemplo de um ficheiro de saída de previsão em lote com a coluna de destino de 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"] } }
Esta tabela descreve os parâmetros necessários para o componente ModelEvaluationClassificationOp
com um modelo tabular:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Sim |
prediction_label_column |
Não é necessário para o esquema predefinido. Use prediction.classes para esquemas não predefinidos. |
prediction_score_column |
Não é necessário para o esquema predefinido. Use prediction.scores para esquemas não predefinidos. |
evaluation_class_labels |
Não é necessário para o esquema predefinido. Use ["0","1"] para esquemas não predefinidos. |
Regressão
O esquema predefinido inclui os seguintes campos:
value
: flutuaçãolower_bound
: flutuaçãoupper_bound
: flutuação
Segue-se um exemplo de um ficheiro de saída de previsão em lote com a coluna de destino de 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 } }
Esta tabela descreve os parâmetros necessários para o componente ModelEvaluationRegressionOp
com um modelo tabular:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Sim |
prediction_label_column |
Não é obrigatório para modelos de regressão. |
prediction_score_column |
Não é necessário para o esquema predefinido. Use prediction.value para esquemas não predefinidos. |
evaluation_class_labels |
Não é obrigatório para modelos de regressão. |
Previsão
Para modelos de previsão tabulares, o componente BatchPredictionJob
requer que exclua a coluna de destino (dados reais)
do seu conjunto de dados.
O esquema predefinido inclui os seguintes campos:
id
: stringdisplayNames
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: flutuação
Segue-se um exemplo de um ficheiro CSV com
sale_dollars
como coluna 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
O componente TargetFieldDataRemoverOp
remove a coluna de destino
antes de enviar o ficheiro para o 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
Segue-se um exemplo de um ficheiro de saída de previsão em lote sem a coluna de destino de 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] } }
Esta tabela descreve os parâmetros necessários para o componente ModelEvaluationForecastingOp
com um modelo tabular:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Sim |
prediction_label_column |
Não é obrigatório para modelos de previsão. |
prediction_score_column |
Não é necessário para o esquema predefinido. Use "prediction.value" para esquemas não predefinidos. |
evaluation_class_labels |
Não é obrigatório para modelos de previsão. |
ground_truth_gcs_source |
Sim: o link do Cloud Storage para o conjunto de dados original com a coluna de destino. |
ground_truth_format |
Sim: o formato do conjunto de dados original. Por exemplo,
"jsonl" , "csv" ou "bigquery" . |
Vídeo
Classificação
Para modelos de classificação de vídeo, o componente BatchPredictionJob
requer que exclua a coluna de destino (dados reais)
do seu conjunto de dados. Pode usar o componente TargetFieldDataRemoverOp
para um fluxo de trabalho mais eficiente.
O esquema predefinido inclui os seguintes campos:
id
: stringdisplayName
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: flutuação
Segue-se um exemplo de conjunto de dados com
ground_truth
como coluna 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" }
O componente TargetFieldDataRemoverOp
remove a coluna de destino
antes de enviar o ficheiro para o 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" }
Segue-se um exemplo de um ficheiro de saída de previsão em lote sem a coluna de destino de 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 } ] }
Esta tabela descreve os parâmetros necessários para o componente ModelEvaluationClassificationOp
com um modelo de vídeo:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Sim |
prediction_label_column |
Não é necessário para o esquema predefinido. Use "prediction.displayName" para esquemas não predefinidos. |
prediction_score_column |
Não é necessário para o esquema predefinido. Use "prediction.confidence" para esquemas não predefinidos. |
evaluation_class_labels |
Não é necessário quando é usado um esquema predefinido ou quando
prediction_label_column é fornecido. |
ground_truth_gcs_source |
Sim: o link do Cloud Storage para o conjunto de dados original com a coluna de destino. |
ground_truth_format |
Sim: o formato do conjunto de dados original. Por exemplo,
"jsonl" , "csv" ou "bigquery" . |
Modelos preparados personalizados
Para modelos personalizados preparados, o componente BatchPredictionJob
requer que exclua a coluna de destino (dados reais) do seu conjunto de dados. Pode usar o componente TargetFieldDataRemoverOp
para um fluxo de trabalho mais eficiente.
O exemplo seguinte mostra um ficheiro de saída de previsão em lote e os parâmetros de entrada necessários para um modelo de classificação tabular preparado de forma personalizada:
Tabular
Classificação
O esquema típico inclui os seguintes campos:
instance
: matriz de dados de entrada na mesma ordem que as colunas do conjunto de dados de preparação do modelo.prediction
: matriz de dados de entrada na mesma ordem que as colunas do conjunto de dados de preparação do modelo.
Segue-se um exemplo de conjunto de dados CSV com
species
como coluna 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
O componente TargetFieldDataRemoverOp
remove a coluna de destino antes de enviar o ficheiro para o componente de previsão em lote:
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
Segue-se um exemplo de um ficheiro de saída de previsão em lote sem a coluna de destino de 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] }
Esta tabela descreve os parâmetros necessários para o componente ModelEvaluationClassificationOp
com um modelo de vídeo:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Sim |
prediction_label_column |
Tem de estar vazia. Esta coluna não existe em modelos preparados de forma personalizada. |
prediction_score_column |
Não é obrigatório para o esquema predefinido; é definido automaticamente para os formatos JSONL , CSV ou BIGQUERY . |
evaluation_class_labels |
Sim. Tem de ter o mesmo comprimento que a matriz de previsão de saída. |
ground_truth_gcs_source |
Sim: o link do Cloud Storage para o conjunto de dados original com a coluna de destino. |
ground_truth_format |
Sim: o formato do conjunto de dados original. Por exemplo,
"jsonl" , "csv" ou "bigquery" . |
Avaliações de modelos sem previsões em lote geradas pela Vertex AI
Pode usar um componente de pipeline de avaliação de modelos com uma previsão em lote que não gerou no Vertex AI. No entanto, tenha em atenção que a entrada do componente da pipeline de avaliação do modelo tem de ser um diretório de previsão em lote que contenha ficheiros que correspondam aos seguintes prefixos:
prediction.results-
explanation.results-
predictions_
Referência da API
Para referência de componentes, consulte a Google Cloud página de referência do SDK para componentes de avaliação de modelos.
Para ver exemplos de como usar os componentes de avaliação de modelos, consulte os blocos de notas indicados em Crie uma avaliação.
Histórico de versões e notas de lançamento
Para saber mais sobre o histórico de versões e as alterações ao Google Cloud SDK de componentes de pipeline, consulte as Google Cloud notas de lançamento do SDK de componentes de pipeline.