Fazer previsão de série temporal

Nesta página, descrevemos como fazer previsões de séries temporais diretamente no seu banco de dados do AlloyDB. Você pode usar vários modelos de previsão, incluindo os modelos TimesFM, para ajudar a lidar com a incerteza e tomar decisões estratégicas fundamentadas. Para mais detalhes sobre o modelo, consulte o blog de pesquisa do TimesFM (em inglês).

A função ai.forecast do AlloyDB foi projetada para funcionar com qualquer modelo registrado com o tipo ts_forecasting, oferecendo a flexibilidade de usar o melhor modelo para suas necessidades. Este documento oferece um guia detalhado sobre o uso do TimesFM, mas você também pode aplicar os princípios a outros modelos.

Antes de começar

Antes de fazer previsões de série temporal, é necessário ativar o recurso de previsão no AlloyDB e registrar um modelo.

Registrar um modelo de previsão

É possível usar vários modelos de previsão com o AlloyDB.

Nesta seção, fornecemos instruções para registrar o modelo TimesFM. Para instruções sobre como registrar outros modelos, consulte Registrar um endpoint de modelo com o gerenciamento de endpoints de modelo.

Usar o modelo TimesFM

Os modelos TimesFM estão disponíveis em duas versões:

  • TimesFM 1.0: a versão inicial do modelo TimesFM.
  • TimesFM 2.0: essa versão é recomendada porque oferece até 25% mais precisão em comparação com a versão 1.0.

Os dois modelos estão disponíveis no Model Garden para implantação rápida.

Para usar os modelos TimesFM, primeiro implante o modelo em um endpoint da Vertex AI e registre-o no AlloyDB.

Implantar o modelo TimesFM em um endpoint da Vertex AI

É possível implantar o modelo com um clique no console do Google Cloud ou manualmente usando um notebook do Colaboratory.

Implantação com um clique

Para implantar o modelo TimesFM usando uma implantação com um clique, siga estas etapas:

  1. No console Google Cloud , acesse a página Model Garden:

    Acessar o Model Garden
  2. No campo Pesquisar, insira TimesFM.
  3. Nos resultados da pesquisa, clique em TimesFM.
  4. Na página TimesFM, siga estas etapas:

  5. Clique em Implantar modelo.
  6. Selecione Vertex AI.
  7. No painel Implantar na Vertex AI, configure e implante o modelo:

    1. Para usar a versão mais recente do modelo TimesFM, no menu suspenso ID do recurso, selecione google/timesfm-2.0.
    2. Para facilitar a identificação da implantação mais tarde, insira o seguinte:
      1. Em Nome do modelo, um MODEL_NAME exclusivo.
      2. Em Nome do endpoint, um ENDPOINT_NAME exclusivo.
    3. Para expandir as opções de configuração, em Configurações de implantação, clique em Avançado.
      1. Para garantir a menor latência possível, no menu suspenso Região, selecione a mesma região em que sua instância do AlloyDB está localizada.
      2. Para ter o melhor desempenho, no menu suspenso Especificação da máquina, selecione uma especificação adequada. Uma GPU ou TPU pode oferecer latência menor.
    4. No menu suspenso Acesso ao endpoint de Políticas de disponibilidade, selecione Público (endpoint compartilhado).

      Isso cria um endpoint no domínio aiplatform que funciona com o AlloyDB.

    5. Para implantar o modelo em um endpoint gerenciado, clique em Implantar. A implantação pode levar de 10 a 15 minutos.
  8. Depois que o modelo TimesFM for implantado, um link semelhante a google_timesfm-VERSION-one-click-deploy vai aparecer em Endpoints.
  9. Para acessar o URL da solicitação do modelo, em Endpoints, clique no link de implantação.
  10. Na página de detalhes do endpoint, clique em Solicitação de amostra.
  11. No painel Exemplo de solicitação, encontre e anote o URL de solicitação do modelo. Você usa essas informações em Registrar o modelo TimesFM no AlloyDB. Por exemplo, https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict.

    Verifique se o URL da solicitação tem aiplatform.googleapis.com.

Implantação manual

