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 divididas oferecem métricas de avaliação mais granulares para modelos de classificação de treinamento tabular e personalizado do AutoML.
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ório |
---|---|
target_field_name |
Sim |
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ório |
---|---|
target_field_name |
Sim |
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.
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ório |
---|---|
target_field_name |
Sim |
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ório |
---|---|
target_field_name |
Sim |
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ório |
---|---|
target_field_name |
Sim |
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ório |
---|---|
target_field_name |
Sim |
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 página de referência do SDK de componentes de pipeline do Google Cloud para componentes de avaliação de modelo.
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.