LESSON 30分

実験トラッキングの重要性

田中VPoE「Step 1でMLOpsの全体像を掴んだな。ここからはLevel 1達成に向けて、最初のコンポーネントである実験管理に取り組もう。」

あなた「今はNotebookのセルを何度も書き換えて、結果をスクリーンショットで記録している状態です。先週やった実験の再現もできません…」

田中VPoE「典型的なLevel 0だな。実験トラッキングを導入すれば、『あの時のベストモデルの設定は?』という質問に即答できるようになる。」

なぜ実験トラッキングが必要か

データサイエンティストの日常

機械学習の実験では、以下のサイクルを何十回と繰り返します:

1. 仮説を立てる(「learning_rateを下げれば精度が上がるはず」)
2. コードを変更する
3. 学習を実行する
4. 結果を評価する
5. 1に戻る

実験管理なしの問題

問題具体的な症状
再現不能「先週の最高精度モデル、どのパラメータだっけ?」
比較困難「100回の実験で、どの設定が一番良かった?」
知識喪失「退職した田中さんのモデル、再現できない」
重複実験「その設定、3ヶ月前に試して効果なかったよ」
コミュニケーション不全「Slack検索しても実験結果が見つからない」

実験トラッキングとは

実験トラッキングとは、ML実験のあらゆる情報を体系的に記録・比較・共有する仕組みです。

実験トラッキング = パラメータ + メトリクス + アーティファクト + メタデータ の一元管理

記録すべき情報

5つのカテゴリ

カテゴリ記録項目
パラメータハイパーパラメータ、設定値learning_rate=0.01, max_depth=5
メトリクス評価指標accuracy=0.92, loss=0.34
アーティファクト生成物model.pkl, confusion_matrix.png
ソース情報コードバージョン、データバージョンgit_hash=abc123, data_v=2.1
環境情報実行環境python=3.10, GPU=V100

パラメータの記録

# 記録すべきパラメータの例
params = {
    # モデルハイパーパラメータ
    "model_type": "XGBoost",
    "learning_rate": 0.01,
    "max_depth": 6,
    "n_estimators": 500,
    "subsample": 0.8,

    # データパラメータ
    "train_size": 0.8,
    "random_state": 42,
    "feature_selection": "top_20",

    # 前処理パラメータ
    "scaling": "StandardScaler",
    "missing_strategy": "median",
    "encoding": "OneHotEncoder",
}

メトリクスの記録

# 記録すべきメトリクスの例
metrics = {
    # 分類タスク
    "accuracy": 0.923,
    "precision": 0.915,
    "recall": 0.931,
    "f1_score": 0.923,
    "auc_roc": 0.967,

    # 学習過程
    "train_loss_final": 0.089,
    "val_loss_final": 0.142,
    "training_time_sec": 345.2,
    "best_epoch": 47,
}

時系列メトリクスの重要性

学習過程のメトリクスを時系列で記録すると、以下の分析が可能になります:

分析確認内容
過学習の検出train_lossは下がるがval_lossが上がるタイミング
収束の判断メトリクスが安定するエポック数
学習率の妥当性lossの振動パターン
早期停止の最適化patience設定の根拠

実験の命名規則と組織化

階層構造の設計

プロジェクト: 解約予測モデル
├── 実験グループ: baseline_comparison
│   ├── Run: logistic_regression_v1
│   ├── Run: random_forest_v1
│   └── Run: xgboost_v1
├── 実験グループ: feature_engineering
│   ├── Run: xgboost_top10_features
│   ├── Run: xgboost_top20_features
│   └── Run: xgboost_all_features
└── 実験グループ: hyperparameter_tuning
    ├── Run: xgboost_lr001
    ├── Run: xgboost_lr005
    └── Run: xgboost_lr01

命名規則のベストプラクティス

項目ルール良い例悪い例
Run名モデル名_変更内容_バージョンxgboost_top20feat_v2test_final_v3
実験グループ目的を明示hyperparameter_tuningexperiment_1
タグカテゴリを付与baseline, production_candidategood, try_this

実験比較のベストプラクティス

比較で確認すべきポイント

  1. 同一条件での比較: 変更した変数以外は固定されているか
  2. 統計的有意性: 性能差は偶然ではないか(交差検証の結果を確認)
  3. 計算コスト: 精度向上に対して学習時間の増加は妥当か
  4. 本番適用性: モデルサイズやレイテンシは要件を満たすか

比較表の例

RunModelLRFeaturesAccuracyF1AUC学習時間モデルサイズ
run_001XGBoost0.01200.9230.8910.9675min12MB
run_002XGBoost0.05200.9180.8850.9624min11MB
run_003LightGBM0.03200.9250.8930.9692min8MB
run_004LightGBM0.03500.9210.8900.9653min15MB

実験トラッキングツールの選択肢

ツール特徴適したチーム
MLflowOSS、幅広い機能、モデルレジストリ内蔵中小規模チーム
Weights & BiasesリッチなUI、チームコラボ、クラウドコラボ重視チーム
Neptune柔軟なメタデータ管理、軽量研究寄りチーム
Comet実験比較に強い、自動ログ実験多数のチーム
スプレッドシート手動記録非推奨

まとめ

項目ポイント
必要性再現性確保、比較効率化、知識共有のために不可欠
記録対象パラメータ、メトリクス、アーティファクト、ソース情報、環境情報
組織化階層構造で整理、命名規則を統一
比較の軸精度だけでなく計算コスト・モデルサイズも考慮

チェックリスト

  • 実験トラッキングが必要な理由を3つ以上説明できる
  • 記録すべき5つのカテゴリを列挙できる
  • 実験の命名規則と階層構造を設計できる
  • 実験比較のベストプラクティスを説明できる

次のステップへ

実験トラッキングの重要性を理解しました。次は、具体的なツールとしてMLflowの基本操作を学びましょう。


推定読了時間:30分