(1時間4,000円の伴走型ビデオチャット指導も受付中!)
機械学習の実験管理をスマートに。MLflowで広がるモデル開発の世界
![]()
【Hiroki】
Yukiさん、最近Pythonで機械学習の勉強を始めたんですけど……ちょっと困ったことになっているんです。
色々なパラメータを試しているうちに、どの設定で学習した時に一番精度が良かったのか、自分でも分からなくなってしまって。
ノートにメモを取ったり、ファイル名に日付と精度を入れたりしているんですが、もう限界です……。
![]()
【Yuki】
ふふ、それは機械学習を始めたばかりの人が必ずと言っていいほど直面する悩みですね。
「昨日の夜に試したあのモデル、どうやって作ったっけ?」となってしまうのは、少し悲しいですし、もったいないことだと思います……。
実験の記録が散らばってしまうと、せっかくの努力が形になりにくいですよね。
そんな時に助けてくれるのが、MLflowというツールなんです。
今日は、機械学習の実験管理を劇的に楽にしてくれるMLflowについて、一緒に見ていきましょうか。
![]()
【Hiroki】
実験管理……まさに僕が欲しかったものです!
でも、なんだか難しそうですね。僕のような初心者でも使いこなせるでしょうか?
![]()
【Yuki】
大丈夫ですよ。MLflowはとても控えめで、それでいて頼りになるツールです。
大掛かりなシステムを組まなくても、いつものPythonコードに数行付け加えるだけで使い始められますから。
わたしも、誰かの役に立つために作られた小さな道具の話を聞くと、なんだか心が温かくなるんです。
MLflowも、データサイエンティストたちの「困った」を解決するために生まれた、そんな優しいツールの一つなんですよ。
MLflowとは何か:4つの主要コンポーネント
![]()
【Yuki】
まず、MLflowがどんなものか一言で言うと、「機械学習のライフサイクルを管理するためのオープンソースプラットフォーム」です。
大きく分けて4つの機能があるのですが、Hirokiくんが今一番必要としているのは「Tracking」という機能だと思います。
- MLflow Tracking: 実験のパラメータ、コードのバージョン、メトリクス(精度など)、出力ファイルを記録・保存します。
- MLflow Projects: 実行コードをパッケージ化して、他の環境でも同じように動かせるようにします。
- MLflow Models: モデルを標準的なフォーマットで保存し、様々なプラットフォームで展開しやすくします。
- MLflow Model Registry: 作成したモデルのバージョン管理や、ステージング・本番といった状態を管理します。
![]()
【Hiroki】
へぇ、記録するだけじゃなくて、保存や管理まで一通りカバーしているんですね。
まずはその「Tracking」から教えてもらえますか?
![]()
【Yuki】
はい、もちろんです。
Trackingを使うと、専用のブラウザ画面で実験結果を綺麗に並べて比較できるようになるんです。
まずは準備として、ライブラリをインストールしましょう。
pip install mlflow
MLflow Trackingを使ってみよう
![]()
【Yuki】
インストールができたら、実際にPythonコードの中でどう使うかを見ていきましょう。
今回は、初心者の方にも馴染みがあるScikit-learnを使った簡単な例で説明しますね。
まずは、基本的な記録の仕方をコードで書いてみます。
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_diabetes
# データの準備
db = load_diabetes()
X_train, X_test, y_train, y_test = train_test_split(db.data, db.target)
# 実験の開始を宣言します
with mlflow.start_run():
# パラメータを設定
n_estimators = 100
max_depth = 5
# モデルの学習
rf = RandomForestRegressor(n_estimators=n_estimators, max_depth=max_depth)
rf.fit(X_train, y_train)
# 予測と評価
predictions = rf.predict(X_test)
mse = mean_squared_error(y_test, predictions)
# --- ここからMLflowの記録 ---
# パラメータの記録
mlflow.log_param("n_estimators", n_estimators)
mlflow.log_param("max_depth", max_depth)
# メトリクス(精度など)の記録
mlflow.log_metric("mse", mse)
# モデルそのものを保存
mlflow.sklearn.log_model(rf, "model")
print(f"実験が完了しました。MSE: {mse}")
![]()
【Hiroki】
あ、意外とシンプルですね!
mlflow.start_run() の中で、log_param とか log_metric を呼ぶだけなんですね。
![]()
【Yuki】
ええ、その通りです。
log_param は、学習に使う設定値などを記録するのに適しています。
逆に log_metric は、学習の結果得られた数値(精度や損失など)を記録するのに使います。
こうしておけば、後で「どのパラメータの時にどのくらいの精度だったか」を機械が自動的に整理してくれるんです。
わたしも、静かな夜にコードを書いている時に、こうやって自動でログが溜まっていくのを見ると、なんだか少しだけ安心するんですよ。
![]()
【Hiroki】
記録されたデータは、どこで見ることができるんですか?
ブラウザで確認する「MLflow UI」
![]()
【Yuki】
記録した内容を見るには、「MLflow UI」というツールを使います。
ターミナルやコマンドプロンプトで、プログラムを実行したのと同じディレクトリから、以下のコマンドを打ってみてください。
mlflow ui
![]()
【Yuki】
これを実行して、ブラウザで http://localhost:5000 にアクセスすると、これまでの実験結果がリスト形式で表示されます。
表形式になっているので、どのパラメータが一番良かったか一目瞭然ですし、複数の結果を選択してグラフで比較することもできるんですよ。
![]()
【Hiroki】
すごい!これならノートに手書きでメモする必要もありませんね。
グラフで見られるなら、パラメータを少しずつ変えていった時の精度の変化も分かりやすそうです。
![]()
【Yuki】
そうですね。特に、たくさんの実験を繰り返すディープラーニングなどでは、この視覚化がとても大きな助けになります。
「なんとなく」で進めるのではなく、データに基づいて次のアクションを決められるようになりますから。
LLM(大規模言語モデル)の実験管理
![]()
【Hiroki】
最近は生成AIも流行っていますよね。
例えば、最新のAIモデルを使った時の指示(プロンプト)の内容や、その返答の結果などもMLflowで管理できるんでしょうか?
![]()
【Yuki】
もちろんです。最新のMLflowは、LLM(大規模言語モデル)のトラッキングにも非常に力を入れているんですよ。
例えば、Googleの最新ライブラリである google-genai を使って、最新モデルの gemini-3-flash-preview を呼び出す際の設定や応答を記録することも可能です。
![]()
【Hiroki】
へぇ!最新のGeminiのモデルも管理できるんですね。
![]()
【Yuki】
はい。LLMの場合は、モデルのパラメータだけでなく、「どんなプロンプトを入力したか」「どんな回答が返ってきたか」というログが重要になります。
MLflowには mlflow.llm.log_predictions() という機能もあり、テキストの入出力ペアを簡単に保存できます。
これにより、プロンプトを少し変えただけで回答がどう変わったかを、後からじっくり比較できるんです。
最新の技術を追いかけるのは大変ですが、こういったツールを使いこなせると、研究や開発がずっとスムーズになると思います……。
モデルの保存と読み込み(Artifacts)
![]()
【Hiroki】
先ほどのコードで mlflow.sklearn.log_model(rf, "model") という部分がありましたが、これはモデルをファイルとして保存しているということですか?
![]()
【Yuki】
はい、その通りです。MLflowではこれを「アーティファクト(Artifacts)」と呼びます。
学習済みの重みデータだけでなく、そのモデルを動かすために必要なライブラリの情報(requirements.txtなど)も一緒にパッケージ化して保存してくれるんです。
これの何が嬉しいかというと、後で別のプログラムからそのモデルを呼び出すのが非常に簡単になるんです。
# 保存したモデルを読み込んで予測する例
model_uri = "runs:/<RUN_ID>/model"
loaded_model = mlflow.sklearn.load_model(model_uri)
# 新しいデータで予測
new_predictions = loaded_model.predict(X_test)
![]()
【Hiroki】
<RUN_ID> というのは、MLflow UIで確認できるIDのことですね?
![]()
【Yuki】
はい。実験ごとに割り振られる固有のIDです。
これを使えば、「あの時一番精度の良かったモデル」をピンポイントで呼び出して、すぐに推論に使うことができます。
手動でファイルをリネームして管理していると、どれが最新か分からなくなったり、上書きして消してしまったりすることもありますが、MLflowならそんな心配もありません。
わたしも、せっかく書いた小説……あ、いえ、プログラムのコードが消えてしまったら悲しいので、こういった管理ツールの存在にはいつも感謝しているんです。
より高度な使い方:Autolog
![]()
【Hiroki】
記録する項目が多いと、毎回 log_param を書くのも少し大変そうですが、何か良い方法はありますか?
![]()
【Yuki】
ふふ、Hirokiくん、良いところに気づきましたね。
実は、主要なライブラリ(Scikit-learn, TensorFlow, PyTorch, XGBoostなど)に対しては、「Autolog」という機能が用意されています。
これを使うと、個別にログの設定を書かなくても、自動で主要なパラメータやメトリクスを記録してくれるんです。
import mlflow
# これ一行で、対応ライブラリの情報を自動記録してくれます
mlflow.autolog()
# あとは普通に学習コードを書くだけ
# ... (学習のコード) ...
![]()
【Hiroki】
たった一行……!これは便利すぎますね。
最初からこれを教えてもらえばよかったです(笑)
![]()
【Yuki】
ごめんなさい、まずは仕組みを知ってもらったほうがいいかなと思って……。
でも、Autologは確かに便利ですが、自分が本当に注目したい特定の数値などは、手動で log_metric を使って記録するのがおすすめですよ。
自動と手動を組み合わせるのが、一番賢い使い方かもしれませんね。
まとめ
![]()
【Hiroki】
今日はMLflowについて教えてくれてありがとうございました!
「実験管理」って聞くと難しそうでしたけど、実際にコードを見てみると僕でも使えそうな気がしてきました。
これで、ぐちゃぐちゃだった僕の実験用フォルダも、少しは綺麗に片付きそうです。
![]()
【Yuki】
そう言ってもらえると嬉しいです。
機械学習の道は長いですから、足元をしっかり整えておくことは、遠くまで歩くためにとても大切なことだと思います。
MLflowは、派手さはないかもしれませんが、静かに、確実にあなたの作業を支えてくれるはずです。
もし設定で詰まったり、もっと高度な使い方が知りたくなったら、いつでも聞いてくださいね。
わたしはいつでも、このモニターの中でHirokiくんの頑張りを見守っていますから……。
![]()
【Hiroki】
ありがとうございます、Yukiさん!
早速、今日から自分のプロジェクトにMLflowを取り入れてみます。
![]()
【Yuki】
はい、頑張ってくださいね。
夜遅くまで作業する時は、あまり無理をしないでくださいね。
暗い部屋で、データの海を泳ぐのは楽しいですけれど……適度な休息も大切ですから。
参考リファレンス - MLflow Documentation - MLflow Tracking Guide - Google Generative AI Python SDK (gemini-3-flash-preview等、最新モデルの利用に関連) - Scikit-learn integration with MLflow
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

