Prepare um modelo com o fluxo de trabalho tabular para previsões

Esta página mostra como preparar um modelo de previsão a partir de um conjunto de dados tabular com o fluxo de trabalho tabular para previsões.

Para saber mais sobre as contas de serviço que este fluxo de trabalho usa, consulte o artigo Contas de serviço para fluxos de trabalho tabulares.

Se receber um erro de quota ao executar o fluxo de trabalho tabular para a previsão, 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.

O fluxo de trabalho tabular para previsões não suporta a exportação de modelos.

APIs Workflow

Este fluxo de trabalho usa as seguintes APIs:

  • Vertex AI
  • Dataflow
  • Compute Engine
  • Cloud Storage

Obtenha o URI do resultado do aperfeiçoamento de hiperparâmetros anterior

Se concluiu anteriormente um fluxo de trabalho tabular para a execução de previsões, pode usar 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-forecasting-stage-1-tuner.

  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 otimização da previsão

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-forecasting-stage-1-tuner"
)
stage_1_tuning_result_artifact_uri = (
    stage_1_tuner_task.outputs["tuning_result_output"].artifacts[0].uri
)

Prepare um modelo

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 Vertex AI suporta os seguintes métodos para preparar o seu modelo:

  • Codificador denso de intervalos temporais (TiDE). Para usar este método de preparação do modelo, defina a sua conduta e os valores dos parâmetros através da seguinte função:

    template_path, parameter_values = automl_forecasting_utils.get_time_series_dense_encoder_forecasting_pipeline_and_parameters(...)
    
  • Transformador de fusão temporal (TFT). Para usar este método de preparação do modelo, defina a sua conduta e os valores dos parâmetros através da seguinte função:

    template_path, parameter_values = automl_forecasting_utils.get_temporal_fusion_transformer_forecasting_pipeline_and_parameters(...)
    
  • AutoML (L2L). Para usar este método de preparação do modelo, defina a sua conduta e os valores dos parâmetros através da seguinte função:

    template_path, parameter_values = automl_forecasting_utils.get_learn_to_learn_forecasting_pipeline_and_parameters(...)
    
  • Seq2Seq+. Para usar este método de preparação de modelos, defina o pipeline e os valores dos parâmetros através da seguinte função:

    template_path, parameter_values = automl_forecasting_utils.get_sequence_to_sequence_forecasting_pipeline_and_parameters(...)
    

Para saber mais, consulte o artigo Métodos de preparação de modelos.

Os dados de preparação podem ser um ficheiro CSV no Cloud Storage ou uma tabela no BigQuery.

Segue-se um subconjunto de parâmetros de preparação do modelo:

