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」TimesFM頁面中,完成下列步驟:
- 按一下 [Deploy model] (部署模型)。
- 選取「Vertex AI」。
在「Deploy on Vertex AI」(在 Vertex AI 上部署) 窗格中,設定及部署模型:
- 如要使用最新版的 TimesFM 模型,請在「資源 ID」下拉式選單中選取
google/timesfm-2.0。 - 為方便日後識別部署作業,請輸入下列內容:
- 在「模型名稱」中,輸入專屬的
MODEL_NAME。 - 在「Endpoint name」(端點名稱) 中,輸入專屬的
ENDPOINT_NAME。
- 在「模型名稱」中,輸入專屬的
- 如要展開設定選項,請在「部署設定」中按一下「進階」。
- 為確保延遲時間盡可能縮短,請在「Region」(區域) 下拉式選單中,選取 AlloyDB Omni 執行個體所在的區域。
- 如要獲得最佳效能,請從「機器規格」下拉式選單中選取合適的機器規格。請注意,GPU 或 TPU 可能會提供較低的延遲時間。
在「可用性政策」的「端點存取權」下拉式選單中,選取「公開 (共用端點)」。
這會在
aiplatform網域中建立端點,可與 AlloyDB Omni 搭配使用。- 如要將模型部署至代管端點,請按一下「Deploy」(部署)。部署作業大約需要 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」頁面中,完成下列步驟:
- 如要連線至執行階段環境,請按一下「連線」。
-
選用:視需要完成下列步驟:
-
在「Setup Google Cloud project」(設定 Google Cloud 雲端專案) 的「Prerequisites」(必要條件) 區段中,設定 BUCKET_URI 和 REGION,例如將 BUCKET_URI 設為
gs://your-unique-bucket-name,並將 REGION 設為us-central1。 - 在「Deploy TimesFM to a Vertex AI Endpoint」(將 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,請將專案和端點 ID 替換為上一個步驟中的端點詳細資料,如下所示: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 模型時,您需要使用這個
model_request_url呼叫google_ml.create_model,詳情請參閱下一節。 如要確認
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 資料庫中安裝
google_ml_integration擴充功能,該資料庫包含您要執行預測的資料。確認您已安裝
google_ml_integration擴充功能 1.4.5 以上版本。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:要用於預測的已註冊模型專屬 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
);
使用其他預測模型
您可以在 AlloyDB Omni 中註冊任何其他時間序列預測模型,並搭配使用 ai.forecast 函式。重點是確保模型是以 ts_forecasting 模型類型註冊。
如需註冊不同類型模型的詳細操作說明,請參閱「使用模型端點管理工具註冊及呼叫遠端 AI 模型」。註冊模型後,您可以使用 ai.forecast 函式,並指定模型的 model_id。