AlloyDB Omni 的 ai.forecast 函数旨在与注册为 ts_forecasting
模型类型的任何模型搭配使用,让您可以灵活地使用最适合自己需求的模型。本文档详细介绍了如何使用 TimesFM,但您也可以将这些原则应用于其他
模型。
准备工作
您必须先在 AlloyDB Omni 中 启用预测数据库标志并注册预测模型,然后才能执行时序预测。
注册预测模型
您可以将各种预测模型与 AlloyDB Omni 搭配使用。
本部分介绍了如何注册 TimesFM 模型。如需了解如何注册其他模型,请参阅使用模型端点管理注册模型端点。
使用 TimesFM 模型
TimesFM 模型有两个版本:
- TimesFM 1.0:TimesFM 模型的初始版本。
- TimesFM 2.0:此版本包含一个 5 亿参数的检查点及其推理代码。与 1.0 模型相比,此版本可提供更好的模型性能。
- TimesFM 2.5:此版本包含一个 2 亿参数的检查点及其推理代码。与 2.0 模型相比,此版本可提供更好的模型性能。
所有模型都可在 Model Garden 中快速部署。
如需使用 TimesFM 模型,您必须先将 TimesFM 模型部署到 Vertex AI 端点,然后在 AlloyDB Omni 中注册该模型。
将 TimesFM 模型部署到 Vertex AI 端点
您可以使用控制台中的一键式部署来部署模型, Google Cloud 或使用 Colaboratory 笔记本手动部署模型。
一键式部署
如需使用一键式部署来部署 TimesFM 模型,请按照以下步骤操作:
在 Google Cloud 控制台中,前往 Model Garden 页面:
转到 Model Garden- 在搜索 字段中,输入
TimesFM。 - 在搜索结果中,点击
TimesFM。 -
在 TimesFM 页面中,完成以下步骤:
- 点击部署模型。
- 选择 Vertex AI。
在在 Vertex AI 上部署 窗格中,配置并部署模型:
- 如需使用最新版本的 TimesFM 模型,请在资源 ID 下拉菜单中选择
google/timesfm-2.0。 - 为了便于日后识别部署,请输入以下内容:
- 在模型名称 中,输入唯一的
MODEL_NAME。 - 在端点名称中,输入唯一的
ENDPOINT_NAME。
- 在模型名称 中,输入唯一的
- 如需展开配置选项,请在部署设置 中,点击高级。
- 为了确保延迟时间尽可能短,请在区域 下拉菜单中选择 AlloyDB Omni 实例所在的区域。
- 为了获得最佳性能,请在机器规格 下拉菜单中选择合适的机器规格。请注意,GPU 或 TPU 可能会提供更低的延迟时间。
在可用性政策 的端点访问权限 下拉菜单中,选择公开(共享端点) 。
这会在
aiplatform域名中创建一个与 AlloyDB Omni 搭配使用的端点。- 如需将模型部署到托管式端点,请点击部署 。部署可能需要大约 10-15 分钟。
- 如需使用最新版本的 TimesFM 模型,请在资源 ID 下拉菜单中选择
- 部署 TimesFM 模型后,
google_timesfm-VERSION-one-click-deploy中会显示类似于 端点 的链接。 - 如需获取模型请求网址,请在端点 中,点击部署链接。
- 在端点详情页面上,点击示例请求 。
在示例请求 窗格中,找到并记下模型请求网址。您可以在在 AlloyDB Omni 中注册 TimesFM 模型中使用此信息,例如
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict。请确保请求网址中包含
aiplatform.googleapis.com。
手动部署
如需使用 Colaboratory 笔记本手动部署 TimesFM 模型,请按照以下步骤操作:
-
前往 Google Cloud 控制台中的 Model Garden 页面:
转到 Model Garden - 在搜索字段中,输入
TimesFM。 - 在搜索结果中,点击
TimesFM以打开模型卡片。 - 在 TimesFM 页面中,点击 CO Open Notebook 。
- 在打开笔记本 窗口中,点击 TimesFM 2.0 的 Collab Enterprise 链接。
-
在 Collab Enterprise 页面中,完成以下步骤:
- 如需与运行时环境建立连接,请点击连接 。
-
可选:根据需要完成以下步骤:
-
在设置 Google Cloud 项目的前提条件部分中,设置 BUCKET_URI 和 REGION,例如,将 BUCKET_URI 设置为
gs://your-unique-bucket-name,并将 REGION 设置为us-central1。 - 在将 TimesFM 部署到 Vertex AI 端点的 accelerator_type 下拉菜单中,根据需要选择不同的加速器类型。
- 在第 3 步:设置最大预测范围中,填写horizon和max_context字段,例如,将horizon设置为
128,并将max_context设置为512。
-
- 取消选中
use_dedicated_endpoint复选框。 - 执行笔记本中的所有单元。
笔记本的输出以以下格式提供端点详细信息:
projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID。 -
如需为 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 Omni 中注册 TimesFM 模型时,您需要在
google_ml.create_model调用中使用此model_request_url,如下一部分所述。 如需确认
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 Omni 中注册 TimesFM 模型
如需在 AlloyDB Omni 中注册 TimesFM 模型,请按照以下步骤操作:
验证包含您要用于运行预测的数据的 AlloyDB Omni 数据库中是否已安装 the
google_ml_integration扩展程序。确认您已安装 1.4.5 或更高版本的
google_ml_integration扩展程序。SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';以下是示例输出:
extversion ------------ 1.4.5 (1 row)使用您在注册预测模型中记下的模型请求网址调用
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。REGION:实例所在的区域,例如us-central1。PROJECT_ID:在其中部署模型的项目的名称,例如forecast_project。ENDPOINT_ID:模型部署的名称,例如my-timesfm-endpoint。model_request_url由 Vertex AI 在您部署模型后提供。从 Vertex AI 控制台的示例请求 窗格中复制整个网址。它已包含正确的项目和端点信息。
启用预测数据库标志
您必须先将 google_ml_integration.enable_forecasting 数据库标志设置为 on,然后才能使用已注册的模型生成预测。
您可以为当前会话启用此标志,也可以将其设置为在不同会话中针对特定数据库或用户保留。如需设置数据库标志,请选择以下选项之一:
为当前会话启用标志:
SET google_ml_integration.enable_forecasting = on;为特定数据库启用标志:
ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_forecasting = 'on';将
DATABASE_NAME替换为数据库的名称。为特定数据库用户启用标志:
ALTER ROLE postgres SET google_ml_integration.enable_forecasting = 'on';
生成预测
注册 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 Omni 中注册的任何其他时序预测模型搭配使用。关键是确保您的模型注册为
ts_forecasting 模型类型。
如需详细了解如何注册不同类型的模型,请参阅
使用模型端点管理注册和调用远程 AI 模型。
注册模型后,您可以通过指定
model_id 将该模型与 ai.forecast 函数搭配使用。