ストーリー
田
田中VPoE
Model Registryにモデルを登録できるようになった。次はバージョニングの戦略だ。「どのバージョンが本番で動いているか」を常に把握できなければ、障害時に切り戻しもできない
あなた
Gitでコードはバージョン管理していますが、モデルのバージョン管理は何が違うんですか?
あ
田
田中VPoE
モデルはコードだけでなく、学習データ、ハイパーパラメータ、環境の組み合わせで決まる。この「再現性の4要素」を全てトラッキングするのがモデルバージョニングだ
あなた
なるほど。コードのcommit hashだけでは足りないんですね
あ
モデルバージョニングの必要性
再現性の4要素
| 要素 | 内容 | 管理方法 |
|---|
| コード | 学習スクリプト、前処理ロジック | Git(commit hash) |
| データ | 学習データ、検証データ | DVC / データカタログ |
| 環境 | Python版、ライブラリ版 | Docker / conda lock |
| パラメータ | ハイパーパラメータ、設定 | MLflow / config files |
バージョニング戦略
v1.0.0 → v1.1.0 → v1.2.0 → v2.0.0
│ │ │ │
minor minor minor major
(再学習) (特徴量追加) (HP調整) (アーキテクチャ変更)
セマンティックバージョニング for ML
| レベル | 変更内容 | 例 |
|---|
| Major (x.0.0) | モデルアーキテクチャ変更 | ロジスティック回帰 → XGBoost |
| Minor (1.x.0) | 特徴量追加・データ更新 | 新しい特徴量3つ追加 |
| Patch (1.0.x) | ハイパーパラメータ調整 | learning_rate変更 |
モデルライフサイクル管理
開発 → ステージング → 本番 → アーカイブ
│ │ │ │
Draft Staging Production Archived
MLflowでのステージ管理
from mlflow.tracking import MlflowClient
client = MlflowClient()
# モデルをステージングに昇格
client.transition_model_version_stage(
name="churn_predictor",
version=3,
stage="Staging"
)
# テスト通過後、本番に昇格
client.transition_model_version_stage(
name="churn_predictor",
version=3,
stage="Production"
)
モデルメタデータ
各バージョンに記録すべき情報:
| カテゴリ | 項目 |
|---|
| 性能 | accuracy, precision, recall, F1, AUC |
| データ | 学習データサイズ、期間、分布 |
| リソース | 学習時間、推論レイテンシ、モデルサイズ |
| 承認 | レビュワー、承認日、テスト結果 |
ロールバック戦略
| 方式 | 説明 | 切り替え時間 |
|---|
| Blue-Green | 旧版と新版を並行稼働 | 数秒 |
| カナリア | 段階的にトラフィックを移行 | 数分〜数時間 |
| 即時切り戻し | 旧版に即座に戻す | 数秒 |
まとめ
- モデルバージョニングはコード・データ・環境・パラメータの4要素を管理する
- セマンティックバージョニングでML特有の変更を分類できる
- ライフサイクル管理(Draft → Staging → Production → Archived)が重要
- ロールバック戦略を事前に設計しておく
チェックリスト
次のステップへ
バージョニングの基礎を学んだら、演習でMLflow Model Registryを使ったバージョン管理を実践しましょう。
推定読了時間: 30分