Effectuer des prévisions de séries temporelles

Cette page explique comment effectuer des prédictions de séries temporelles directement dans votre base de données AlloyDB. Vous pouvez utiliser différents modèles de prévision, y compris les modèles TimesFM, pour vous aider à faire face à l'incertitude et à prendre des décisions stratégiques éclairées. Pour en savoir plus sur le modèle, consultez le blog de recherche TimesFM.

La fonction ai.forecast d'AlloyDB est conçue pour fonctionner avec n'importe quel modèle enregistré avec le type de modèle ts_forecasting, ce qui vous permet d'utiliser le modèle le mieux adapté à vos besoins. Ce document fournit un guide détaillé sur l'utilisation de TimesFM, mais vous pouvez également appliquer les principes à d'autres modèles.

Avant de commencer

Avant de pouvoir effectuer des prévisions de séries temporelles, vous devez activer la fonctionnalité de prévision dans AlloyDB et enregistrer un modèle.

Enregistrer un modèle de prévision

Vous pouvez utiliser différents modèles de prévision avec AlloyDB.

Cette section fournit des instructions pour enregistrer le modèle TimesFM. Pour savoir comment enregistrer d'autres modèles, consultez Enregistrer un point de terminaison de modèle avec la gestion des points de terminaison de modèle.

Utiliser le modèle TimesFM

Les modèles TimesFM sont disponibles en deux versions :

  • TimesFM 1.0 : version initiale du modèle TimesFM.
  • TimesFM 2.0 : cette version est recommandée, car elle offre une précision jusqu'à 25 % supérieure à celle de la version 1.0.

Les deux modèles sont disponibles dans Model Garden pour un déploiement rapide.

Pour utiliser les modèles TimesFM, vous devez d'abord les déployer sur un point de terminaison Vertex AI, puis les enregistrer dans AlloyDB.

Déployer le modèle TimesFM sur un point de terminaison Vertex AI

Vous pouvez déployer le modèle en un clic depuis la console Google Cloud ou manuellement à l'aide d'un notebook Colaboratory.

Déploiement en un clic

Pour déployer le modèle TimesFM en un clic, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Model Garden :

    Accéder à Model Garden
  2. Dans le champ Rechercher, saisissez TimesFM.
  3. Dans les résultats de recherche, cliquez sur TimesFM.
  4. Sur la page TimesFM, procédez comme suit :

  5. Cliquez sur Déployer le modèle.
  6. Sélectionnez Vertex AI.
  7. Dans le volet Déployer sur Vertex AI, configurez et déployez votre modèle :

    1. Pour utiliser la dernière version du modèle TimesFM, sélectionnez google/timesfm-2.0 dans le menu déroulant ID de ressource.
    2. Pour identifier plus facilement le déploiement par la suite, saisissez ce qui suit :
      1. Dans Nom du modèle, un MODEL_NAME unique.
      2. Dans le champ Nom du point de terminaison, saisissez un ENDPOINT_NAME unique.
    3. Pour développer les options de configuration, dans Paramètres de déploiement, cliquez sur Avancé.
      1. Pour minimiser la latence, sélectionnez dans le menu déroulant Région la même région que celle où se trouve votre instance AlloyDB.
      2. Pour obtenir les meilleures performances, sélectionnez une spécification de machine appropriée dans le menu déroulant Spécification de la machine. Notez qu'un GPU ou un TPU peut offrir une latence plus faible.
    4. Dans le menu déroulant Accès au point de terminaison de Règles de disponibilité, sélectionnez Public (point de terminaison partagé).

      Cela crée un point de terminaison dans le domaine aiplatform qui fonctionne avec AlloyDB.

    5. Pour déployer le modèle sur un point de terminaison géré, cliquez sur Déployer. Le déploiement peut prendre entre 10 et 15 minutes.
  8. Une fois le modèle TimesFM déployé, un lien semblable à google_timesfm-VERSION-one-click-deploy s'affiche dans Points de terminaison.
  9. Pour obtenir l'URL de la requête du modèle, cliquez sur le lien de déploiement dans Points de terminaison.
  10. Sur la page d'informations du point de terminaison, cliquez sur Exemple de requête.
  11. Dans le volet Exemple de requête, recherchez l'URL de la requête du modèle et notez-la. Vous utilisez ces informations dans Enregistrer le modèle TimesFM dans AlloyDB (par exemple, https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict).

    Assurez-vous que l'URL de la requête contient aiplatform.googleapis.com.

Déploiement manuel

