Os componentes da avaliação de modelo usam informações empíricas e de previsão em lote como entrada e geram métricas de avaliação. Os dados de informações empíricas são dados "identificados corretamente" conforme determinado por humanos. Eles geralmente são fornecidos como o campo de destino no conjunto de dados de teste usado para treinar o modelo. Para mais informações, consulte Avaliação de modelos na Vertex AI.
A Vertex AI fornece os seguintes componentes da avaliação de modelo:
Compatibilidade com o tipo de modelo
A tabela a seguir mostra os tipos de modelo compatíveis com cada componente de avaliação de modelo:
Componente de avaliação do modelo | Tipos de modelos compatíveis |
---|---|
ModelEvaluationClassificationOp |
|
ModelEvaluationRegressionOp |
|
ModelEvaluationForecastingOp |
|
Remover o campo de destino
Para alguns tipos de modelo, o componente BatchPredictionJob
exige que você exclua a coluna de destino (informações empíricas) do conjunto de dados.
Configurar e formatar frações do conjunto de dados tabular
Um setor é um subconjunto de dados tabulares com características específicas. As métricas em fatias oferecem métricas de avaliação mais granulares para o AutoML tabular e modelos de classificação de treinamento personalizados.
Por exemplo, considere um conjunto de dados de adoção de animais de estimação em que um modelo é treinado para prever se um animal de estimação será adotado em uma semana. Embora seja útil analisar métricas para todo o conjunto de dados, você pode estar interessado em métricas relacionadas à espécie e idade do animal de estimação. Em outras palavras, você tem interesse no seguinte subconjunto do conjunto de dados:
Recurso | Valores |
---|---|
age (in years) |
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
species |
[“cão”, “gato”, “peixe”] |
Essa análise detalhada pode ser útil para identificar onde o modelo pode ser mais propenso a erros ou garantir que ele tenha um bom desempenho em subconjuntos críticos dos dados.
Configurar partes
Para configurar uma fatia, crie um arquivo JSON com a seguinte configuração:
{ "FEATURE": { "KIND": { CONFIG } } }
Em que:
FEATURE é um recurso para criar uma fatia. Por exemplo,
age
.KIND é um destes:
value
value
cria uma única fatia em um único valor de recurso. 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 a seguir cria uma única fatia contendo dados com
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
.O exemplo de configuração a seguir cria uma única fatia contendo dados em que
age
é qualquer valor entre1
e3
:{ "age": { "range": { "low": 1, "high": 3 } } }
all_values
all_values
cria uma fatia separada para cada rótulo possível para o recurso. Especifique CONFIG como"value": true
.A configuração de exemplo a seguir cria três frações, uma para
"dog"
,"cat"
e"rabbit"
:{ "species": { "all_values": { "value": true } } }
Você também pode usar vários recursos para criar uma ou mais fatias.
A configuração a seguir cria uma única fatia contendo dados em que age
está entre 1
e 3
e species
é "dog"
:
{ "age": { "range": { "low": 1, "high": 3 } }, "species": { "value": { "string_value": "dog" } } }
A configuração a seguir cria várias fatias, uma para cada espécie no conjunto de dados, em que age
é 1
.
{ "species": { "all_values": { "value": true } }, "age": { "value": { "float_value": 1.0 } } }
As fatias resultantes contêm os seguintes dados do conjunto de dados de exemplo:
Fatia 1:
age:1
especies:"dog"
Fatia 2:
age:1
especies:"cat"
Fatia 3:
age:1
especies:"rabbit"
Formatar fatias
Para formatar frações do componente ModelEvaluationClassificationOp
, faça o
seguinte:
Crie um
slicing_spec
. 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 fatia. Exemplo:
slicing_specs = []
Formate cada
slicing_spec
como JSON ou um dicionário. Exemplo:slicing_spec_json = json_format.MessageToJson(slicing_spec) slicing_spec_dict = json_format.MessageToDict(slicing_spec)
Combine cada
slicing_spec
em uma lista. Exemplo:slicing_specs.append(slicing_spec_json)
Transmita
slicing_specs
como um parâmetro para o componenteModelEvaluationClassificationOp
. Exemplo:ModelEvaluationClassificationOp(slicing_specs=slicing_specs)
Parcelas de configuração das métricas de imparcialidade de formato
Para avaliar seu modelo paraimparcialidade, use os seguintes componentes:
DetectDataBiasOp
: retorna métricas de viés de dados para as fatias que você transmite para o componente.DetectModelBiasOp
: retorna métricas de viés do modelo para as fatias que você transmite para o componente.
Para formatar suas fatias para os componentes DetectDataBiasOp
e DetectModelBiasOp
, faça o seguinte:
Crie um
BiasConfig
. 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 viés. Exemplo:
bias_configs = []
Formate cada
bias_config
como JSON ou um dicionário. Exemplo:bias_config_json = json_format.MessageToJson(bias_config) bias_config_dict = json_format.MessageToDict(bias_config)
Combine cada
bias_config
em uma lista. Exemplo:bias_configs.append(bias_config_json)
Transmita
bias_configs
como um parâmetro para o componenteDetectDataBiasOp
ouDetectModelBiasOp
. 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 componentes de avaliação de modelo variam de acordo com o tipo de modelo que você está avaliando.
Modelos de AutoML
Ao treinar modelos do AutoML, a Vertex AI usa esquemas padrão. Alguns parâmetros de entrada para os componentes de avaliação de modelo só serão necessários se você tiver usado um esquema não padrão para treinar o modelo.
É possível visualizar e fazer o download de arquivos de esquema no seguinte local do
Cloud Storage:
gs://google-cloud-aiplatform/schema/modelevaluation/
As guias a seguir mostram exemplos de arquivos de saída de previsão em lote e os parâmetros de entrada necessários para cada tipo de modelo:
Tabular
Classificação
O esquema padrão contém os seguintes campos:
scores
: matrizclasses
: matriz
Veja a seguir um exemplo de arquivo de saída de previsão em lote com
a coluna 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"] } }
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 |
Yes |
prediction_label_column |
Não é obrigatório para o esquema padrão. Use prediction.classes para esquemas não padrão. |
prediction_score_column |
Não é obrigatório para o esquema padrão. Use prediction.scores para esquemas não padrão. |
evaluation_class_labels |
Não é obrigatório para o esquema padrão. Use ["0","1"] para esquemas não padrão. |
Regressão
O esquema padrão contém os seguintes campos:
value
: ponto flutuantelower_bound
: ponto flutuanteupper_bound
: ponto flutuante
Veja a seguir um exemplo de arquivo de saída de previsão em lote com
a coluna 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 } }
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 |
Yes |
prediction_label_column |
Não é obrigatório para modelos de regressão. |
prediction_score_column |
Não é obrigatório para o esquema padrão. Use prediction.value para esquemas não padrão. |
evaluation_class_labels |
Não é obrigatório para modelos de regressão. |
Previsão
Para modelos de estimativa tabular, o componente BatchPredictionJob
exige que você exclua a coluna de destino (informações empíricas)
do conjunto de dados. É possível usar o componente TargetFieldDataRemoverOp
para ter um fluxo de trabalho mais eficiente.
O esquema padrão contém os seguintes campos:
id
: stringdisplayNames
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: ponto flutuante
Veja a seguir um exemplo de arquivo 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 arquivo 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
Veja a seguir um exemplo de arquivo 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 |
Yes |
prediction_label_column |
Não é obrigatório para modelos de previsão. |
prediction_score_column |
Não é obrigatório para o esquema padrão. Use "prediction.value" para esquemas não padrão. |
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" . |
Texto
Classificação
Para modelos de classificação de texto, o componente BatchPredictionJob
exige que você exclua a coluna de destino (informações empíricas)
do conjunto de dados. É possível usar o componente TargetFieldDataRemoverOp
para ter um fluxo de trabalho mais eficiente.
O esquema padrão contém os seguintes campos:
ids
: matriz de stringsdisplayName
: matriz de stringsconfidence
: matriz de pontos flutuantes
Veja a seguir um conjunto de dados de exemplo com
label
como coluna de destino:
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain", "label": "affection" }
O componente TargetFieldDataRemoverOp
remove a coluna de destino antes de enviar o arquivo para o componente BatchPredictionJob
:
{ "content": "gs://kbn-us-central1-test/datasets/text/happy_0.txt", "mimeType": "text/plain" }
Veja a seguir um exemplo de arquivo de saída de previsão em lote sem
a coluna de destino de 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] } }
Esta tabela descreve os parâmetros necessários para o
componente ModelEvaluationClassificationOp
com um
modelo de texto:
Parâmetro do componente de avaliação | Obrigatória |
---|---|
target_field_name |
Yes |
prediction_label_column |
Não é obrigatório para o esquema padrão. Use "prediction.displayNames" para esquemas não padrão. |
prediction_score_column |
Não é obrigatório para o esquema padrão. Use "prediction.confidences" para esquemas não padrão. |
evaluation_class_labels |
Não é necessário para o esquema padrão 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" . |
Vídeo
Classificação
Para modelos de classificação de vídeo, o componente BatchPredictionJob
exige que você exclua a coluna de destino (informações empíricas)
do seu conjunto de dados. É possível usar o componente TargetFieldDataRemoverOp
para ter um fluxo de trabalho mais eficiente.
O esquema padrão contém os seguintes campos:
id
: stringdisplayName
: stringtype
: enumtimeSegmentStart
: stringtimeSegmentEnd
: stringconfidence
: ponto flutuante
Veja a seguir um conjunto de dados de exemplo 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 arquivo 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" }
Veja a seguir um exemplo de arquivo 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 |
Yes |
prediction_label_column |
Não é obrigatório para o esquema padrão. Use "prediction.displayName" para esquemas não padrão. |
prediction_score_column |
Não é obrigatório para o esquema padrão. Use "prediction.confidence" para esquemas não padrão. |
evaluation_class_labels |
Não é obrigatório quando um esquema padrão é usado 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 treinados e personalizados
Para modelos treinados de maneira personalizada, o componente BatchPredictionJob
exige que você exclua a coluna de destino (informações empíricas) do conjunto de dados. É
possível usar o componente TargetFieldDataRemoverOp
para ter um fluxo de trabalho
mais eficiente.
Veja no exemplo a seguir um arquivo de saída de previsão em lote e os parâmetros de entrada necessários para um modelo de classificação tabular personalizado treinado:
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 treinamento de modelo.prediction
: matriz de dados de entrada na mesma ordem que as colunas do conjunto de dados de treinamento de modelo.
Veja a seguir 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 arquivo 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
Veja a seguir um exemplo de arquivo 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 |
Yes |
prediction_label_column |
Precisa estar vazio. Essa coluna não existe em modelos treinados personalizados. |
prediction_score_column |
Não é obrigatório para o esquema padrão. É definido automaticamente para os formatos JSONL , CSV ou BIGQUERY . |
evaluation_class_labels |
Sim. Precisa ter o mesmo tamanho da 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 modelo sem previsões em lote geradas pela Vertex AI
É possível usar um componente de pipeline de avaliação de modelo com uma previsão em lote que você não gerou na Vertex AI. No entanto, observe que a entrada do componente de pipeline de avaliação de modelo precisa ser um diretório de previsão em lote que contém os arquivos que correspondem aos seguintes prefixos:
prediction.results-
explanation.results-
predictions_
Referência da API
Para referência de componentes, consulte a
referência do SDK google_cloud_pipeline_components
.
Para ver exemplos de como usar os componentes de avaliação de modelo, consulte os notebooks listados em Criar uma avaliação.
Histórico de versões e notas da versão
Para saber mais sobre o histórico de versões e as mudanças no SDK de componentes de pipeline do Google Cloud, consulte as Notas de lançamento do SDK de componentes de pipeline do Google Cloud.