Nome do parâmetro Tipo Definição
optimization_objective String Por predefinição, a Vertex AI minimiza a raiz do erro quadrático médio (RMSE). Se quiser um objetivo de otimização diferente para o seu modelo de previsão, escolha uma das opções em Objetivos de otimização para modelos de previsão. Se optar por minimizar a perda de quantil, também tem de especificar um valor para quantiles.
enable_probabilistic_inference Booleano Se estiver definido como true, o Vertex AI modela a distribuição de probabilidade da previsão. 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. A inferência probabilística só é compatível com os métodos de preparação Time series Dense Encoder (TiDE) e AutoML (L2L). A inferência probabilística é incompatível com o objetivo de otimização minimize-quantile-loss.
quantiles List[float] Quantis a usar para o objetivo de otimização minimize-quantile-loss e a inferência probabilística. Forneça uma lista de até cinco números únicos entre 0 e 1, exclusivos.
time_column String A coluna de tempo. Para saber mais, consulte os requisitos de estrutura de dados.
time_series_identifier_columns List[str] As colunas de identificador de séries cronológicas. Para saber mais, consulte os requisitos de estrutura de dados.
weight_column String (Opcional) A coluna de peso. Para saber mais, consulte o artigo Adicione ponderações aos dados de preparação.
time_series_attribute_columns List[str] (Opcional) O nome ou os nomes das colunas que são atributos de séries cronológicas. Para saber mais, consulte o artigo Tipo e disponibilidade de funcionalidades na previsão.
available_at_forecast_columns List[str] (Opcional) O nome ou os nomes das colunas de covariáveis cujo valor é conhecido no momento da previsão. Para saber mais, consulte o artigo Tipo e disponibilidade de funcionalidades na previsão.
unavailable_at_forecast_columns List[str] (Opcional) O nome ou os nomes das colunas de covariáveis cujo valor é desconhecido no momento da previsão. Para saber mais, consulte o artigo Tipo e disponibilidade de funcionalidades na previsão.
forecast_horizon Número inteiro (Opcional) O horizonte de previsão determina até que ponto o modelo prevê o valor-alvo para cada linha de dados de inferência. Para saber mais, consulte o artigo Horizonte de previsão, janela de contexto e janela de previsão.
context_window Número inteiro (Opcional) O período de análise define o intervalo de tempo passado que o modelo analisa durante a preparação (e para previsões). Por outras palavras, para cada ponto de dados de preparação, o período de contexto determina o intervalo de tempo em que o modelo procura padrões preditivos. Para saber mais, consulte o artigo Horizonte de previsão, janela de contexto e janela de previsão.
window_max_count Número inteiro (Opcional) O Vertex AI gera janelas de previsão a partir dos dados de entrada através de uma estratégia de janela contínua. A estratégia predefinida é Count. O valor predefinido para o número máximo de janelas é 100,000,000. Defina este parâmetro para fornecer um valor personalizado para o número máximo de janelas. Para saber mais, consulte o artigo Estratégias de janela dinâmica.
window_stride_length Número inteiro (Opcional) O Vertex AI gera janelas de previsão a partir dos dados de entrada através de uma estratégia de janela contínua. Para selecionar a estratégia Passo, defina este parâmetro com o valor do comprimento do passo. Para saber mais, consulte o artigo Estratégias de janela dinâmica.
window_predefined_column String (Opcional) O Vertex AI gera janelas de previsão a partir dos dados de entrada através de uma estratégia de janela contínua. Para selecionar a estratégia de coluna, defina este parâmetro para o nome da coluna com valores True ou False. Para saber mais, consulte o artigo Estratégias de janela dinâmica.
holiday_regions List[str] (Opcional) Pode selecionar uma ou mais regiões geográficas para ativar a modelagem do efeito de feriados. Durante a preparação, o Vertex AI cria funcionalidades categóricas de feriados no modelo com base na data de time_column e nas regiões geográficas especificadas. Por predefinição, a modelagem de efeitos de feriados está desativada. Para saber mais, consulte o artigo Regiões de férias.
predefined_split_key String (Opcional) Por predefinição, a Vertex AI usa um algoritmo de divisão cronológica para separar os dados de previsão nas três divisões de dados. Se quiser controlar que linhas de dados de preparação são usadas para que divisão, indique o nome da coluna que contém os valores de divisão de dados (TRAIN, VALIDATION, TEST). Para saber mais, consulte o artigo Divisões de dados para previsões.
training_fraction Flutuante (Opcional) Por predefinição, a Vertex AI usa um algoritmo de divisão cronológica para separar os dados de previsão nas três divisões de dados. 80% dos dados são atribuídos ao conjunto de preparação, 10% são atribuídos à divisão de validação e 10% são atribuídos à divisão de teste. Defina este parâmetro se quiser personalizar a fração dos dados atribuídos ao conjunto de preparação. Para saber mais, consulte o artigo Divisões de dados para previsões.
validation_fraction Flutuante (Opcional) Por predefinição, a Vertex AI usa um algoritmo de divisão cronológica para separar os dados de previsão nas três divisões de dados. 80% dos dados são atribuídos ao conjunto de preparação, 10% são atribuídos à divisão de validação e 10% são atribuídos à divisão de teste. Defina este parâmetro se quiser personalizar a fração dos dados atribuídos ao conjunto de validação. Para saber mais, consulte o artigo Divisões de dados para previsões.
test_fraction Flutuante (Opcional) Por predefinição, a Vertex AI usa um algoritmo de divisão cronológica para separar os dados de previsão nas três divisões de dados. 80% dos dados são atribuídos ao conjunto de preparação, 10% são atribuídos à divisão de validação e 10% são atribuídos à divisão de teste. Defina este parâmetro se quiser personalizar a fração dos dados atribuídos ao conjunto de testes. Para saber mais, consulte o artigo Divisões de dados para previsões.
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. Pode configurar a tarefa do Dataflow 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.
run_evaluation Booleano Se estiver definido como True, o Vertex AI avalia o modelo de conjunto na divisão de teste.
evaluated_examples_bigquery_path String O caminho do conjunto de dados do BigQuery usado durante a avaliação do modelo. O conjunto de dados serve como destino para os exemplos previstos. Tem de definir o valor do parâmetro se run_evaluation estiver definido como True e tem de ter o seguinte formato: bq://[PROJECT].[DATASET].

Transformações

Pode fornecer um mapeamento de dicionário de resoluções automáticas ou de tipo para colunas de caraterísticas. Os tipos suportados são: auto, numeric, categorical, text e timestamp.

Nome do parâmetro Tipo Definição
transformations Dict[str, List[str]] Mapeamento de dicionário de resoluções automáticas ou de tipo

O código seguinte fornece uma função auxiliar para preencher o parâmetro transformations. Também demonstra como pode usar esta função para aplicar transformações automáticas a um conjunto de colunas definidas por uma variável features.

def generate_transformation(
      auto_column_names: Optional[List[str]]=None,
      numeric_column_names: Optional[List[str]]=None,
      categorical_column_names: Optional[List[str]]=None,
      text_column_names: Optional[List[str]]=None,
      timestamp_column_names: Optional[List[str]]=None,
    ) -> List[Dict[str, Any]]:
    if auto_column_names is None:
      auto_column_names = []
    if numeric_column_names is None:
      numeric_column_names = []
    if categorical_column_names is None:
      categorical_column_names = []
    if text_column_names is None:
      text_column_names = []
    if timestamp_column_names is None:
      timestamp_column_names = []
    return {
        "auto": auto_column_names,
        "numeric": numeric_column_names,
        "categorical": categorical_column_names,
        "text": text_column_names,
        "timestamp": timestamp_column_names,
    }

transformations = generate_transformation(auto_column_names=features)

Para saber mais acerca das transformações, consulte o artigo Tipos de dados e transformações.

Opções de personalização do fluxo de trabalho

Pode personalizar o fluxo de trabalho tabular para previsões definindo valores de argumentos que são transmitidos durante a definição do pipeline. Pode personalizar o seu fluxo de trabalho das seguintes formas:

  • Configure o hardware
  • Ignorar pesquisa de arquitetura

Configure o hardware

O seguinte parâmetro de preparação do modelo permite-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-forecasting-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
    }
  }
]

Ignorar pesquisa de arquitetura

O seguinte parâmetro de preparação do modelo permite-lhe executar o pipeline sem a pesquisa de arquitetura e, em alternativa, 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.

O que se segue?