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
延伸學習
- BigQuery ML 建模實戰 — 回顧 BQML 基礎建模流程
- 在 BigQuery 中使用 Gemini 模型 — 用 BQML 遠端模型呼叫 Gemini
- Vertex AI 機器學習解決方案 — 深入 Vertex AI 平台的完整 ML 流程
Study Jam:數據與 AI 基礎 — 10/12 完成
查看系列全覽 →