Nesta página, mostramos como treinar um modelo de classificação ou regressão de um conjunto de dados tabular com o fluxo de trabalho tabular para o AutoML de End-to-End.
Antes de começar
Antes de treinar um modelo, é preciso concluir as seguintes etapas:
- Preparar seus dados de treinamento
- Crie um conjunto de dados da Vertex AI.
Ative as seguintes APIs: Vertex AI, Dataflow, Compute Engine e Cloud Storage.
Verifique se as contas de serviço do projeto têm os papéis necessários atribuídos a elas. Para consultar as contas de serviço e os papéis associados, acesse a página do IAM e marque a caixa de seleção "Incluir concessões de papel fornecidas pelo Google".
Se você receber um erro relacionado a cotas ao executar o fluxo de trabalho tabular para o End-to-End AutoML, talvez precise solicitar uma cota maior. Para saber mais, consulte Gerenciar cotas para fluxos de trabalho tabulares.
Acessar o URI do resultado do ajuste de hiperparâmetros anterior
Se você já concluiu uma execução de fluxo de trabalho do AutoML End-to-End, é possível usar o resultado do ajuste de hiperparâmetros de uma execução anterior para economizar tempo e recursos de treinamento. Para encontrar o resultado anterior do ajuste de hiperparâmetro, use o Console do Google Cloud ou carregue-o de maneira programática com a API.
Console do Google Cloud
Para encontrar o URI do resultado de ajuste de hiperparâmetros usando o console do Google Cloud, execute as seguintes etapas:
No console do Google Cloud, na seção da Vertex AI, acesse a página Conjuntos de dados.
Selecione a guia Execuções.
Selecione a execução do pipeline que você quer usar.
Selecione Expandir artefatos.
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 artefato associado tuning_result_output.
Selecione a guia Informações do nó.
Copie o URI para uso na etapa Treinar um modelo.
API: Python
No exemplo de código a seguir, demonstramos como carregar o resultado do ajuste de hiperparâmetros usando a API. A variável job
refere-se à execução anterior do pipeline de treinamento de modelo.
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
)
Treinar um modelo
Console do Google Cloud
Para treinar um modelo usando o console do Google Cloud, execute as seguintes etapas:
No console do Google Cloud, na seção da Vertex AI, acesse a página Conjuntos de dados.
Selecione a guia Galeria de modelos.
No card AutoML para classificação / regressão tabular, clique em Criar execução.
Na página Detalhes do modelo, configure o seguinte:
- Insira 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 worker do Dataflow, abra o link Opções avançadas. Saiba mais sobre contas de serviço
- Clique em Continuar.
Na página Configuração do ambiente de execução, faça as configurações a seguir:
-
Insira um bucket do Cloud Storage ou uma pasta dentro dele para usar como diretório de saída raiz. Esse diretório será usado para salvar arquivos intermediários, como o conjunto de dados materializados e o modelo. Lembre-se de limpar o diretório após a conclusão do treinamento e da cópia do modelo e de outros artefatos importantes para outro bucket do Cloud Storage. Como alternativa, defina um Time to Live (TTL) para o bucket do Cloud Storage.
Os buckets do seu projeto estão listados na seção "Cloud Storage" do Console do Google Cloud.
- Clique em Continuar.
-
Na página Método de treinamento, configure da seguinte maneira:
- Selecione o nome do conjunto de dados que você quer usar para treinar o modelo.
- Selecione a coluna de destino. A coluna de objetivo é o valor que o modelo prevê. Saiba mais sobre os requisitos da coluna de destino.
- Digite o nome de exibição do novo modelo.
- Opcional: para escolher como dividir os dados entre conjuntos de treinamento, teste e validação, abra as Opções avançadas. Você pode escolher entre as
seguintes opções de divisão de dados:
- Aleatória (padrão): a Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados. Por padrão, a Vertex AI seleciona aleatoriamente 80% das linhas de dados para o conjunto de treinamento, 10% para o conjunto de validação e 10% para o conjunto de teste. Defina a porcentagem de linhas de dados que você quer associar a cada um dos conjuntos de dados.
- Manual: a Vertex AI seleciona linhas de dados para cada um dos conjuntos de dados com base nos valores em uma coluna de divisão de dados. Forneça o nome da coluna de divisão de dados.
- Cronológico: a Vertex AI divide os dados com base no carimbo de data/hora em uma coluna de tempo. Forneça o nome da coluna de hora. Também é possível definir a porcentagem de linhas de dados que você quer associar ao conjunto de treinamento, de validação e de teste.
- Estratificado: a Vertex AI seleciona aleatoriamente as linhas associadas a cada um dos conjuntos de dados, mas preserva a distribuição de valores de colunas de destino. Forneça o nome da coluna de destino. Também é possível definir a porcentagem de linhas de dados que você quer associar ao conjunto de treinamento, validação e teste.
- Opcional: é possível executar o pipeline sem a pesquisa da arquitetura. Se você escolher Ignorar arquitetura de pesquisa, precisará fornecer um conjunto de hiperparâmetros de uma execução anterior do pipeline na página Opções de treinamento.
- Clique em Continuar.
Na página Opções de treinamento, configure da seguinte maneira:
- Opcional: clique em Gerar estatísticas. A geração de estatísticas preenche os menus suspensos Transformação.
- Analise a lista de colunas e exclua as colunas do treinamento que não podem ser usadas para treinar o modelo.
- Analise as transformações selecionadas para os recursos incluídos, confirme se os dados inválidos são permitidos e faça as atualizações necessárias. Saiba mais sobre transformações e dados inválidos.
- Se você optou por pular a pesquisa de arquitetura na página Método de treinamento, forneça o caminho para o resultado de ajuste de hiperparâmetros de uma execução de pipeline anterior.
- Opcional: se quiser especificar a coluna de peso, abra as Opções avançadas e faça sua seleção. Saiba mais sobre colunas de peso.
- Opcional: se você quiser alterar o objetivo de otimização por padrão, abra as Opções avançadas e faça sua seleção. Saiba mais sobre os objetivos de otimização.
- Opcional: se você quiser pesquisar a arquitetura na página Método de treinamento, especifique o número de testes paralelos. Abra as Opções avançadas e insira o valor.
- Opcional:é possível fornecer valores fixos para um subconjunto dos hiperparâmetros.
A Vertex AI pesquisa os valores ideais dos hiperparâmetros não fixos restantes.
Essa é uma boa opção se você tem uma preferência forte para o tipo de modelo. É possível escolher entre redes neurais e
árvores aprimoradas para seu tipo de modelo. Abra as Opções avançadas
e forneça uma substituição de especificação do estudo no formato JSON.
Por exemplo, se você quiser definir o tipo de modelo como Redes neurais (NN, na sigla em inglês), digite o seguinte:
[ { "parameter_id": "model_type", "categorical_value_spec": { "values": ["nn"] } } ]
- Clique em Continuar.
Na página Computação e preços, configure da seguinte maneira:
- Insira o número máximo de horas que você quer que o modelo treine. Saiba mais sobre preços
- Opcional: na seção Configurações do Compute, defina os tipos de máquina e o número de máquinas para cada estágio do fluxo de trabalho. Essa é uma boa opção para quem tem um conjunto de dados grande e quer otimizar o hardware da máquina adequadamente.
Clique em Enviar.
API: Python
Na amostra de código a seguir, demonstramos como executar um pipeline de treinamento de modelo:
job = aiplatform.PipelineJob(
...
template_path=template_path,
parameter_values=parameter_values,
...
)
job.run(service_account=SERVICE_ACCOUNT)
O parâmetro opcional service_account
em job.run()
permite definir a
conta de serviço dos Pipelines da Vertex AI para uma conta de sua escolha.
O pipeline e os valores de parâmetro são definidos pela seguinte função: Os dados de treinamento podem ser um arquivo CSV no Cloud Storage ou uma tabela no BigQuery.
template_path, parameter_values = automl_tabular_utils.get_automl_tabular_pipeline_and_parameters(...)
Confira a seguir 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 de uma tabela do BigQuery. |
dataflow_service_account |
String | (Opcional) Conta de serviço personalizada para executar jobs do Dataflow. O job do Dataflow pode ser configurado para usar IPs privados e uma sub-rede VPC específica. Esse parâmetro funciona como uma substituição para a conta de serviço do worker padrão do Dataflow. |
prediction_type |
String | Escolha classification para treinar um modelo de classificação ou regression para treinar um modelo de regressão. |
optimization_objective |
String | Se você estiver treinando um modelo de classificação binária, o objetivo padrão é o AUC ROC. Se você estiver treinando um modelo de regressão, o objetivo padrão é o RMSE. Se você quiser um objetivo de otimização diferente para o modelo, escolha uma das opções em Objetivos de otimização para modelos de classificação ou regressão. |
enable_probabilistic_inference |
Booleano | Se você estiver treinando um modelo de regressão e definir esse valor como true , a Vertex AI modela a distribuição de probabilidade da previsão. A inferência probabilística pode melhorar a qualidade do modelo ao lidar com dados com ruído e quantificar a incerteza. Se quantiles forem especificados, a Vertex AI também vai retornar os quantis da distribuição. |
quantiles |
Lista[float] | Quantis a serem usados na inferência probabilística. O quantil indica a probabilidade de o valor desejado ser menor que um determinado valor. Forneça uma lista de até cinco números exclusivos entre 0 e 1 . |
Opções de personalização do fluxo de trabalho
É possível personalizar o fluxo de do End to End AutoML definindo valores de argumentos que são transmitidos durante a definição do pipeline. É possível personalizar seu fluxo de trabalho das seguintes maneiras:
- Substituir espaço de pesquisa
- Configurar hardware
- destilar o modelo
- Pular pesquisa de arquitetura
Substituir espaço de pesquisa
O parâmetro get_automl_tabular_pipeline_and_parameters
a seguir permite
fornecer valores fixos para um subconjunto dos hiperparâmetros.
A Vertex AI pesquisa os valores ideais dos hiperparâmetros não fixos
restantes. Use essa opção para escolher
entre redes neurais e árvores otimizadas para seu tipo de modelo.
Nome do parâmetro | Tipo | Definição |
---|---|---|
study_spec_parameters_override |
List[Dict[String, Any]] | (Opcional) Subconjunto personalizado de hiperparâmetros. Esse parâmetro configura o componente automl-tabular-stage-1-tuner do pipeline. |
O código a seguir demonstra como definir o tipo de modelo como Redes Neurais (NN, na sigla em inglês):
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
}
}
]
Configurar hardware
Os parâmetros get_automl_tabular_pipeline_and_parameters
a seguir permitem
configurar os tipos de máquina e o número de máquinas para treinamento.
Essa é uma boa opção para quem tem um conjunto de dados grande e quer otimizar
o hardware da máquina adequadamente.
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áquina e do número de máquinas para o treinamento. Esse 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áquina e do número de máquinas para o treinamento. Esse parâmetro configura o componente automl-tabular-stage-1-tuner do pipeline. |
O código a seguir 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ó do avaliador 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
}
}
]
Destilar o modelo
O parâmetro get_automl_tabular_pipeline_and_parameters
a seguir permite
criar uma versão menor do modelo de conjunto. Um modelo menor reduz
a latência e o custo da previsão.
Nome do parâmetro | Tipo | Definição |
---|---|---|
run_distillation |
Booleano | Se TRUE , cria uma versão menor do modelo de ensemble. |
Pular pesquisa de arquitetura
Com o parâmetro get_automl_tabular_pipeline_and_parameters
a seguir,
é possível executar o pipeline sem a pesquisa de arquitetura e fornecer um conjunto de
hiperparâmetros de uma execução de pipeline anterior
como alternativa.
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
Ao treinar um modelo, a Vertex AI seleciona um objetivo de otimização padrão com base no tipo de modelo e no tipo de dados usado na coluna de destino.
Os modelos de classificação são ideais para:Objetivo da otimização | Valor da API | Use este objetivo se você quiser... |
---|---|---|
AUC ROC | maximize-au-roc |
Área sob a curva de característica de operação do receptor (ROC, na sigla em inglês). Distinguir entre classes. Valor padrão para classificação binária. |
Log Perda | minimize-log-loss |
Manter o máximo possível de precisão nas probabilidades de predição. É o único objetivo compatível com a classificação multiclasse. |
AUC PR | maximize-au-prc |
Maximizar a área sob curva de precisão-recall. Otimizar resultados para predições da classe menos comum. |
Precisão em recall | maximize-precision-at-recall |
Otimize a precisão com um valor de recall específico. |
Recall na precisão | maximize-recall-at-precision |
Otimizar recall em um valor de precisão específico. |
Objetivo da otimização | Valor da API | Use este objetivo se você quiser... |
---|---|---|
REMQ | minimize-rmse |
Minimizar a raiz do erro médio quadrado (REMQ) Captura mais valores extremos com precisão. Valor padrão. |
MAE | minimize-mae |
Minimizar erro médio absoluto (MAE, na sigla em inglês). Ver os valores extremos como outliers, o que impacta menos o modelo. |
RMSLE | minimize-rmsle |
Minimizar o erro logarítmico quadrado médio (RMSLE, na sigla em inglês). Penaliza o erro conforme o tamanho relativo e não o valor absoluto. É útil quando valores previstos e reais podem ser muito grandes. |
A seguir
- Saiba mais sobre previsões on-line para modelos de classificação e regressão.
- Saiba mais sobre previsões em lote para modelos de classificação e regressão.
- Saiba mais sobre os preços do treinamento de modelos.