Realizar previsiones de series temporales

En esta página se describe cómo hacer predicciones de series temporales directamente en tu base de datos de AlloyDB. Puedes usar varios modelos de previsión, incluidos los modelos TimesFM, para gestionar la incertidumbre y tomar decisiones estratégicas fundamentadas. Para obtener más información sobre el modelo, consulta el blog de investigación de TimesFM.

La función ai.forecast de AlloyDB se ha diseñado para funcionar con cualquier modelo registrado con el tipo de modelo ts_forecasting, lo que te ofrece la flexibilidad de usar el modelo que mejor se adapte a tus necesidades. En este documento se ofrece una guía detallada sobre el uso de TimesFM, pero también puedes aplicar los principios a otros modelos.

Antes de empezar

Para poder realizar previsiones de series temporales, debe habilitar la función de previsión en AlloyDB y registrar un modelo.

Registrar un modelo de previsión

Puedes usar varios modelos de previsión con AlloyDB.

En esta sección se proporcionan instrucciones para registrar el modelo TimesFM. Para obtener instrucciones sobre cómo registrar otros modelos, consulta Registrar un endpoint de modelo con la gestión de endpoints de modelos.

Usar el modelo TimesFM

Los modelos TimesFM se ofrecen en dos versiones:

  • TimesFM 1.0: la versión inicial del modelo TimesFM.
  • TimesFM 2.0: esta versión es la recomendada, ya que ofrece una precisión hasta un 25% mayor que la versión 1.0.

Ambos modelos están disponibles en Model Garden para que puedas implementarlos rápidamente.

Para usar los modelos de TimesFM, primero debes desplegar el modelo de TimesFM en un endpoint de Vertex AI y, a continuación, registrarlo en AlloyDB.

Desplegar el modelo TimesFM en un endpoint de Vertex AI

Puedes desplegar el modelo con un solo clic desde la Google Cloud consola o manualmente con un cuaderno de Colaboratory.

Despliegue con un solo clic

Para implementar el modelo TimesFM con una implementación de un solo clic, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Model Garden:

    Ir a Model Garden
  2. En el campo Buscar, introduce TimesFM.
  3. En los resultados de búsqueda, haz clic en TimesFM.
  4. En la página TimesFM, sigue estos pasos:

  5. Haz clic en Desplegar modelo.
  6. Selecciona Vertex AI.
  7. En el panel Desplegar en Vertex AI, configura y despliega tu modelo:

    1. Para usar la versión más reciente del modelo TimesFM, en el menú desplegable ID de recurso, selecciona google/timesfm-2.0.
    2. Para identificar la implementación más adelante, introduce lo siguiente:
      1. En Nombre del modelo, un MODEL_NAME único.
      2. En Nombre de endpoint, un ENDPOINT_NAME único.
    3. Para desplegar las opciones de configuración, en Ajustes de implementación, haga clic en Avanzado.
      1. Para asegurarte de que la latencia sea lo más baja posible, en el desplegable Región, selecciona la misma región en la que se encuentra tu instancia de AlloyDB.
      2. Para obtener el mejor rendimiento, en el desplegable Especificación de la máquina, seleccione una especificación de máquina adecuada. Ten en cuenta que una GPU o una TPU pueden ofrecer una latencia menor.
    4. En el menú desplegable Acceso al endpoint de Políticas de disponibilidad, selecciona Público (endpoint compartido).

      De esta forma, se crea un endpoint en el dominio aiplatform que funciona con AlloyDB.

    5. Para desplegar el modelo en un endpoint gestionado, haga clic en Desplegar. El despliegue puede tardar entre 10 y 15 minutos.
  8. Una vez que se haya desplegado el modelo TimesFM, aparecerá un enlace similar a google_timesfm-VERSION-one-click-deploy en Endpoints (Endpoints).
  9. Para obtener la URL de solicitud del modelo, en Endpoints (Endpoints), haga clic en el enlace de la implementación.
  10. En la página de detalles del endpoint, haz clic en Solicitud de ejemplo.
  11. En el panel Solicitud de ejemplo, busque la URL de la solicitud del modelo y anótela. Esta información se usa en Registrar el modelo TimesFM en AlloyDB, por ejemplo, https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict.

    Asegúrate de que la URL de la solicitud incluya aiplatform.googleapis.com.

Despliegue manual

