Esta página mostra como preparar um modelo de classificação ou regressão a partir de um conjunto de dados tabular com o fluxo de trabalho tabular para o AutoML completo.
Antes de começar
Antes de preparar um modelo, conclua o seguinte:
- Prepare os dados de preparação
- Crie um conjunto de dados do Vertex AI.
Ative as seguintes APIs: Vertex AI, Dataflow, Compute Engine e Cloud Storage.
Certifique-se de que as contas de serviço do seu projeto têm as funções necessárias atribuídas. Para ver as contas de serviço e as respetivas funções associadas, aceda à página IAM e selecione a caixa de verificação "Incluir concessões de funções fornecidas pela Google".
Se receber um erro relacionado com quotas ao executar o fluxo de trabalho tabular para o AutoML de ponta a ponta, pode ter de pedir uma quota mais elevada. Para saber mais, consulte o artigo Faça a gestão das quotas para fluxos de trabalho tabulares.
Obtenha o URI do resultado do aperfeiçoamento de hiperparâmetros anterior
Se concluiu anteriormente uma execução do fluxo de trabalho do AutoML de ponta a ponta, use o resultado do ajuste de hiperparâmetros da execução anterior para poupar tempo e recursos de preparação. Encontre o resultado da otimização de hiperparâmetros anterior através da consola ou carregando-o programaticamente com a API. Google Cloud
Google Cloud consola
Para encontrar o URI do resultado da otimização de hiperparâmetros através da Google Cloud consola, siga estes passos:
Na Google Cloud consola, na secção Vertex AI, aceda à página Pipelines.
Selecione o separador Execuções.
Selecione a execução do pipeline que quer usar.
Selecione Expandir artefactos.
Clique no componente exit-handler-1.
Clique no componente stage_1_tuning_result_artifact_uri_empty.
Encontre o componente automl-tabular-cv-trainer-2.
Clique no artefacto associado tuning_result_output.
Selecione o separador Informações do nó.
Copie o URI para usar no passo Formar um modelo.
API: Python
O seguinte código de exemplo demonstra como carregar o resultado do ajuste de hiperparâmetros através da API. A variável job
refere-se à execução do pipeline de preparação do modelo anterior.
def get_task_detail(
task_details: List[Dict[str, Any]], task_name: str
) -> List[Dict[str, Any]]:
for task_detail in task_details:
if task_detail.task_name == task_name:
return task_detail
pipeline_task_details = job.gca_resource.job_detail.task_details
stage_1_tuner_task = get_task_detail(
pipeline_task_details, "automl-tabular-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)
Prepare um modelo
Google Cloud consola
Para preparar um modelo através da Google Cloud consola, siga estes passos:
Na Google Cloud consola, na secção Vertex AI, aceda à página Pipelines.
Selecione o separador Galeria de modelos.
No cartão AutoML para classificação / regressão tabular, clique em Criar execução.
Na página Detalhes da execução, configure da seguinte forma:
- Introduza um nome de execução do pipeline.
- Opcional: se quiser definir a conta de serviço do Vertex AI Pipelines ou a conta de serviço do trabalhador do Dataflow, abra as Opções avançadas. Saiba mais sobre as contas de serviço.
- Clique em Continuar.
Na página Configuração de tempo de execução, configure da seguinte forma:
-
Introduza um contentor do Cloud Storage ou uma pasta no contentor para usar como diretório de saída raiz. Este diretório vai ser usado para guardar ficheiros intermédios, como o conjunto de dados materializado e o modelo. Lembre-se de limpar o diretório após a conclusão do treino e de copiar o modelo e outros artefactos importantes para outro contentor do Cloud Storage. Em alternativa, defina um Tempo de vida (TTL) para o contentor do Cloud Storage.
Os contentores do seu projeto estão listados na secção do Cloud Storage da Google Cloud consola.
- Clique em Continuar.
-
Na página Método de preparação, configure da seguinte forma:
- Selecione o nome do conjunto de dados que quer usar para preparar o modelo.
- Selecione a coluna de destino. A coluna de destino é o valor que o modelo vai prever. Saiba mais acerca dos requisitos da coluna de destino.
- Introduza o nome a apresentar do novo modelo.
- Opcional: para escolher como dividir os dados entre os conjuntos de preparação, teste e validação, abra as Opções avançadas. Pode escolher entre as
seguintes opções de divisão de dados:
- Aleatório (predefinição): o Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados. Por predefinição, o Vertex AI seleciona 80% das linhas de dados para o conjunto de preparação, 10% para o conjunto de validação e 10% para o conjunto de teste. Defina a percentagem de linhas de dados que quer associar a cada um dos conjuntos de dados.
- Manual: o Vertex AI seleciona linhas de dados para cada um dos conjuntos de dados com base nos valores numa coluna de divisão de dados. Indique o nome da coluna de divisão de dados.
- Cronológica: o Vertex AI divide os dados com base na data/hora numa coluna de tempo. Indique o nome da coluna de tempo. Também pode definir a percentagem de linhas de dados que quer associar ao conjunto de preparação, ao conjunto de validação e ao conjunto de testes.
- Estratificado: o Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados, mas preserva a distribuição dos valores da coluna de destino. Indique o nome da coluna de destino. Também pode definir a percentagem de linhas de dados que quer associar ao conjunto de preparação, ao conjunto de validação e ao conjunto de teste.
- Opcional: pode executar o pipeline sem a pesquisa de arquitetura. Se escolher Ignorar pesquisa de arquitetura, é-lhe pedido que faculte um conjunto de hiperparâmetros de uma execução de pipeline anterior na página Opções de preparação.
- Clique em Continuar.
Na página Opções de preparação, configure da seguinte forma:
- Opcional: clique em Gerar estatísticas. A geração de estatísticas preenche os menus pendentes Transformação.
- Reveja a lista de colunas e exclua todas as colunas da preparação que não devem ser usadas para preparar o modelo.
- Reveja as transformações selecionadas para as funcionalidades incluídas, juntamente com a indicação de se os dados inválidos são permitidos, e faça as atualizações necessárias. Saiba mais sobre as transformações e os dados inválidos.
- Se optou por ignorar a pesquisa de arquitetura na página Método de preparação, indique o caminho para o resultado do ajuste de hiperparâmetros de uma execução da pipeline anterior.
- Opcional: se quiser especificar a coluna de ponderação, abra as Opções avançadas e faça a sua seleção. Saiba mais sobre as colunas de ponderação.
- Opcional: se quiser alterar o objetivo de otimização predefinido, abra as Opções avançadas e faça a sua seleção. Saiba mais acerca dos objetivos de otimização.
- Opcional: se optar por realizar a pesquisa de arquitetura na página Método de preparação, pode especificar o número de testes paralelos. Abra as Opções avançadas e introduza o seu valor.
- Opcional: pode fornecer valores fixos para um subconjunto dos hiperparâmetros.
O Vertex AI procura os valores ideais dos hiperparâmetros restantes não fixados.
Esta opção é uma boa escolha se tiver uma forte preferência pelo tipo de modelo. Pode escolher
entre redes neurais e árvores de decisão otimizadas para o tipo de modelo. Abra as Opções avançadas
e faculte uma substituição da especificação do estudo no formato JSON.
Por exemplo, se quiser definir o tipo de modelo como redes neurais (NN), introduza o seguinte:
[ { "parameter_id": "model_type", "categorical_value_spec": { "values": ["nn"] } } ]
- Clique em Continuar.
Na página Cálculo e preços, configure da seguinte forma:
- Introduza o número máximo de horas durante as quais quer que o modelo seja preparado. Saiba mais acerca dos preços.
- Opcional: na secção Definições de computação, pode configurar os tipos de máquinas e o número de máquinas para cada fase do fluxo de trabalho. Esta opção é uma boa escolha se tiver um conjunto de dados grande e quiser otimizar o hardware da máquina em conformidade.
Clique em Enviar.
API: Python
O seguinte exemplo de código demonstra como executar um pipeline de preparação de modelos:
job = aiplatform.PipelineJob(
...
template_path=template_path,
parameter_values=parameter_values,
...
)
job.run(service_account=SERVICE_ACCOUNT)
O parâmetro service_account
opcional em job.run()
permite-lhe definir a conta de serviço do Vertex AI Pipelines para uma conta à sua escolha.
O pipeline e os valores dos parâmetros são definidos pela seguinte função. Os dados de preparação podem ser um ficheiro CSV no Cloud Storage ou uma tabela no BigQuery.
template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)
Segue-se um subconjunto de parâmetros get_automl_tabular_pipeline_and_parameters
:
Nome do parâmetro | Tipo | Definição |
---|---|---|
data_source_csv_filenames |
String | Um URI para um CSV armazenado no Cloud Storage. |
data_source_bigquery_table_path |
String | Um URI para uma tabela do BigQuery. |
dataflow_service_account |
String | (Opcional) Conta de serviço personalizada para executar tarefas do Dataflow. A tarefa do Dataflow pode ser configurada para usar IPs privados e uma sub-rede da VPC específica. Este parâmetro funciona como uma substituição da conta de serviço do trabalhador do Dataflow predefinida. |
prediction_type |
String | Escolha classification para preparar um modelo de classificação ou regression para preparar um modelo de regressão. |
optimization_objective |
String | Se estiver a preparar um modelo de classificação binária, o objetivo predefinido é AUC ROC. Se estiver a preparar um modelo de regressão, o objetivo predefinido é o RMSE. Se quiser um objetivo de otimização diferente para o seu modelo, escolha uma das opções em Objetivos de otimização para modelos de classificação ou regressão. |
enable_probabilistic_inference |
Booleano | Se estiver a preparar um modelo de regressão e definir este valor como true , o Vertex AI modela a distribuição de probabilidade da inferência. A inferência probabilística pode melhorar a qualidade do modelo ao processar dados ruidosos e quantificar a incerteza. Se forem especificados quantiles , o Vertex AI também devolve os quantis da distribuição. |
quantiles |
List[float] | Quantis a usar para inferência probabilística. Um quantil indica a probabilidade de um alvo ser inferior a um determinado valor. Forneça uma lista de até cinco números únicos entre 0 e 1 , exclusivos. |
Opções de personalização do fluxo de trabalho
Pode personalizar o fluxo de trabalho do AutoML de ponta a ponta definindo valores de argumentos que são transmitidos durante a definição do pipeline. Pode personalizar o seu fluxo de trabalho das seguintes formas:
- Substitua o espaço de pesquisa
- Configure o hardware
- Destile o modelo
- Ignorar pesquisa de arquitetura
Substitua o espaço de pesquisa
O parâmetro get_automl_tabular_pipeline_and_parameters
seguinte permite-lhe fornecer valores fixos para um subconjunto dos hiperparâmetros.
O Vertex AI procura os valores ideais dos hiperparâmetros restantes não fixados. Use este parâmetro se quiser escolher entre redes neurais e árvores otimizadas para o tipo de modelo.
Nome do parâmetro | Tipo | Definição |
---|---|---|
study_spec_parameters_override |
List[Dict[String, Any]] | (Opcional) Subconjunto personalizado de hiperparâmetros. Este parâmetro configura o componente automl-tabular-stage-1-tuner do pipeline. |
O código seguinte demonstra como definir o tipo de modelo como redes neurais (NN):
study_spec_parameters_override = [
{
"parameter_id": "model_type",
"categorical_value_spec": {
"values": ["nn"] # The default value is ["nn", "boosted_trees"], this reduces the search space
}
}
]
Configure o hardware
Os seguintes parâmetros get_automl_tabular_pipeline_and_parameters
permitem-lhe configurar os tipos de máquinas e o número de máquinas para a preparação.
Esta opção é uma boa escolha se tiver um conjunto de dados grande e quiser otimizar o hardware da máquina em conformidade.
Nome do parâmetro | Tipo | Definição |
---|---|---|
stage_1_tuner_worker_pool_specs_override |
Dict[String, Any] | (Opcional) Configuração personalizada dos tipos de máquinas e do número de máquinas para a preparação. Este parâmetro configura o componente automl-tabular-stage-1-tuner do pipeline. |
cv_trainer_worker_pool_specs_override |
Dict[String, Any] | (Opcional) Configuração personalizada dos tipos de máquinas e do número de máquinas para a preparação. Este parâmetro configura o componente automl-tabular-stage-1-tuner do pipeline. |
O código seguinte demonstra como definir o tipo de máquina n1-standard-8
para o nó principal do TensorFlow e o tipo de máquina n1-standard-4
para o nó de avaliação do TensorFlow:
worker_pool_specs_override = [
{"machine_spec": {"machine_type": "n1-standard-8"}}, # override for TF chief node
{}, # override for TF worker node, since it's not used, leave it empty
{}, # override for TF ps node, since it's not used, leave it empty
{
"machine_spec": {
"machine_type": "n1-standard-4" # override for TF evaluator node
}
}
]
Destile o modelo
O parâmetro get_automl_tabular_pipeline_and_parameters
seguinte permite-lhe
criar uma versão mais pequena do modelo de conjunto. Um modelo mais pequeno reduz a latência e o custo da inferência.
Nome do parâmetro | Tipo | Definição |
---|---|---|
run_distillation |
Booleano | Se TRUE , cria uma versão mais pequena do modelo de conjunto. |
Ignorar pesquisa de arquitetura
O parâmetro get_automl_tabular_pipeline_and_parameters
permite-lhe executar o pipeline sem a pesquisa de arquitetura e fornecer um conjunto de hiperparâmetros de uma execução de pipeline anterior.
Nome do parâmetro | Tipo | Definição |
---|---|---|
stage_1_tuning_result_artifact_uri |
String | (Opcional) URI do resultado do ajuste de hiperparâmetros de uma execução de pipeline anterior. |
Objetivos de otimização para modelos de classificação ou regressão
Quando prepara um modelo, o Vertex AI seleciona um objetivo de otimização predefinido com base no tipo de modelo e no tipo de dados usado para a coluna de destino.
Os modelos de classificação são mais adequados para:Objetivo de otimização | Valor da API | Use este objetivo se quiser… |
---|---|---|
AUC ROC | maximize-au-roc |
Maximizar a área abaixo da curva de caraterística operacional do recetor (ROC). Distingue entre classes. Valor predefinido para a classificação binária. |
Perda de registos | minimize-log-loss |
Manter as probabilidades de inferências o mais precisas possível. Objetivo suportado apenas para a classificação multiclasse. |
AUC PR | maximize-au-prc |
Maximize a área abaixo da curva de precisão-recolha. Otimiza os resultados para inferências para a classe menos comum. |
Precisão na capacidade de recordar | maximize-precision-at-recall |
Otimize a precisão a um valor de recall específico. |
Recuperação com precisão | maximize-recall-at-precision |
Otimize a capacidade de memorização a um valor de precisão específico. |
Objetivo de otimização | Valor da API | Use este objetivo se quiser… |
---|---|---|
RMSE | minimize-rmse |
Minimizar o erro quadrático médio (RMSE). Captura valores mais extremos com precisão. Valor predefinido. |
MAE | minimize-mae |
Minimizar o erro absoluto médio (MAE). Considera os valores extremos como valores atípicos com menor impacto no modelo. |
RMSLE | minimize-rmsle |
Minimizar o erro de registo quadrático médio (RMSLE). Penaliza o erro no tamanho relativo em vez do valor absoluto. Útil quando os valores previstos e reais podem ser bastante elevados. |
O que se segue?
- Saiba mais sobre as inferências online para modelos de classificação e regressão.
- Saiba mais sobre as inferências em lote para modelos de classificação e regressão.
- Saiba mais acerca dos preços da preparação de modelos.