跳至主要內容
ESC
Study Jam:數據與 AI 基礎 — 第 10/12 篇

BigQuery ML 推論實戰

GCP

課程概述

前面的課程裡,你已經學會用 BigQuery ML 建出基本模型。這門課我們把重點放在推論(Inference)這一端的進階用法:怎麼在 BigQuery 裡拿訓練好的模型對新資料做預測、怎麼把外部模型匯進來、怎麼呼叫 Vertex AI 上的遠端模型,還有大規模批次推論的效能該怎麼調。

你將學到

  • 使用 ML.PREDICT 進行即時與批次推論
  • 透過 CREATE MODEL ... REMOTE 呼叫 Vertex AI 上的外部模型
  • 匯入 TensorFlow SavedModel 到 BigQuery ML
  • 使用 ML.TRANSFORM 確保推論時的特徵一致性
  • 優化大規模推論的效能與成本

核心概念

BQML 推論的三種方式

方式語法使用場景
本地模型推論ML.PREDICT(MODEL model)BQML 原生訓練的模型
遠端模型推論ML.PREDICT(MODEL remote_model)呼叫 Vertex AI Endpoint
匯入模型推論ML.PREDICT(MODEL imported_model)TensorFlow / ONNX 模型

遠端模型(Remote Model)

遠端模型讓你直接在 BigQuery SQL 裡呼叫部署在 Vertex AI 上的模型,資料不用搬出 BigQuery:

-- 建立遠端模型連線
CREATE OR REPLACE MODEL `dataset.remote_model`
  INPUT(feature1 FLOAT64, feature2 STRING)
  OUTPUT(prediction FLOAT64)
  REMOTE WITH CONNECTION `project.region.connection`
  OPTIONS(ENDPOINT = 'https://REGION-aiplatform.googleapis.com/...');

-- 使用遠端模型預測
SELECT * FROM ML.PREDICT(MODEL `dataset.remote_model`,
  (SELECT feature1, feature2 FROM `dataset.new_data`));

匯入 TensorFlow 模型

如果你在外部已經訓練好 TensorFlow 模型,把 SavedModel 上傳到 Cloud Storage,再匯入 BigQuery ML 就行:

CREATE OR REPLACE MODEL `dataset.tf_model`
  OPTIONS(model_type='TENSORFLOW',
          model_path='gs://bucket/saved_model/*');

匯入後就能像使用 BQML 原生模型一樣進行推論。

特徵一致性(Feature Consistency)

推論時最容易踩的雷,就是訓練跟推論的特徵處理對不上。BQML 的 TRANSFORM 子句正是用來解決這件事:

CREATE MODEL `dataset.model`
  TRANSFORM(
    ML.BUCKETIZE(age, [18, 30, 50, 65]) AS age_bucket,
    ML.STANDARD_SCALER(income) OVER() AS scaled_income,
    label
  )
  OPTIONS(model_type='LOGISTIC_REG')
  AS SELECT age, income, label FROM `dataset.train`;

寫在 TRANSFORM 裡的轉換,到 ML.PREDICT 時會自動套用,兩邊就不會兜不起來。

批次推論效能優化

大規模推論時的效能考量:

  • 對輸入資料使用分區表,只掃描需要預測的分區
  • 物化中介結果並只 SELECT 模型需要的輸入欄位,減少重複計算與掃描量
  • 遠端模型推論受 Vertex AI Endpoint 的 QPS 限制,需注意流量控管
  • 批次推論結果可直接寫入目標表:CREATE TABLE ... AS SELECT * FROM ML.PREDICT(...)

實作重點

  • 分類模型的 ML.PREDICT 會輸出預測標籤與各類別機率(predicted_<label>_probs),可用 UNNEST 展開後依機率篩選;迴歸模型則只輸出預測值,沒有機率欄位
  • 遠端模型需先建立 BigQuery Connection(bq mk --connection),並授予連線的服務帳戶呼叫 Vertex AI 的權限
  • 匯入 TensorFlow 模型時,須確認模型的 signature 與 BigQuery 的資料類型相容
  • 常見錯誤:推論資料的欄位名稱或類型與訓練時不一致,導致 ML.PREDICT 報錯
  • 成本控制:推論查詢也按掃描量計費,建議只 SELECT 需要的欄位作為模型輸入

Skill Badge 指引

Lab 連結Using BigQuery Machine Learning for Inference — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:數據與 AI 基礎 — 10/12 完成 查看系列全覽 →

留言討論

徽章解鎖!