§4 モデルのサービングとスケール
訓練済みモデルを本番環境で配信する全領域。比重 ~20%、出題数の中核。
このセクションの結論
オンラインは Endpoint + Feature Store、バッチは Batch Prediction or BQML。
ロールアウトは カナリア が安全、影響ゼロなら シャドウ。
LLM は L4/TPU v5e + vLLM + プロンプトキャッシング でコスト最適。
⚖ バッチ vs オンライン推論
| バッチ推論 | オンライン推論 | |
|---|---|---|
| 入力 | データセット(GCS/BQ) | 単発リクエスト(API) |
| レイテンシ | 数分〜時間 | ms〜100ms |
| スループット | 一度に大量 | 高 QPS |
| 用途 | 夜間スコアリング、レポート | チャット、推薦、検知 |
| コスト | 安い | 高い(常時起動) |
🏗 サービング基盤の選択肢
Agent Platform Inference
マネージド推論。Model Registry → Endpoint → API。第一候補。旧 Vertex AI Prediction / Endpoints。
Cloud Run
サーバーレスコンテナ。0 → N にスケール。軽量モデル + スパイク + アイドル長で最適。GPU 対応も登場。
GKE
完全制御。KServe / Triton / 独自構成。複雑なオートスケール・複数モデル併存に。
Model Garden (MaaS)
Gemini / Llama / Mistral 等を API としてそのまま利用。トークン課金、ホスティング不要。
📚 Model Registry
from google.cloud import aiplatform
# 訓練後にモデルアップロード
model = aiplatform.Model.upload(
display_name="churn-predictor",
artifact_uri="gs://my-bucket/models/churn/v2/",
serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-3:latest",
)
# Endpoint にデプロイ
endpoint = model.deploy(
machine_type="n1-standard-4",
min_replica_count=1,
max_replica_count=3,
traffic_split={"0": 100},
)
Endpoint
├─ Model v1 (50% traffic)
├─ Model v2 (40% traffic)
└─ Model v3 (10% traffic) ← カナリア
🚦 ロールアウト戦略
| A/B テスト | カナリア | シャドウ | ブルー/グリーン | |
|---|---|---|---|---|
| 目的 | 勝者選定 | 安全な切替 | 性能観測 | 即ロールバック |
| トラフィック | 例 50/50 | 5% → 段階拡大 | 並行で新も処理、結果は返さない | 2 環境並列稼働 |
| ユーザー影響 | あり | 小 | なし | 切替時のみ |
ひっかけ要注意
カナリア = 少量だがユーザー影響あり、シャドウ = 本番影響ゼロ。混同しないこと。
⚡ スケーリングとレイテンシ
主要ボトルネック
- コールドスタート(min=0 で 5〜30秒)
- モデル読み込み(10GB+ で数十秒)
- 特徴量取得(DB アクセス 50〜200ms)
- 推論計算(モデルサイズ比例)
- ネットワーク(リージョン跨ぎで 100ms+)
主要対策
- min_replicas ≥ 1 でコールドスタート回避
- Feature Store Online で ms 級取得
- 量子化 / GPU 化 / バッチ化
- 同一リージョン配置
- vLLM / Triton で LLM 高スループット
LLM 特有の最適化
vLLM / Continuous Batching
生成中のリクエストにも動的に合流させてスループット最大化
KV キャッシング
プロンプト共通部分のキャッシュ。プロンプトキャッシングと組み合わせ
量子化(INT8 / GGUF)
VRAM 削減、小型 GPU で大型モデルを動かす
モデル蒸留
大モデル → 小モデルで知識転移
🗂 Feature Store オンライン取得
# 推論サーバ側のコード(疑似)
features = feature_store.get_online_features(
entity_type="user",
entity_ids=[user_id],
feature_ids=["avg_purchase_30d", "session_count_7d", "ltv"],
)
prediction = model.predict([request_features + features])
Online Store の選択肢:Bigtable-backed(高スループット)か Optimized Online Store(マネージド)。
📱 Edge デプロイ
| TFLite | Edge TPU (Coral) | Gemini Nano | |
|---|---|---|---|
| 対応 | TF / Keras | TFLite + 量子化 | Android Edge AI |
| 強み | 軽量・モバイル標準 | 低消費電力・高速 | オンデバイス LLM |
| 用途 | モバイル分類 | IoT 物体検出 | モバイル AI |
Edge には量子化必須
INT8 / Float16 量子化 でサイズ縮小・推論高速化・消費電力削減。TFLite Converter で post-training quantization。
🛡 セキュアなサービング
Private Endpoint
VPC ピアリング / Private Service Connect 経由。インターネット非経由でセキュリティ強化
IAM + API Gateway
サービスアカウントベース認証、API Key / OAuth / JWT
CMEK + TLS
暗号化キー自社管理 + TLS 必須
⚠️ 試験での頻出ひっかけ
| シナリオ | 不正解 | 正解 |
|---|---|---|
| "夜間に全顧客スコアリング" | Endpoint で順次 | Batch Prediction Job |
| "リアルタイム推薦 50ms" | バッチ + キャッシュ | Endpoint + Feature Store |
| "軽量、アイドル長、コスト最優先" | Endpoint min=1 | Cloud Run min=0 |
| "100B LLM 高スループット" | T4 | A100/H100 or TPU v5e + vLLM |
| "機密データの推論" | Public Endpoint | Private Endpoint (PSC) |
| "新モデル安全に展開" | 即時全置換 | カナリア |
| "性能比較で本番影響ゼロ" | A/B | シャドウデプロイ |
| "IoT カメラで物体検出" | クラウド API | Edge TPU (Coral) |
| "訓練/推論で前処理ズレ" | クライアント側で全部 | TFT or Feature Store |
| "複数モデル切替で各々別 Endpoint" | そのまま | 同 Endpoint の traffic_split |
📝 セルフチェック(6 問)
Q1
夜間に全顧客の解約スコアを計算する。最適な推論方式は?
正解: A。コスト最適。
Q2
新モデルを 5% から段階的に拡大したい。戦略は?
正解: B。
Q3
新モデルの性能を本番ユーザーに影響ゼロで計測したい。
正解: C。シャドウは結果を返さず観測のみ。
Q4
軽量モデル、アイドル時間が長い、コスト最優先。
正解: B。スケールゼロでコスト最適。
Q5
機密データを処理する LLM 推論。インターネット非経由が必須。
正解: B。
Q6 複数選択
PyTorch と TensorFlow を同 Endpoint に同居させたい。実装 2 つ:
正解: A, B。