Pour déployer manuellement le modèle TimesFM à l'aide d'un notebook Colaboratory, procédez comme suit :

  1. Accédez à la page Model Garden dans la console Google Cloud  :

    Accéder à Model Garden
  2. Dans le champ Rechercher, saisissez TimesFM.
  3. Dans les résultats de recherche, cliquez sur TimesFM pour ouvrir la fiche du modèle.
  4. Sur la page TimesFM, cliquez sur CO Open Notebook.
  5. Dans la fenêtre Ouvrir le notebook, cliquez sur le lien Colab Enterprise pour TimesFM 2.0.
  6. Sur la page Colab Enterprise, procédez comme suit :

    1. Pour établir une connexion à l'environnement d'exécution, cliquez sur Connecter.
    2. Facultatif : Si nécessaire, procédez comme suit :

      • Dans la section Conditions préalables de Configurer un projet Google Cloud, définissez BUCKET_URI et REGION. Par exemple, définissez BUCKET_URI sur gs://your-unique-bucket-name et REGION sur us-central1.

      • Dans le menu déroulant accelerator_type de Déployer TimesFM sur un point de terminaison Vertex AI, sélectionnez un autre type d'accélérateur si nécessaire.
      • Dans l'étape 3 : Définissez l'horizon de prévision maximal, remplissez les champs horizon et max_context. Par exemple, définissez horizon sur 128 et max_context sur 512.
    3. Décochez la case use_dedicated_endpoint.
    4. Exécutez toutes les cellules du notebook.

    Le résultat du notebook fournit les détails du point de terminaison au format suivant : projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID.

  7. Pour construire le model_request_url pour l'appel de création de modèle SQL, remplacez les identifiants de projet et de point de terminaison par les détails du point de terminaison de l'étape précédente comme suit :

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

    Vous aurez besoin de ce model_request_url dans l'appel the google_ml.create_model lorsque vous enregistrerez le modèle TimesFM dans AlloyDB, comme décrit dans la section suivante.

  8. Pour vérifier que la fonction ai.forecast fonctionne comme prévu, exécutez l'exemple de requête suivant :

    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
    );
Enregistrer le modèle TimesFM dans AlloyDB

Pour enregistrer le modèle TimesFM dans AlloyDB, procédez comme suit :

  1. Vérifiez que l'extension google_ml_integration est installée dans la base de données AlloyDB qui contient les données sur lesquelles vous souhaitez exécuter des prédictions.

  2. Vérifiez que la version 1.4.5 ou ultérieure de l'extension google_ml_integration est installée.

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Voici un exemple de résultat :

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. Appelez google_ml.create_model à l'aide de l'URL de requête du modèle que vous avez notée dans Enregistrer un modèle de prévision.

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

    Remplacez les éléments suivants :

    • MODEL_ID : identifiant unique du modèle enregistré que vous souhaitez utiliser pour les prévisions (par exemple, vertex_timesfm).
    • MODEL_QUALIFIED_NAME : nom défini par l'utilisateur pour le modèle, par exemple timesfm_v2.
    • PROJECT_ID : nom du projet dans lequel le modèle est déployé (par exemple, forecast_project).
    • ENDPOINT_ID : nom du déploiement du modèle, par exemple my-timesfm-endpoint.

      Le model_request_url est fourni par Vertex AI une fois votre modèle déployé. Copiez l'intégralité de l'URL depuis le volet Exemple de requête de la console Vertex AI. Il contient déjà les informations correctes sur le projet et le point de terminaison.

Générer des prévisions

Après avoir enregistré le modèle TimesFM et activé le flag nécessaire, vous pouvez générer des prévisions en transmettant une table ou une requête source avec vos données de série temporelle.

La fonction ai.forecast est documentée séparément. Pour obtenir la liste complète des paramètres, y compris leurs descriptions et des exemples, consultez la documentation de référence sur la gestion des points de terminaison de modèle.

Générer des prévisions à partir d'une table source

L'exemple suivant montre comment appeler la fonction ai.forecast à l'aide d'une table source pour générer des prédictions :

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

Générer des prévisions à partir d'une requête

L'exemple suivant montre comment générer des prévisions en appelant la fonction ai.forecast à l'aide d'une sous-requête comme source de données :

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

Utiliser d'autres modèles de prévision

Vous pouvez utiliser la fonction ai.forecast avec n'importe quel autre modèle de prévision de séries temporelles que vous enregistrez dans AlloyDB. L'essentiel est de s'assurer que votre modèle est enregistré avec le type de modèle ts_forecasting.

Pour obtenir des instructions détaillées sur l'enregistrement de différents types de modèles, consultez Enregistrer et appeler des modèles d'IA distants à l'aide de la gestion des points de terminaison de modèles. Une fois votre modèle enregistré, vous pouvez l'utiliser avec la fonction ai.forecast en spécifiant son model_id.

Étapes suivantes