GCP

BigQuery MLモデル作成とVertex AIデプロイ完全ガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

1. はじめに ― BigQuery ML の位置付け

項目 内容
主な特徴 - SQL だけでデータ選択・前処理・学習が可能
- データは BigQuery に常駐 したまま分散トレーニングが実行され、ETL コストを削減
対象ユースケース - 大規模テーブルに対する回帰・分類・クラスタリング
- バッチ予測や簡易なオンラインスコアリング
制限の概要 - ディープラーニング系(TensorFlow/Keras、PyTorch 等)は未サポート
- モデルサイズは 10 GB まで エクスポート可能(2024 年時点)
- 高度な特徴量エンジニアリングは外部ツールと併用が推奨

2. CREATE MODEL の基本構文と注意点

2.1 基本形

2.2 実装上のポイント

項目 補足説明
model_type の選択 現在サポートされているアルゴリズムは公式ドキュメントの Supported models ページに一覧があります(例: XGBOOST, LINEAR_REG, LOGISTIC_REG, KMEANS
データ前処理 CREATE MODELAS SELECT 部分で SQL 関数SAFE_CAST, CASE WHEN など)を用いて欠損値処理やカテゴリ変換が可能です。ただし、複雑なウィンドウ関数や外部データ結合はクエリコストが高くなる点に留意
ハイパーパラメータの上書き OPTIONS に記載した項目はトレーニング時に自動適用されますが、アルゴリズム固有のオプションは公式ドキュメントでサポート状況を確認してください
モデルサイズ制限 2024 年 3 月現在、エクスポート可能な BQML モデルは 10 GB が上限です。大規模な XGBoost のツリーモデルは事前に max_depthnum_parallel_tree を抑えてサイズを管理しましょう

2.3 「SQLだけで完結」ではない点

  • 特徴量エンジニアリング:高度な変換(例: テキスト埋め込み、画像前処理)は外部の Dataflow/Dataproc ジョブや Vertex AI Pipelines が必要です。
  • モデル評価・チューニングML.EVALUATE で指標を取得できますが、ハイパーパラメータ探索(Grid Search 等)には Cloud Composer や自作スクリプトの組み合わせが一般的です。

3. トレーニング時に設定できる主なオプション

オプション 説明 推奨設定例
max_iterations 学習回数上限(早期停止と併用) 100
learn_rate 勾配降下のステップ幅(XGBOOST のみ) 0.05
early_stop バリデーションスコアが改善しない場合に自動停止 TRUE
validation_split 学習データの何%を検証用に使用するか 0.2
subsample 各イテレーションでサンプリングするデータ比率(XGBOOST) 0.8
input_label_cols ラベル列名(省略可) ['label']

ポイント:ハイパーパラメータはクエリ実行時に BigQuery の分散エンジンで評価され、スケールアウトが自動的に適用されます。


4. モデルのエクスポートと Vertex AI Model Registry への登録

4.1 エクスポート手順(2024 年版)

bq extract--destination_format=ML_MODEL は公式に推奨されている方法です。実行前に Cloud Storage バケットの書き込み権限が付与されたサービスアカウントを使用してください。

  • エクスポート結果は .json(メタデータ).pb(モデル本体) の 2 ファイルに分割されます。

4.2 Vertex AI Model Registry へアップロード

パラメータ 説明
--container-image-uri Vertex AI が提供する推論コンテナ。XGBoost 用は xgboost-cpu(CPU)または xgboost-gpu が選択可能
--artifact-uri 先ほどエクスポートした Cloud Storage のパス

参考:Google のベストプラクティス「ML on GCP – Architecture」(リンク) でも同様のフローが推奨されています。


5. デプロイメントパターンと実装例

