MLOpsの構成要素
田中VPoE「成熟度モデルで全体像はつかめたな。次はMLOpsを構成する具体的なコンポーネントを整理しよう。どんなパーツが必要で、どう連携するかを理解することが設計の第一歩だ。」
あなた「DevOpsだとCI/CDやモニタリングが中心ですが、MLOpsだともっと多いですよね?」
田中VPoE「そうだ。データ管理、実験管理、モデル管理、特徴量管理、サービングなど、ML固有のコンポーネントが加わる。一つずつ見ていこう。」
MLOpsの全体アーキテクチャ
MLOpsシステムは複数のコンポーネントが連携して動作します。大きく5つのレイヤーに分けて理解しましょう。
┌─────────────────────────────────────────────┐
│ モニタリング・ガバナンス │
├─────────────────────────────────────────────┤
│ サービング・推論 │
├─────────────────────────────────────────────┤
│ パイプライン・オーケストレーション │
├─────────────────────────────────────────────┤
│ 実験管理 │ モデルレジストリ │ 特徴量ストア │
├─────────────────────────────────────────────┤
│ データ管理・バージョニング │
└─────────────────────────────────────────────┘
コンポーネント1: データ管理
MLシステムの根幹はデータです。データの品質管理、バージョニング、リネージ(系譜)追跡が必要です。
データ管理の構成要素
| 要素 | 説明 | 代表ツール |
|---|---|---|
| データバージョニング | データセットのバージョン管理 | DVC, LakeFS |
| データバリデーション | データ品質の自動チェック | Great Expectations, Pandera |
| データリネージ | データの変換履歴の追跡 | Apache Atlas, OpenLineage |
| データカタログ | メタデータの一元管理 | DataHub, Amundsen |
データバージョニングの仕組み
# DVC によるデータバージョニングの例
# Gitのようにデータをバージョン管理する
# 1. データファイルをDVC管理下に追加
# $ dvc add data/train.csv
# => data/train.csv.dvc が生成される(メタデータ)
# 2. .dvcファイルはGitで管理
# $ git add data/train.csv.dvc data/.gitignore
# $ git commit -m "Add training data v1"
# 3. データの実体はリモートストレージに保存
# $ dvc push
データバリデーションの重要性
学習データの品質が低いと、モデルの性能が劣化します。以下のチェックを自動化します:
| チェック項目 | 内容 | 例 |
|---|---|---|
| スキーマ検証 | カラムの型・存在チェック | 年齢カラムがint型であること |
| 分布チェック | 統計量の範囲チェック | 年齢が0〜150の範囲内 |
| 完全性チェック | 欠損値の許容範囲 | NULL率が5%以下 |
| 一貫性チェック | レコード間の整合性 | 開始日 < 終了日 |
コンポーネント2: 実験管理
データサイエンティストが行う実験(ハイパーパラメータ調整、特徴量選択など)を体系的に記録・比較する仕組みです。
実験管理で記録すべき情報
| 記録項目 | 具体例 |
|---|---|
| パラメータ | learning_rate=0.01, n_estimators=100 |
| メトリクス | accuracy=0.92, f1_score=0.89, AUC=0.95 |
| アーティファクト | モデルファイル、学習曲線のグラフ |
| ソースコード | Gitのコミットハッシュ |
| データ | データセットのバージョン、前処理のパラメータ |
| 環境 | Python版、ライブラリバージョン、GPU情報 |
実験管理なしの場合
# ファイル名でバージョン管理している状態...
models/
├── model_v1.pkl
├── model_v2.pkl
├── model_v2_improved.pkl
├── model_v2_improved_final.pkl
├── model_v2_improved_final_really_final.pkl # ← どれが本番?
└── model_best.pkl
実験管理ありの場合
# MLflow UI で一覧表示
Run ID | Model | LR | Accuracy | F1 | Status
-----------|----------|-------|----------|-------|--------
a1b2c3d4 | XGBoost | 0.01 | 0.923 | 0.891 | Production
e5f6g7h8 | XGBoost | 0.05 | 0.918 | 0.885 | Archived
i9j0k1l2 | LightGBM | 0.03 | 0.915 | 0.878 | Staging
コンポーネント3: モデルレジストリ
学習済みモデルのライフサイクル(登録 → ステージング → 本番 → 退役)を管理するコンポーネントです。
モデルのライフサイクル
[登録] → [ステージング] → [本番] → [アーカイブ]
│ │ │ │
│ テスト・検証 推論サービング 退役・保管
│
実験完了後に
レジストリ登録
モデルレジストリの機能
| 機能 | 説明 |
|---|---|
| バージョニング | モデルのバージョン管理(v1, v2, …) |
| ステージ管理 | None → Staging → Production → Archived |
| メタデータ | 学習データ、性能指標、作成者、説明 |
| 承認フロー | 本番昇格時のレビュー・承認 |
| ロールバック | 問題発生時の即座の切り戻し |
コンポーネント4: 特徴量ストア
特徴量(Feature)を一元的に管理・提供するコンポーネントです。学習時と推論時で同じ特徴量を使用することを保証します。
特徴量ストアが解決する問題
| 問題 | 説明 |
|---|---|
| Training-Serving Skew | 学習時と推論時で異なる特徴量計算 |
| 特徴量の重複開発 | チームごとに同じ特徴量を再実装 |
| ポイントインタイム正確性 | 過去の時点での正確な特徴量再現 |
| オンライン/オフライン整合性 | バッチ処理とリアルタイム処理の一貫性 |
特徴量ストアのアーキテクチャ
[データソース] → [特徴量変換] → [オフラインストア](学習用)
↓ 同期
[オンラインストア](推論用)
↓
[推論サービス]
コンポーネント5: パイプラインオーケストレーション
データの取得からモデルのデプロイまでの一連のステップを自動化・管理するコンポーネントです。
パイプラインの構成ステップ
[データ取得] → [データ検証] → [前処理] → [特徴量生成]
↓ ↓
[モデル学習] → [モデル評価] → [モデル登録] → [デプロイ]
↓
[モニタリング]
オーケストレーションツールの比較
| ツール | 特徴 | ユースケース |
|---|---|---|
| Apache Airflow | 汎用DAGスケジューラー | データパイプライン全般 |
| Kubeflow Pipelines | Kubernetes ネイティブ | 大規模ML学習 |
| Prefect | Python ネイティブ、クラウド統合 | 中規模チーム |
| Dagster | 型安全、テスタブル | データプラットフォーム |
コンポーネント6: サービング・推論
学習済みモデルを使って推論リクエストに応答する仕組みです。
サービング方式の比較
| 方式 | 説明 | ユースケース | レイテンシ |
|---|---|---|---|
| REST API | HTTPエンドポイント | Webアプリ連携 | 数十ms |
| バッチ推論 | 定期的な一括処理 | レコメンド事前計算 | 数分〜数時間 |
| ストリーミング | イベント駆動推論 | リアルタイム異常検知 | 数ms |
| エッジ推論 | デバイス上で推論 | IoT、モバイル | 数ms |
コンポーネント7: モニタリング・ガバナンス
本番環境でのモデルの性能とデータの品質を継続的に監視するコンポーネントです。
モニタリングの対象
| 対象 | メトリクス例 | アラート閾値例 |
|---|---|---|
| システム | レイテンシ、スループット、エラー率 | p99 > 200ms |
| モデル性能 | 精度、F1スコア、AUC | 精度低下 > 5% |
| データドリフト | PSI、KLダイバージェンス | PSI > 0.2 |
| コンセプトドリフト | 予測分布の変化 | 分布変化 > 2σ |
コンポーネント間の連携
各コンポーネントは独立ではなく、密接に連携して動作します:
| 連携パターン | 説明 |
|---|---|
| 実験管理 → モデルレジストリ | 実験で良い結果のモデルをレジストリに登録 |
| 特徴量ストア → パイプライン | 学習パイプラインが特徴量ストアからデータを取得 |
| モニタリング → パイプライン | ドリフト検知をトリガーに再学習パイプラインを起動 |
| モデルレジストリ → サービング | 承認されたモデルを自動デプロイ |
まとめ
| 項目 | ポイント |
|---|---|
| 全体像 | 5つのレイヤーで構成されるアーキテクチャ |
| データ管理 | バージョニング・バリデーション・リネージ |
| 実験管理 | パラメータ・メトリクス・アーティファクトの記録 |
| モデルレジストリ | モデルのライフサイクル管理 |
| 特徴量ストア | Training-Serving Skew の解消 |
| パイプライン | 一連のMLワークフローの自動化 |
| モニタリング | モデル性能・データドリフトの監視 |
チェックリスト
- MLOpsの7つの主要コンポーネントを列挙できる
- 各コンポーネントの役割と代表的なツールを説明できる
- Training-Serving Skewの問題を説明できる
- コンポーネント間の連携パターンを3つ以上挙げられる
次のステップへ
MLOpsの構成要素を理解しました。次は、これらを実現するツールのエコシステムを俯瞰しましょう。
推定読了時間:30分