執行時間序列預測

本頁面說明如何直接在 AlloyDB Omni 資料庫中執行時間序列預測。您可以運用各種預測模型 (包括 TimesFM 模型),因應不確定性並做出明智的策略決策。如要進一步瞭解模型,請參閱 TimesFM 研究網誌。

AlloyDB Omni 的 ai.forecast 函式可與任何註冊為 ts_forecasting 模型類型的模型搭配使用,讓您能彈性運用最符合需求的模型。本文詳細說明如何使用 TimesFM,但您也可以將這些原則套用至其他模型。

事前準備

執行時間序列預測前,您必須先在 AlloyDB Omni 中啟用預測資料庫旗標,並註冊預測模型。

註冊預測模型

AlloyDB Omni 支援多種預測模型。

本節說明如何註冊 TimesFM 模型。如要瞭解如何註冊其他模型,請參閱「使用模型端點管理功能註冊模型端點」。

使用 TimesFM 模型

TimesFM 模型有兩種版本:

  • TimesFM 1.0:TimesFM 模型的初始版本。
  • TimesFM 2.0:這個版本包含 5 億個參數的查核點,以及推論程式碼。與 1.0 模型相比,2.0 模型可提供更出色的成效。
  • TimesFM 2.5:這個版本包含 2 億個參數的查核點,以及推論程式碼。與 2.0 模型相比,這個模型效能更佳。

所有模型都可在 Model Garden 中快速部署。

如要使用 TimesFM 模型,請先將 TimesFM 模型部署至 Vertex AI 端點,然後在 AlloyDB Omni 中註冊。

將 TimesFM 模型部署至 Vertex AI 端點

您可以從 Google Cloud 控制台一鍵部署模型,也可以使用 Colaboratory 筆記本手動部署。

一鍵部署

如要使用一鍵部署功能部署 TimesFM 模型,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Model Garden」頁面:

    前往 Model Garden
  2. 在「Search」欄位中輸入 TimesFM。
  3. 在搜尋結果中,按一下「TimesFM」。
  4. 在「TimesFM」TimesFM頁面中,完成下列步驟:

    1. 按一下 [Deploy model] (部署模型)。
    2. 選取「Vertex AI」。
  5. 在「Deploy on Vertex AI」(在 Vertex AI 部署) 窗格中,設定及部署模型:

    1. 如要使用最新版本 TimesFM 模型,請在「Resource ID」(資源 ID) 下拉式選單中選取 google/timesfm-2.0。
    2. 為方便日後識別部署作業,請輸入下列內容:
      1. 在「Model name」(模型名稱) 中,輸入不重複的 MODEL_NAME。
      2. 在「Endpoint name」(端點名稱) 中,輸入不重複的 ENDPOINT_NAME。
    3. 如要展開設定選項,請在「Deployment settings」(部署作業設定) 中按一下「Advanced」(進階)。
      1. 為盡可能縮短延遲時間,請在「區域」下拉式選單中,選取 AlloyDB Omni 執行個體所在的區域。
      2. 如要達到最佳效能,請在「機器規格」下拉式選單中選取適當的機器規格。請注意,GPU 或 TPU 的延遲時間可能較短。
    4. 在「可用性政策」的「端點存取權」下拉式選單中,選取「公開 (共用端點)」。

      這會在 aiplatform 網域中建立端點,可與 AlloyDB Omni 搭配使用。

    5. 如要將模型部署至代管端點,請按一下「Deploy」(部署)。部署作業可能需要 10 到 15 分鐘。
  6. 部署 TimesFM 模型後,「端點」中會顯示類似 google_timesfm-VERSION-one-click-deploy 的連結。
  7. 如要取得模型要求網址,請在「端點」中按一下部署連結。
  8. 在端點詳細資料頁面,按一下「Sample request」(要求範例)。
  9. 在「Sample request」(要求範例) 窗格中,找出並記下模型要求網址。您會在「在 AlloyDB Omni 註冊 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. 在「Search」(搜尋) 欄位中輸入 TimesFM。
  3. 在搜尋結果中,按一下「TimesFM」開啟模型資訊卡。
  4. 在「TimesFM」頁面中,按一下「CO Open Notebook」。
  5. 在「開啟 Notebook」視窗中,點選 TimesFM 2.0 的「Colab Enterprise」連結。
  6. 在「Collab Enterprise」頁面中,完成下列步驟:

    1. 如要建立與執行階段環境的連線,請按一下「連線」。
    2. 選用:視需要完成下列步驟:

      • 在「設定 Google Cloud 雲端專案」的「必要條件」部分,設定 BUCKET_URI 和 REGION,例如將 BUCKET_URI 設為 gs://your-unique-bucket-name,並將 REGION 設為 us-central1。

      • 在「Deploy TimesFM to a Vertex AI Endpoint」的「accelerator_type」下拉式選單中,視需要選取其他加速器類型。
      • 在「步驟 3:設定預測範圍上限」中,填寫 horizon 和 max_context 欄位,例如將 horizon 設為 128,並將 max_context 設為 512。
    3. 取消勾選「use_dedicated_endpoint」核取方塊。
    4. 執行 Notebook 中的所有儲存格。

    筆記本的輸出內容會提供端點詳細資料,格式如下:projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID。

  7. 如要建構 model_request_url 來呼叫 SQL 模型建立作業,請將專案和端點 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 模型時,您需要在 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 Omni 註冊 TimesFM 模型

如要在 AlloyDB Omni 中註冊 TimesFM 模型,請按照下列步驟操作:

  1. 確認 AlloyDB Omni 資料庫已安裝 google_ml_integration 擴充功能,且該資料庫含有要執行預測作業的資料。

  2. 確認已安裝 1.4.5 以上版本的 google_ml_integration 擴充功能。

    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:要用於預測的已註冊模型專屬 ID,例如 vertex_timesfm。
    • MODEL_QUALIFIED_NAME:使用者定義的模型名稱,例如 timesfm_v2。
    • REGION:執行個體所在的區域,例如 us-central1。
    • PROJECT_ID:模型部署所在的專案名稱,例如 forecast_project。
    • ENDPOINT_ID:模型部署作業的名稱,例如 my-timesfm-endpoint。

      部署模型後,Vertex AI 會提供 model_request_url。從 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 函式搭配使用。

後續步驟