mlflow について
MLflowは、実験の追跡、モデルのパッケージ化、デプロイを行うオープンソースの機械学習プラットフォームです。再現性のあるワークフローを求めるMLチーム向けに、Web UI、Python API、複数の成果物ストレージを備えています。
主な機能
- 01実験パラメーター、指標、成果物の記録
- 02標準形式でのモデルパッケージ化
- 03REST APIまたはKubernetes経由のデプロイ
- 04Web UIとPython API
- 05複数バックエンドでの成果物保存
活用シーン
- 01ハイパーパラメーター実験結果の比較
- 02学習指標とモデルファイルの記録
- 03評価済みモデルの登録とデプロイ
- 04実験追跡のワークフローへの統合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill mlflowインストール後、Claude Code で/mlflowを入力して読み込まれたか確認します。
詳細
mlflow
目的
MLflowは、機械学習のライフサイクルにおける実験の追跡、MLモデルのパッケージ化、デプロイを行うためのオープンソースプラットフォームです。再現性とコラボレーションを実現するため、ワークフローの標準化に役立ちます。
使用する場面
複数のML実験を管理する場合、モデルを比較する場合、本番環境にデプロイする場合は、MLflowを使用してください。Jupyterノートブックでのハイパーパラメーター調整や、AWSやAzureなどのクラウド環境でのモデルデプロイのスケーリングなど、MLOpsパイプラインに取り組むチームに最適です。
主な機能
- 実験の追跡:各実行のメトリクス、パラメーター、アーティファクトを記録します。
- モデルのパッケージ化:共有しやすい標準形式(例:MLmodel)でモデルを保存します。
- モデルのデプロイ:モデルをREST APIとして提供したり、Kubernetesなどのプラットフォームと統合したりできます。
- UIとAPI:可視化用のWeb UIと、プログラムからアクセスするためのPython APIを提供します。
- アーティファクトのストレージ:出力の保存先として、S3、Azure Blob、ローカルファイルなどのバックエンドに対応しています。
使用パターン
まず、トラッキングサーバーを初期化するか、ローカルバックエンドを使用します。一般的なワークフローでは、スクリプトにMLflowをインポートし、トレーニング中にメトリクスを記録し、評価後にモデルを登録します。必ず最初にトラッキングURIを設定してください(例:環境変数を使用)。本番環境では、モデルをパッケージ化し、MLflowのサービングツールを使ってデプロイします。再現性が失われないよう、追跡せずに実験を実行することは避けてください。
主なコマンド/API
簡単な操作にはMLflow CLIを、コードへの統合にはPython APIを使用します。
-
CLIコマンド:
- トラッキングサーバーを起動する:
mlflow server --host 0.0.0.0 --port 5000 - 実験を実行する:
mlflow run . -e main --experiment-name my_exp - スクリプトでメトリクスを記録する:パラメーターには
--param key=valueなどのフラグを使用します。 - モデルをデプロイする:
mlflow models serve -m models:/MyModel/1 -p 5001
- トラッキングサーバーを起動する:
-
Python APIの例:
- トラッキングを開始する:
import mlflow mlflow.set_tracking_uri("http://localhost:5000") with mlflow.start_run(): mlflow.log_param("alpha", 0.1) - メトリクスを記録する:
mlflow.log_metric("accuracy", 0.95) mlflow.log_artifact("model.pkl") - モデルを登録する:
mlflow.sklearn.log_model(sk_model, "model") mlflow.register_model("runs:/<run_id>/model", "MyModel")
- トラッキングを開始する:
設定形式には、プロジェクト仕様用のYAMLが含まれます(例:mlflow projectsでのentry_points: main: parameters: alpha: {type: float, default: 0.1})。セキュリティ保護されたサーバーを使用する場合は、export MLFLOW_TRACKING_USERNAME=$YOUR_USERNAMEやexport MLFLOW_TRACKING_PASSWORD=$YOUR_PASSWORDなどを使って、認証用の環境変数を設定します。
統合に関する注意事項
Scikit-learn、TensorFlow、PyTorchなどのフレームワークとは、それぞれのロギング関数(例:mlflow.sklearn.autolog())を使ってMLflowを統合できます。クラウドストレージを使用する場合は、S3との互換性のためにMLFLOW_S3_ENDPOINT_URLを設定します。Airflowなどのツールと組み合わせる場合は、MLflowのAPIを使ってDAGから実行を開始します。APIを呼び出す前に、必ずos.environ['MLFLOW_TRACKING_URI'] = 'http://your-server:5000'でトラッキングURIを指定してください。リモート環境で認証する場合は、APIキー用に$MLFLOW_TRACKING_TOKENなどの環境変数を使用します。
エラー処理
到達できないトラッキングURIや無効なモデル形式などの問題を確認し、一般的なエラーに対処します。たとえば、サーバーが停止している場合は、PythonでMlflowExceptionを捕捉します:
try:
mlflow.set_tracking_uri("http://localhost:5000")
except mlflow.exceptions.MlflowException as e:
print(f"Error: {e}. Check server status and retry.")
CLIでは、失敗した実行をデバッグするために--verboseで詳細モードを使用します。記録する前に入力を検証してください(例:メトリクスが数値であることを確認します)。アーティファクトのアップロードに失敗した場合は、ストレージのアクセス許可を確認するか、--backend-store-uri sqlite:///mlflow.dbなどの代替バックエンドを使用します。
具体的な使用例
-
Scikit-learn モデルの追跡:スクリプト内でモデルをトレーニングし、記録します。
import mlflow.sklearn from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() model.fit(X_train, y_train) with mlflow.start_run(): mlflow.sklearn.log_model(model, "rf_model")次に、
mlflow uiで実行を表示し、メトリクスを比較します。 -
トレーニング済みモデルのデプロイ:トレーニング後、パッケージ化してサーブします。
mlflow models build-docker -m runs:/<run_id>/model -n my_imageを実行します。次に、docker run -p 5000:8080 my_imageでデプロイし、curl -d 'json data' http://localhost:5000/invocationsでエンドポイントにクエリを送信します。
グラフの関係性
- 関連するクラスター:aimlops(Kubeflow や DVC などの他の MLOps ツールと連携します)。
- タグ:mlflow(直接一致)、mlops(ワークフローの統合)、machine-learning(中核機能)。
- 依存関係:Python の ML ライブラリ(scikit-learn など)やストレージシステム(S3 など)と組み合わせて使用されることがよくあります。