パターン 主な利用シーン 実装手順概要
オンライン予測(Vertex AI エンドポイント) リアルタイムスコアリング、レイテンシが数百ミリ秒以内必要なケース エンドポイント作成 → gcloud ai models deploy でモデルをデプロイ
バッチ予測(BigQuery の ML.PREDICT 夜間集計や大量データの一括スコアリング ML.PREDICT を SQL に組み込み、クエリ実行だけで完結
ストリーミング予測(Dataflow + Vertex AI) 取引ログや IoT データなどのリアルタイムストリーム処理 Dataflow が Pub/Sub 経由で受信 → カスタム DoFn からエンドポイントへ HTTP 呼び出し

5.1 オンラインエンドポイント作成例

  • オートスケール--min-replica-count / --max-replica-count に加えて、エンドポイントの自動スケーリング設定で CPU 利用率や QPS を基準に調整できます(後述)。

5.2 バッチ予測(BigQuery)

  • 利点:データが BigQuery 内に留まるため、追加のネットワークコストやレイテンシが発生しません。
  • 注意ML.PREDICT は内部で BQML の推論エンジンを使用するため、Vertex AI エンドポイントは呼び出されません。

5.3 Dataflow と Vertex AI の連携例(Python)

  • コスト注意:Dataflow から外部エンドポイントへ HTTP リクエストを送る際は、ネットワーク egress が発生します。料金シミュレーションは GCP Pricing Calculator で事前に確認してください。

6. 運用最適化 ― コスト・スケーリング・モニタリング

6.1 課金モデルの選択

項目 オンデマンド課金 フラットレート(予約)
請求単位 BQML:クエリ処理量(TB)
Vertex AI:予測リクエスト数+インスタンス時間
月額固定 + 使用上限オプション
メリット 低トラフィック時に費用が抑えられる 高負荷期でもコストを予測しやすい
推奨シナリオ バッチ処理が季節変動する場合 常時オンラインサービス、SLA が重要なケース

根拠:2024 年 3 月に公開された Zenn 記事「BigQuery ML の課金はデータ量ベース」(リンク) によると、BQML は 処理したデータ量 が直接課金対象です。

6.2 Vertex AI エンドポイントのオートスケーリング設定

  • --target-cpu-utilization=0.6CPU 使用率が 60 % を超えると自動でスケールアウトします。
  • スケーリングポリシーは QPS(requests_per_second)レイテンシ にも変更可能です。

6.3 Cloud Monitoring とログの可視化

  1. ダッシュボード作成
  2. メトリクス: model/deployed_models/*/prediction_countprediction_latency
  3. 推奨表示形式: 時系列グラフ+アラートしきい値(例:レイテンシ > 500 ms)

  4. ログエクスポート(予測リクエストの詳細を BigQuery に保存)

  • エクスポートされたテーブルは SQL で集計でき、異常検知やコスト分析に活用できます。

7. CI/CD・バージョン管理・セキュリティのベストプラクティス

7.1 完全自動化パイプライン例(Cloud Build + Vertex AI Pipelines)

cloudbuild.yaml の抜粋

  • トリガー:GitHub の main ブランチへプッシュされたときに自動実行。
  • 利点:コード・モデルのバージョンが Git のコミットハッシュで紐付くため、ロールバックが容易。

7.2 IAM ロール設計(最小権限)

ロール 主な権限 推奨付与先
roles/aiplatform.modelViewer モデル閲覧・予測呼び出し データサイエンティスト(読み取り専用)
roles/aiplatform.modelAdmin モデル作成・削除・デプロイ ML エンジニア、CI/CD 用サービス アカウント
roles/bigquery.user クエリ実行・テーブル閲覧 全員(ただしテーブルレベルのアクセス制御は別途設定)
roles/storage.objectAdmin バケットへの読み書き エクスポート/インポートを行うジョブ
  • ベストプラクティス:サービス アカウントごとにロールを分離し、半年に一度 IAM ポリシーのレビューを実施。

7.3 デプロイ前テスト項目チェックリスト

テスト種別 内容 推奨ツール
ユニットテスト ML.EVALUATE による指標(AUC, RMSE 等)を基準値と比較 BigQuery の SQL スクリプト
負荷テスト 1 000 RPS 程度の予測リクエストをシミュレートし、スループット・レイテンシを計測 gcloud ai endpoints predict + hey 等のベンチマーカー
コストシミュレーション 予測リクエスト数と BQML クエリ量を GCP Pricing Calculator に入力し、月額概算を算出 Google Cloud Pricing Calculator
障害復旧フロー確認 デプロイ失敗時に gcloud ai endpoints undeploy でロールバックし、前バージョンへトラフィック切替ができるか検証 手動スクリプト or Cloud Build step

8. BQML の制限事項と回避策

制限 詳細 回避・対策
モデルサイズ上限 エクスポート可能なモデルは 10 GB(2024 年時点) - 学習前に max_depthnum_trees を抑える
- 必要なら Vertex AI Pipelines で外部トレーニング(TensorFlow 等)へ移行
未サポートアルゴリズム Deep Learning 系(CNN, RNN, Transformer)や画像・音声処理は不可 - 前処理を Dataflow/Dataproc で実施し、特徴量ベクトル化後に BQML に投入
複雑な前処理のコスト 大規模ジョインやウィンドウ関数はクエリ料金が高くなる - 必要最小限に留め、ETL は Cloud Composer / Dataflow で実施
リアルタイム推論のレイテンシ ML.PREDICT はバッチ向き。オンライン用途は Vertex AI エンドポイントへデプロイが必須 - 低遅延が必要ならエンドポイントに直接リクエストする構成を採用

9. まとめ ― 実装フローの全体像

  1. SQL でモデル作成
    CREATE MODEL → ハイパーパラメータは OPTIONS に列挙。データ前処理は同じクエリ内で可能だが、複雑な処理は外部ツールへ委譲。

  2. モデルの評価・チューニング
    ML.EVALUATE で指標取得 → 必要に応じて Cloud Build 上でハイパーパラメータ探索を自動化。

  3. エクスポート & Model Registry 登録
    bq extract --destination_format=ML_MODEL → Cloud Storage に保存 → gcloud ai models upload.

  4. デプロイ先の選択

  5. オンライン:Vertex AI エンドポイント(オートスケーリング設定必須)
  6. バッチ:BigQuery の ML.PREDICT クエリ実行
  7. ストリーミング:Dataflow → Vertex AI へ HTTP 呼び出し

  8. 運用最適化
    コストモデルを選択し、Monitoring ダッシュボードとログエクスポートで SLA を監視。スケーリングポリシーは実測データに合わせて調整。

  9. CI/CD とセキュリティ
    Cloud Build + Vertex AI Pipelines により「コード → データ → モデル」の全工程を自動化。IAM は最小権限でロール分割し、定期的なポリシーレビューを実施。

  10. 制約への対策
    大規模モデルはサイズ上限に注意し、未サポートの深層学習タスクは Vertex AI のトレーニングジョブへ委譲。


次のステップ:本ガイドをベースに、社内のデータパイプラインと統合テスト環境で「サンプルモデル(XGBoost)→エンドポイント」までのフローを構築し、運用チームと共通認識を持つことが重要です。


本稿は 2024 年 9 月時点の情報に基づいています。Google Cloud のサービスは頻繁に更新されるため、実装前に公式ドキュメント(BigQuery MLVertex AI)をご確認ください。

スポンサードリンク

-GCP
-, , , , , , , , ,