Para implementar manualmente el modelo TimesFM con un cuaderno de Colaboratory, sigue estos pasos:

  1. Ve a la página Model Garden de la consola de Google Cloud :

    Ir a Model Garden
  2. En el campo Buscar, introduce TimesFM.
  3. En los resultados de búsqueda, haga clic en TimesFM para abrir la tarjeta de modelo.
  4. En la página TimesFM, haz clic en CO Open Notebook.
  5. En la ventana Abrir cuaderno, haz clic en el enlace Collab Enterprise de TimesFM 2.0.
  6. En la página Collab Enterprise, sigue estos pasos:

    1. Para establecer una conexión con el entorno de ejecución, haz clic en Conectar.
    2. Opcional: Sigue estos pasos si es necesario:

      • En la sección Requisitos previos de Configurar un proyecto de Google Cloud, define los valores de BUCKET_URI y REGION. Por ejemplo, asigna el valor gs://your-unique-bucket-name a BUCKET_URI y el valor us-central1 a REGION.

      • En el menú desplegable accelerator_type de Deploy TimesFM to a Vertex AI Endpoint (Desplegar TimesFM en un endpoint de Vertex AI), selecciona otro tipo de acelerador si es necesario.
      • En el paso 3: Define el horizonte de previsión máximo, rellena los campos horizon y max_context. Por ejemplo, asigna el valor horizon a 128 y el valor max_context a 512.
    3. Desmarca la casilla use_dedicated_endpoint.
    4. Ejecuta todas las celdas del cuaderno.

    La salida del cuaderno proporciona los detalles del endpoint en el siguiente formato: projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID.

  7. Para crear el model_request_url de la llamada de creación del modelo SQL, sustituye los identificadores de proyecto y de endpoint por los detalles del endpoint del paso anterior, tal como se indica a continuación:

    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');

    Necesitarás este model_request_url en la llamada the google_ml.create_model cuando registres el modelo TimesFM en AlloyDB, tal como se describe en la siguiente sección.

  8. Para confirmar que la función ai.forecast funciona correctamente, ejecuta la siguiente consulta de ejemplo:

    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 el modelo TimesFM en AlloyDB

Para registrar el modelo TimesFM en AlloyDB, sigue estos pasos:

  1. Verifica que la extensión google_ml_integration esté instalada en la base de datos de AlloyDB que contiene los datos con los que quieres generar predicciones.

  2. Comprueba que tengas instalada la versión 1.4.5 o una posterior de la extensión google_ml_integration.

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    A continuación, se muestra un ejemplo de resultado:

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. Llama a google_ml.create_model con la URL de solicitud del modelo que has anotado en Registrar un modelo de previsión.

    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
      );
    

    Haz los cambios siguientes:

    • MODEL_ID: identificador único del modelo registrado que quieras usar para las previsiones. Por ejemplo, vertex_timesfm.
    • MODEL_QUALIFIED_NAME: un nombre definido por el usuario para el modelo, como timesfm_v2.
    • PROJECT_ID: el nombre del proyecto en el que se ha implementado el modelo (por ejemplo, forecast_project).
    • ENDPOINT_ID: el nombre de la implementación del modelo (por ejemplo, my-timesfm-endpoint).

      El model_request_url lo proporciona Vertex AI después de desplegar el modelo. Copia toda la URL del panel Solicitud de ejemplo de la consola de Vertex AI. Ya contiene la información correcta del proyecto y del endpoint.

    Google Cloud

Generar previsiones

Después de registrar el modelo TimesFM y habilitar la marca necesaria, puede generar previsiones transfiriendo una tabla de origen o una consulta con sus datos de serie temporal.

La función ai.forecast se documenta por separado. Para ver una lista completa de parámetros, incluidas sus descripciones y ejemplos, consulta la referencia de gestión de endpoints de modelos.

Generar previsiones a partir de una tabla de origen

En el siguiente ejemplo se muestra cómo llamar a la función ai.forecast mediante una tabla de origen para generar predicciones:

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
);

Generar previsiones a partir de una consulta

En el siguiente ejemplo se muestra cómo generar previsiones llamando a la función ai.forecast con una subconsulta como fuente de datos:

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 otros modelos de previsión

Puedes usar la función ai.forecast con cualquier otro modelo de previsión de series temporales que registres en AlloyDB. La clave es asegurarse de que el modelo esté registrado con el tipo de modelo ts_forecasting.

Para obtener instrucciones detalladas sobre cómo registrar diferentes tipos de modelos, consulta Registrar y llamar a modelos de IA remotos mediante la gestión de endpoints de modelos. Una vez que hayas registrado tu modelo, podrás usarlo con la función ai.forecast especificando su model_id.

Siguientes pasos