Para implantar manualmente o modelo TimesFM usando um notebook do Colaboratory, siga estas etapas:

  1. Acesse a página Model Garden no console do Google Cloud :

    Acessar o Model Garden
  2. No campo Pesquisar, insira TimesFM.
  3. Nos resultados da pesquisa, clique em TimesFM para abrir o card do modelo.
  4. Na página TimesFM, clique em CO Open Notebook.
  5. Na janela Abrir notebook, clique no link Colab Enterprise do TimesFM 2.0.
  6. Na página Colab Enterprise, siga estas etapas:

    1. Para estabelecer uma conexão com o ambiente de execução, clique em Conectar.
    2. Opcional: conclua as etapas a seguir, se necessário:

      • Na seção Pré-requisitos de Configurar projeto do Google Cloud, defina BUCKET_URI e REGION. Por exemplo, defina BUCKET_URI como gs://your-unique-bucket-name e REGION como us-central1.

      • No menu suspenso accelerator_type de Implantar o TimesFM em um endpoint da Vertex AI, selecione um tipo de acelerador diferente, se necessário.
      • Na Etapa 3: definir o horizonte máximo de previsão, preencha os campos horizon e max_context. Por exemplo, defina horizon como 128 e max_context como 512.
    3. Desmarque a caixa de seleção use_dedicated_endpoint.
    4. Execute todas as células no notebook.

    A saída do notebook fornece os detalhes do endpoint no seguinte formato: projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID.

  7. Para construir o model_request_url da chamada de criação do modelo SQL, substitua os identificadores de projeto e endpoint pelos detalhes do endpoint da etapa anterior da seguinte maneira:

    CALL google_ml.create_model(
     model_id => 'timesfm_v2',
     model_qualified_name => 'timesfm_v2',
     model_type => 'ts_forecasting',
     model_provider => 'google',
     model_request_url => 'https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict');

    Você precisa desse model_request_url na chamada the google_ml.create_model ao registrar o modelo TimesFM no AlloyDB, conforme descrito na seção a seguir.

  8. Para confirmar se a função ai.forecast funciona conforme o esperado, execute a seguinte consulta de exemplo:

    SELECT * FROM ai.forecast(
       source_query=> '
         SELECT my_timestamp, my_data_value FROM (
           VALUES
             (CAST(''2025-01-01'' AS TIMESTAMP), 10.0),
             (CAST(''2025-01-02'' AS TIMESTAMP), 12.0),
             (CAST(''2025-01-03'' AS TIMESTAMP), 11.0),
             (CAST(''2025-01-04'' AS TIMESTAMP), 13.0),
             (CAST(''2025-01-05'' AS TIMESTAMP), 15.0),
             (CAST(''2025-01-06'' AS TIMESTAMP), 14.0),
             (CAST(''2025-01-07'' AS TIMESTAMP), 16.0),
             (CAST(''2025-01-08'' AS TIMESTAMP), 18.0),
             (CAST(''2025-01-09'' AS TIMESTAMP), 17.0),
             (CAST(''2025-01-10'' AS TIMESTAMP), 20.0)
           ) AS t (my_timestamp, my_data_value)
         ' ,
       model_id => 'timesfm_v2',
       data_col => 'my_data_value',
       timestamp_col => 'my_timestamp',
    
       -- The rest of the parameters are the same
       horizon => 7,
       conf_level => 0.80
    );
Registrar o modelo TimesFM no AlloyDB

Para registrar o modelo TimesFM no AlloyDB, siga estas etapas:

  1. Verifique se a extensão google_ml_integration está instalada no banco de dados do AlloyDB que contém os dados para execução de previsões.

  2. Confirme se você tem a versão 1.4.5 ou mais recente da extensão google_ml_integration instalada.

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Confira abaixo um exemplo de saída:

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. Chame google_ml.create_model usando o URL de solicitação do modelo que você anotou em Registrar um modelo de previsão.

    CALL
    google_ml.create_model(
      model_id => 'MODEL_ID',
      model_qualified_name => 'MODEL_QUALIFIED_NAME',
      model_type => 'ts_forecasting',
      model_provider => 'google',
      model_request_url => 'https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict' -- Example endpoint from Model Garden
      );
    

    Substitua:

    • MODEL_ID: um identificador exclusivo do modelo registrado que você quer usar para previsão, por exemplo, vertex_timesfm.
    • MODEL_QUALIFIED_NAME: um nome definido pelo usuário para o modelo, por exemplo, timesfm_v2.
    • PROJECT_ID: o nome do projeto em que o modelo está implantado. Por exemplo, forecast_project.
    • ENDPOINT_ID: o nome da implantação do modelo, por exemplo, my-timesfm-endpoint.

      O model_request_url é fornecido pela Vertex AI depois que você implanta o modelo. Copie todo o URL do painel Solicitação de amostra no console da Vertex AI. Ele já contém as informações corretas de projeto e endpoint.

Gerar previsões

Depois de registrar o modelo TimesFM e ativar a flag necessária, é possível gerar previsões transmitindo uma tabela de origem ou uma consulta com seus dados de série temporal.

A função ai.forecast é documentada separadamente. Para uma lista completa de parâmetros, incluindo descrições e exemplos, consulte a referência do gerenciamento de endpoints de modelo.

Gerar previsões com base em uma tabela de origem

O exemplo a seguir mostra como chamar a função ai.forecast usando uma tabela de origem para gerar previsões:

SELECT * FROM ai.forecast(
    model_id => 'MODEL_ID',
    source_table => 'time_series_data',
    data_col => 'data_points',
    timestamp_col => 'timestamp',
    horizon => 2,
    conf_level => 0.80
);

Gerar previsões com base em uma consulta

O exemplo a seguir mostra como gerar previsões chamando a função ai.forecast usando uma subconsulta como fonte de dados:

SELECT * FROM ai.forecast(
    model_id => 'MODEL_ID',
    source_query => '(SELECT * FROM time_series_data ORDER BY timestamp LIMIT 1) AS time_series_data',
    data_col => 'data_points',
    timestamp_col => 'timestamp',
    horizon => 2,
    conf_level => 0.80
);

Usar outros modelos de previsão

É possível usar a função ai.forecast com qualquer outro modelo de previsão de série temporal registrado no AlloyDB. A chave é garantir que seu modelo esteja registrado com o tipo ts_forecasting.

Para instruções detalhadas sobre como registrar diferentes tipos de modelos, consulte Registrar e chamar modelos de IA remotos usando o gerenciamento de endpoints de modelo. Depois de registrar o modelo, você pode usá-lo com a função ai.forecast especificando o model_id dele.

A seguir