Contents
BigQuery MLモデルデプロイの概要と目的
BigQuery MLからVertex AIへのモデル移行は、機械学習導入における重要なステップです。BigQueryではSQLベースでモデルをトレーニングできますが、本格的な運用にはVertex AIのようなMLOpsプラットフォームが必要になります。特に「モデルサイズ制限対策」の実装は、エクスポート失敗や予測性能低下を防ぐ上で不可欠です。本記事では、公式ドキュメントと併せて、ロジスティック回帰モデルから実験を開始する手順を解説します。
CREATE MODELステートメントによる基本的なモデル構築
BigQuery MLでは、SQLベースで機械学習モデルをトレーニングできます。特にCREATE MODELステートメントは、データ準備から評価までの全工程を簡潔に記述できるため、実務でも採用されています。
SQLベースのモデルトレーニングの基礎
CREATE MODELは、以下のように基本構文で使用します。
|
1 2 3 4 5 |
CREATE OR REPLACE MODEL `project.dataset.model_name` OPTIONS(model_type='logistic_reg', input_label_cols=['label']) AS SELECT features, label FROM `project.dataset.training_data`; |
- model_type:モデルの種類(ロジスティック回帰、XGBoostなど)を指定します。
- input_label_cols:予測ターゲットとなるラベル列を指定します。
この構文は、トレーニングデータから特徴量とラベルを選択し、モデルを作成します。
ロジスティック回帰モデルとXGBoostモデルの比較
ロジスティック回帰とXGBoostは異なるアルゴリズム特性を持つため、用途やパラメータ設定が異なります。以下に両者の違いを表形式で示します。
| 項目 | ロジスティック回帰モデル | XGBoostモデル |
|---|---|---|
| 特徴 | 線形分類器 | 決定木のアンサンブル(勾配ブースティング) |
| パラメータ例 | max_depth(不要) |
max_depth(必須、木の深さ制限に使用) |
| 適した用途 | 簡単な分類タスク | 複雑な非線形データへの高精度予測 |
注意:
max_depthはXGBoostモデル専用のパラメータであり、ロジスティック回帰モデルには適用できません。
モデルサイズ制限(10GB上限)対策と回避策
BigQuery MLで訓練したモデルをVertex AIにエクスポートする際には、10GBの上限制限があります。この制限を超える場合、エクスポートが失敗します。
制限の影響と発生条件
- 適用対象: すべてのBigQuery MLモデル(XGBoost、ロジスティック回帰など)
- 上限値: モデルファイル(パラメータ・構造情報など)の合計サイズが10GBを超えるとエクスポート不可
max_depthや特徴量選択による軽量化
以下のような対策を講じて、モデルサイズを削減できます。
XGBoostモデルの場合(max_depth設定例)
|
1 2 3 4 5 |
CREATE OR REPLACE MODEL `my_project.my_dataset.xgboost_model` OPTIONS(model_type='xgboost_classifier', input_label_cols=['target'], max_depth=5) AS SELECT features, target FROM `my_project.my_dataset.training_data`; |
- max_depth:決定木の深さを制限することで、パラメータ数が減少しモデルサイズが軽減されます。
特徴量選択
|
1 2 3 4 5 6 7 8 |
CREATE OR REPLACE MODEL `my_project.my_dataset.feature_selected_model` OPTIONS(model_type='logistic_reg', input_label_cols=['churn']) AS SELECT age, monthly_charge, churn FROM `my_project.my_dataset.customer_data`; |
- 特徴量選択:不要な列(たとえば
total_charges)を除外することで、モデルサイズの削減が可能です。
Vertex AIへのモデル移行手順(gcloudコマンド含む)
BigQuery MLからVertex AIへモデルを移行する際には、以下の準備が必要です。
エクスポート前の準備作業
- プロジェクトID確認:Vertex AIに登録するプロジェクトIDを明確にします。
- アクセス権設定:
gcloud auth loginで認証し、Vertex AI用のサービスアカウントを作成します。
gcloudコマンドによるモデルのエクスポート(最新版)
以下のコマンドでBigQuery MLモデルをVertex AIにエクスポートできます。
|
1 2 3 4 5 6 7 8 |
gcloud ai models export \ --project=my-project \ --region=us-central1 \ --model-id=my-model-name \ --source-model-format=bqml \ # 更新: --source-type=bqml → --source-model-format=bqml --source-uri="bq://my_project.my_dataset.customer_churn_model" \ --destination-uri="gs://my-bucket/models/" |
- --source-uri:BigQuery MLモデルのURIを指定します。
- --destination-uri:エクスポート先のGCSバケットを指定します。
オンライン予測用エンドポイントの作成プロセス
Vertex AIに登録したモデルをオンラインで利用するには、エンドポイントを作成し、API経由で呼び出す必要があります。
Vertex AIモデルバージョンの登録とデプロイ手順
-
Model Registryへの登録:以下のコマンドでモデルを登録します。
bash
gcloud ai models versions create v1 \
--project=my-project \
--region=us-central1 \
--model-id=my-model-name \
--framework=bqml \
--uri="gs://my-bucket/models/customer_churn_model" -
エンドポイント作成: Vertex AI Consoleまたはgcloudコマンドでエンドポイントを作成します。
-
API呼び出し例(注意: 安全性を確保してください)
bash
curl -X POST "https://us-central1-aiplatform.googleapis.com/v1/projects/my-project/locations/us-central1/endpoints/my-endpoint:predict" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \ # **セキュリティリスク**: Bearerトークンは直接使用しないでください
-H "Content-Type: application/json" \
-d '{"instances": [{"age": 35, "monthly_charge": 50}]}'
⚠️ 警告:
Authorization: Bearer $(gcloud auth print-access-token)は実運用では推奨されません。トークンを安全に管理する方法(例:環境変数やセキュアなストレージ)を使用してください。
SQLベースでのモデル評価方法と実践
BigQuery内でも、モデルの精度をSQLで評価できます。これは、デプロイ前の性能確認に役立ちます。
予測結果のデータベースへの保存
|
1 2 3 4 |
CREATE TABLE `my_project.my_dataset.predictions` AS SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.customer_churn_model`, TABLE `my_project.my_dataset.test_data`); |
- ML.PREDICT:トレーニング済みモデルを使用して、テストデータに対して予測を行います。
精度・AUC-ROCなどの算出方法
以下に精度とAUC-ROCを算出するSQLクエリ例を示します。
1. 正解率の計算
|
1 2 3 4 5 |
SELECT COUNT(*) AS total_samples, SUM(CASE WHEN predicted_label = actual_label THEN 1 ELSE 0 END) / COUNT(*) AS accuracy FROM `my_project.my_dataset.predictions`; |
2. AUC-ROCの計算(ロジスティック回帰モデルの場合)
|
1 2 3 4 |
SELECT ROC_AUC(actual_label, predicted_prob) AS auc_roc FROM `my_project.my_dataset.predictions`; |
まとめと実験の開始
本記事では、BigQuery MLからVertex AIへのデプロイ手順を解説しました。具体的には以下のポイントをカバーしました:
- CREATE MODELによるモデルトレーニング方法
- モデルサイズの10GB制限と回避策(max_depth・特徴量選択)
- gcloudコマンドでのVertex AIへの移行手順
- オンライン予測用エンドポイントの作成プロセス
- SQLベースでのモデル評価方法
公式ドキュメントと併せて、まずはロジスティック回帰モデルから実験を開始することをお勧めします。シンプルなモデルで手順を確認し、徐々に複雑なモデルへと進めてください。