Prepare um modelo com o AutoML ponto a ponto

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:

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:

  1. Na Google Cloud consola, na secção Vertex AI, aceda à página Pipelines.

    Aceda à página Pipelines

  2. Selecione o separador Execuções.

  3. Selecione a execução do pipeline que quer usar.

  4. Selecione Expandir artefactos.

  5. Clique no componente exit-handler-1.

  6. Clique no componente stage_1_tuning_result_artifact_uri_empty.

  7. Encontre o componente automl-tabular-cv-trainer-2.

  8. Clique no artefacto associado tuning_result_output.

  9. Selecione o separador Informações do nó.

  10. Copie o URI para usar no passo Formar um modelo.

Resultado da pesquisa de arquitetura

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:

  1. Na Google Cloud consola, na secção Vertex AI, aceda à página Pipelines.

    Aceda à página Pipelines

  2. Selecione o separador Galeria de modelos.

  3. No cartão AutoML para classificação / regressão tabular, clique em Criar execução.

  4. Na página Detalhes da execução, configure da seguinte forma:

    1. Introduza um nome de execução do pipeline.
    2. 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.
    3. Clique em Continuar.

  5. Na página Configuração de tempo de execução, configure da seguinte forma:

    1. 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.

      Aceda à página de contentores

    2. Clique em Continuar.

  6. Na página Método de preparação, configure da seguinte forma:

    1. Selecione o nome do conjunto de dados que quer usar para preparar o modelo.
    2. 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.
    3. Introduza o nome a apresentar do novo modelo.
    4. 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.
      Saiba mais acerca das divisões de dados.
    5. 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.
    6. Clique em Continuar.

  7. Na página Opções de preparação, configure da seguinte forma:

    1. Opcional: clique em Gerar estatísticas. A geração de estatísticas preenche os menus pendentes Transformação.
    2. Reveja a lista de colunas e exclua todas as colunas da preparação que não devem ser usadas para preparar o modelo.
    3. 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.
    4. 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.
    5. 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.
    6. 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.
    7. 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.
    8. 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"]
          }
        }
      ]
      

    9. Clique em Continuar.

  8. Na página Cálculo e preços, configure da seguinte forma:

    1. Introduza o número máximo de horas durante as quais quer que o modelo seja preparado. Saiba mais acerca dos preços.
    2. 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.

  9. 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_parameterspermitem-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.
Os modelos de regressão são mais adequados para:
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?