この記事の要点(30秒版)
- 実験管理で本当に困るのは、設定よりも結果の整理・比較
- MLflow は、パラメータと評価指標を記録して、Web UIで一覧・横並び比較・グラフ化できるツール
- 最小構成は
set_experiment→start_run→log_param/log_metricの3つだけ - 設定管理は Hydra に任せて、役割を分けると楽
ある日、過去の実験結果を見返そうとして、手が止まりました。
- 「このスコア、どの実験の結果だっけ?」
- 「AUCが一番高かったのって、どの条件だった?」
- 「似たような実験が多すぎて、違いが分からない」
ノートブックは大量にあり、メモも一応残っている。でも実験結果を横並びで比較できない。
「設定は覚えていなくてもいいから、せめて結果だけでも一覧で見たい」
そう思って使い始めたのが MLflow でした。この記事では次の内容を、実体験ベースでまとめます。
- 実験結果を手作業で管理することの限界
- MLflowを使うと何が楽になるのか
- 最低限押さえておきたい使い方
想定読者: 実験結果をメモやスプレッドシートに転記していて、比較がつらくなってきた人
1. なぜ「実験結果の管理」が難しくなるのか
実験管理というと、設定ファイルをどう管理するか、パラメータをどう再現するかに目が向きがちですが、実際に困るのは結果の整理です。
例えば、次のようなやり方をしていませんか。
- accuracy / AUC / loss をメモしているだけ
- CSVやスプレッドシートに転記している
- ノートブックを開いてセルを探し直す
このやり方だと、実験数が増えるほど追えなくなり、条件の差分を見落とし、「結局どれが良かったの?」が分からなくなります。MLflowは、この「結果の整理・比較」を仕組みで解決するツールです。
2. MLflowとは何をしてくれるツールか
機械学習の実験結果を管理・可視化するためのツールで、主に次のことができます。
- 実験結果(accuracy, loss など)を自動で記録
- 実験ごとのパラメータを保存
- 結果を一覧表示・横並び比較
- Web UI で直感的に確認
一言で言うと、実験結果をあとから比較できる形で残す仕組みです。
pip install mlflow
基本概念:Experiment と Run
MLflowでは、実験を次の2階層で管理します。
- Experiment: 実験のまとまり(例: LightGBMの検証)
- Run: その中の1回の実行
1回モデルを学習・評価するごとに、1つの Run が作られるイメージです。
3. 最小構成の使い方
import mlflow
# 実験名を指定
mlflow.set_experiment("baseline_experiment")
with mlflow.start_run():
# パラメータを記録
mlflow.log_param("model", "LightGBM")
mlflow.log_param("num_leaves", 40)
# 評価指標を記録
mlflow.log_metric("auc", 0.82)
mlflow.log_metric("accuracy", 0.75)
これだけで、「どんな条件で」「どんな数値が出たか」が記録されます。
学習の途中経過をグラフにしたいときは、step を付けて指標を複数回記録します。
for epoch, auc in enumerate([0.70, 0.78, 0.82]):
mlflow.log_metric("auc", auc, step=epoch)
4. MLflow UIで結果を確認する
記録を実行したのと同じフォルダで、次のコマンドを実行します。
mlflow ui
ブラウザで http://localhost:5000 にアクセスすると、実験結果が一覧表示されます。
起動する場所に注意: MLflow 3.17.2 で確認したところ、記録したフォルダに mlflow.db と mlruns/ が作られました。別のフォルダで mlflow ui を実行すると、記録が空に見えます。見えないときは、まず実行したフォルダに移動します。
5. MLflowを使ってよかった点
| 良かった点 | 具体的には |
|---|---|
| 実験結果を一覧で見られる | ノートブックを開き直さなくても、実験名・パラメータ・accuracy / AUC / loss が一覧で確認できる |
| 横並びで比較できる | 複数のRunを選んで Compare を押すと、変えたパラメータと結果の変化が一目で分かる |
| グラフで推移を確認できる |
step 付きで log_metric していれば、学習の進行やスコアの変化が自動でグラフ化される |
特に Compare は、「この改善、効いてたっけ?」がすぐ分かるようになって助かりました。細かい可視化コードを書かなくていいのも、地味ですがかなり助かります。
6. 設定管理は別のツールに任せるのがおすすめ
MLflowは結果の管理・比較に強い一方で、設定ファイルの構造化や実行ごとのディレクトリ管理は得意ではありません。そのため、役割を分けるのがおすすめです。
| 役割 | ツール |
|---|---|
| 設定管理(再現性) | Hydra |
| 結果の可視化・比較 | MLflow |
2つをつなぐ方法は、こちらにまとめています。
7. おわりに
MLflowを使い始めてから、「どの実験が一番良かったか」「何を変えたら改善したのか」を、感覚ではなく画面を見て判断できるようになりました。
実験管理というと難しそうに聞こえますが、まずは結果を記録して並べるだけでも、作業効率は大きく変わります。同じように、実験結果が散らかってきた、比較がつらくなってきたと感じている方の参考になれば嬉しいです。
見返し用チェック(自分用)
- 1回の学習 = 1 Run、実験のまとまり = Experiment
-
記録は
log_param(条件)とlog_metric(結果) -
推移をグラフにするなら
stepを付ける -
mlflow uiは、記録したフォルダで起動する