执行时序预测

本页面介绍了如何在 AlloyDB 数据库中直接执行时序预测。您可以使用各种预测模型(包括 TimesFM 模型)来应对不确定性并做出明智的战略决策。如需详细了解该模型,请参阅 TimesFM 研究博客

AlloyDB 的 ai.forecast 函数旨在与注册为 ts_forecasting 模型类型的任何模型搭配使用,让您可以灵活地使用最适合自己需求的模型。本文档详细介绍了如何使用 TimesFM,但您也可以将相关原则应用于其他模型。

如需使用此功能,请使用抢先体验新一代 AlloyDB AI 表单进行注册。

准备工作

您必须先在 AlloyDB 中启用预测功能并注册模型,然后才能执行时序预测。

注册预测模型

您可以将各种预测模型与 AlloyDB 搭配使用。

本部分介绍了如何注册 TimesFM 模型。如需了解如何注册其他模型,请参阅使用模型端点管理注册模型端点

使用 TimesFM 模型

TimesFM 模型有两个版本:

  • TimesFM 1.0:TimesFM 模型的初始版本。
  • TimesFM 2.0:建议使用此版本,因为与 1.0 版相比,它的准确率最多可提高 25%。

这两个模型均可在 Model Garden 中快速部署。

如需使用 TimesFM 模型,您必须先将 TimesFM 模型部署到 Vertex AI 端点,然后在 AlloyDB 中注册该模型。

将 TimesFM 模型部署到 Vertex AI 端点

您可以使用 Google Cloud 控制台中的一键式部署功能来部署模型,也可以使用 Colaboratory 笔记本手动部署模型。

一键式部署

如需使用一键式部署来部署 TimesFM 模型,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Model Garden 页面。

    转到 Model Garden
  2. 搜索字段中,输入 TimesFM
  3. 在搜索结果中,点击 TimesFM
  4. TimesFM 页面中,完成以下步骤:

  5. 点击部署模型
  6. 选择 Vertex AI
  7. 在 Vertex AI 上部署窗格中,配置并部署模型:

    1. 如需使用最新版本的 TimesFM 模型,请在资源 ID 下拉菜单中选择 google/timesfm-2.0
    2. 为了便于日后识别部署,请输入以下内容:
      1. 模型名称中,输入唯一的 MODEL_NAME
      2. 端点名称中,输入唯一的 ENDPOINT_NAME
    3. 如需展开配置选项,请在部署设置中点击高级
      1. 为了确保延迟时间尽可能短,请在区域下拉菜单中选择 AlloyDB 实例所在的区域。
      2. 为获得最佳性能,请在机器规格下拉菜单中选择合适的机器规格。请注意,GPU 或 TPU 可能会提供更低的延迟。
    4. 可用性政策端点访问权限下拉菜单中,选择公开(共享端点)

      这会在 aiplatform 网域中创建一个可与 AlloyDB 搭配使用的端点。

    5. 如需将模型部署到托管式端点,请点击部署。部署可能需要大约 10-15 分钟。
  8. 部署 TimesFM 模型后,端点中会显示类似于 google_timesfm-VERSION-one-click-deploy 的链接。
  9. 如需获取模型请求网址,请在端点中点击部署链接。
  10. 在端点详情页面上,点击示例请求
  11. 示例请求窗格中,找到并记下模型请求网址。您可以在在 AlloyDB 中注册 TimesFM 模型中使用此信息,例如 https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict

    请确保请求网址中包含 aiplatform.googleapis.com

手动部署

如需使用 Colaboratory 笔记本手动部署 TimesFM 模型,请按照以下步骤操作:

  1. 前往 Google Cloud 控制台中的 Model Garden 页面:

    转到 Model Garden
  2. 搜索字段中,输入 TimesFM
  3. 在搜索结果中,点击 TimesFM 打开模型卡片。
  4. TimesFM 页面中,点击 CO Open Notebook
  5. 打开笔记本窗口中,点击 TimesFM 2.0 的 Collab Enterprise 链接。
  6. Colab Enterprise 页面中,完成以下步骤:

    1. 如需与运行时环境建立连接,请点击连接
    2. 可选:如有需要,请完成以下步骤:

      • 设置 Google Cloud 项目前提条件部分中,设置 BUCKET_URIREGION,例如,将 BUCKET_URI 设置为 gs://your-unique-bucket-name,并将 REGION 设置为 us-central1

      • 将 TimesFM 部署到 Vertex AI 端点accelerator_type 下拉菜单中,根据需要选择不同的加速器类型。
      • 第 3 步:设置最大预测范围中,填写 horizonmax_context 字段,例如,将 horizon 设置为 128,并将 max_context 设置为 512
    3. 取消选中 use_dedicated_endpoint 复选框。
    4. 执行笔记本中的所有单元。

    笔记本的输出以以下格式提供端点详细信息:projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID

  7. 如需为 SQL 模型创建调用构建 model_request_url,请将项目和端点标识符替换为上一步中的端点详细信息,如下所示:

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

    在 AlloyDB 中注册 TimesFM 模型时,您需要在 the google_ml.create_model 调用中使用此 model_request_url,如下一部分所述。

  8. 如需确认 ai.forecast 函数是否按预期运行,请运行以下示例查询:

    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
    );
在 AlloyDB 中注册 TimesFM 模型

如需在 AlloyDB 中注册 TimesFM 模型,请按照以下步骤操作:

  1. 验证包含您要用于运行预测的数据的 AlloyDB 数据库中是否已安装 google_ml_integration 扩展程序

  2. 确认您已安装 google_ml_integration 扩展程序 1.4.5 版或更高版本。

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    以下是示例输出:

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. 使用您在注册预测模型中记下的模型请求网址调用 google_ml.create_model

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

    替换以下内容:

    • MODEL_ID:您要用于预测的已注册模型的唯一标识符,例如 vertex_timesfm
    • MODEL_QUALIFIED_NAME:模型的用户定义名称,例如 timesfm_v2
    • PROJECT_ID:在其中部署模型的项目的名称,例如 forecast_project
    • ENDPOINT_ID:模型部署的名称,例如 my-timesfm-endpoint

      model_request_url 是在您部署模型后由 Vertex AI 提供的。从 Vertex AI 控制台的示例请求窗格中复制整个网址。它已包含正确的项目和端点信息。

生成预测

注册 TimesFM 模型并启用必要的标志后,您可以通过传递包含时序数据的源表或查询来生成预测。

ai.forecast 函数的文档单独提供。如需查看完整的参数列表(包括说明和示例),请参阅模型端点管理参考文档

根据源表生成预测

以下示例展示了如何使用源表调用 ai.forecast 函数来生成预测:

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

根据查询生成预测

以下示例展示了如何通过调用 ai.forecast 函数并使用子查询作为数据源来生成预测:

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

使用其他预测模型

您可以将 ai.forecast 函数与您在 AlloyDB 中注册的任何其他时序预测模型搭配使用。关键在于确保您的模型已注册为 ts_forecasting 模型类型。

如需详细了解如何注册不同类型的模型,请参阅使用模型端点管理注册和调用远程 AI 模型。注册模型后,您可以通过指定 model_id 将该模型与 ai.forecast 函数搭配使用。

后续步骤