LESSON 30分

ストーリー

田中VPoE
ここまでデータ基盤の設計を学んできた。最後のピースは、そのデータを使ってMLモデルを運用する仕組み — MLOpsだ
あなた
MLOpsはDevOpsのML版ですよね。モデルの開発から本番運用までのパイプラインを自動化する
田中VPoE
その通り。ただし注意が必要だ。MLOpsはデータ基盤と密接に連携する。モデルの学習データの品質が低ければモデルも低品質になる。学習データの管理、フィーチャーの再利用、モデルのモニタリングがデータ基盤の延長線上にある
あなた
データウェアハウスのGold層やフィーチャーストアがMLの入力データになるんですね
田中VPoE
まさにそうだ。データ基盤とMLOpsを分離して設計すると、「モデルの学習データはどこ?」「オンラインの推論で使うフィーチャーとオフラインの学習で使うフィーチャーが異なる」という問題が生じる。今回はこれらを統合的に設計する

MLOpsの成熟度レベル

Google提唱の3レベル

レベル名称特徴自動化範囲
Level 0手動プロセスJupyter Notebookで手動実験、手動デプロイなし
Level 1MLパイプライン自動化学習パイプラインの自動化、CT(Continuous Training)学習の自動化
Level 2CI/CD for MLパイプラインコードのCI/CD、自動テスト学習 + デプロイの自動化

Level 1 のパイプライン構成

MLOps Level 1 パイプライン:

┌─────────────────────────────────────────────────────┐
│                                                     │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐          │
│  │ データ取得 │→│ 前処理    │→│ 学習     │          │
│  │ (DWH/    │  │ フィーチャー│  │ ハイパー  │          │
│  │  Feature │  │ エンジニア │  │ パラメータ │          │
│  │  Store)  │  │ リング    │  │ チューニング│          │
│  └──────────┘  └──────────┘  └─────┬────┘          │
│                                     │               │
│  ┌──────────┐  ┌──────────┐  ┌─────┴────┐          │
│  │ モニタリング│←│ デプロイ  │←│ 評価     │          │
│  │ ドリフト   │  │ A/Bテスト │  │ メトリクス │          │
│  │ 検知      │  │ カナリア  │  │ 検証     │          │
│  └──────────┘  └──────────┘  └──────────┘          │
│                                                     │
│  トリガー: スケジュール / データドリフト検知 / 手動     │
└─────────────────────────────────────────────────────┘

MLパイプラインの設計

主要コンポーネント

コンポーネント役割ツール例
実験管理ハイパーパラメータ、メトリクスの記録MLflow, Weights & Biases
パイプラインオーケストレーション学習パイプラインの実行管理Airflow, Kubeflow, Vertex AI Pipelines
モデルレジストリモデルのバージョン管理、ステージ管理MLflow Model Registry, Vertex AI Model Registry
サービングモデルのオンライン推論エンドポイントTensorFlow Serving, Triton, SageMaker Endpoints
モニタリングデータドリフト、モデルドリフトの検知Evidently, NannyML, WhyLabs

実験管理(MLflow)

# MLflow による実験管理の例
import mlflow

mlflow.set_experiment("churn_prediction")

with mlflow.start_run(run_name="xgboost_v3"):
    # ハイパーパラメータの記録
    mlflow.log_params({
        "max_depth": 6,
        "learning_rate": 0.1,
        "n_estimators": 100,
        "feature_store_version": "v2.3"
    })

    # モデルの学習
    model = train_model(X_train, y_train)

    # メトリクスの記録
    mlflow.log_metrics({
        "auc": 0.85,
        "precision": 0.78,
        "recall": 0.82,
        "f1": 0.80
    })

    # モデルの保存
    mlflow.sklearn.log_model(model, "model")

    # データセットの記録(リネージ)
    mlflow.log_input(
        mlflow.data.from_pandas(X_train),
        context="training"
    )

モデルモニタリング

データドリフトとモデルドリフト

ドリフト種類定義検知方法対策
データドリフト入力データの分布が学習時と変化PSI, KL-divergence, KS検定データ調査 → 再学習
コンセプトドリフト入力と出力の関係が変化モデルメトリクスの低下再学習 → 必要ならモデル再設計
ラベルドリフト予測対象の分布が変化ラベル分布の統計検定学習データの再サンプリング
ドリフト検知のフロー:

学習データ ──→ [PSI計算] ──→ 本番データ
  の分布           │           の分布

              PSI > 0.25
              ──→ アラート発報
              ──→ 再学習トリガー

PSI (Population Stability Index):
  < 0.10: 変化なし(安定)
  0.10-0.25: 小さな変化(監視継続)
  > 0.25: 大きな変化(再学習推奨)

Continuous Training(CT)

トリガー条件実行内容
スケジュール毎週月曜日最新データで再学習
データドリフトPSI > 0.25アラート + 再学習
メトリクス低下AUC < 0.80アラート + 再学習 + レビュー
新データ蓄積1万件の新ラベルデータ追加学習

「MLOpsの本質はモデルを本番に出すことではない。本番に出した後のモデルの品質を維持することだ。データドリフトを検知し、自動で再学習するサイクルが回って初めて、MLが継続的に価値を生む」 — 田中VPoE


まとめ

ポイント内容
MLOps成熟度Level 0(手動)→ Level 1(パイプライン自動化)→ Level 2(CI/CD)
パイプライン実験管理、オーケストレーション、レジストリ、サービング、モニタリング
ドリフト検知データドリフト(PSI)、コンセプトドリフト(メトリクス低下)を監視
Continuous Trainingデータドリフトやメトリクス低下をトリガーに自動再学習

チェックリスト

  • MLOpsの3つの成熟度レベルを説明できる
  • MLパイプラインの主要コンポーネントを理解した
  • データドリフトとコンセプトドリフトの違いと検知方法を理解した
  • Continuous Trainingのトリガー設計ができる

次のステップへ

次は「フィーチャーストア」を学びます。MLモデルの入力フィーチャーを一元管理し、学習と推論で一貫したフィーチャーを提供する仕組みを身につけましょう。


推定読了時間: 30分