Ultralytics YOLO向けMLflow統合#
はじめに#
実験のロギングは、さまざまなメトリクス、パラメータ、成果物の追跡を可能にする機械学習ワークフローの重要な側面です。これは、モデルの再現性の向上、問題のデバッグ、およびモデル性能の改善に役立ちます。リアルタイムの物体検出機能で知られるUltralytics YOLOは、機械学習のライフサイクル全体を管理するためのオープンソースプラットフォームであるMLflowとの統合を提供します。
本ドキュメントページは、お使いのUltralytics YOLOプロジェクトでMLflowのログ記録機能を設定および利用するための包括的なガイドです。
MLflowとは何ですか?#
MLflowは、エンドツーエンドの機械学習ライフサイクルを管理するためにDatabricksによって開発されたオープンソースプラットフォームです。実験の追跡、コードの再現可能な実行へのパッケージ化、モデルの共有とデプロイのためのツールが含まれています。MLflowは、あらゆる機械学習ライブラリおよびプログラミング言語と連携するように設計されています。
機能#
- 指標(メトリクス)のログ記録: 各エポックの終了時およびトレーニング終了時に指標を記録します。
- パラメータのログ記録: トレーニングで使用されたすべてのパラメータを記録します。
- アーティファクトのログ記録: トレーニング終了時に、ウェイトや設定ファイルを含むモデルアーティファクトを記録します。
設定と前提条件#
MLflowがインストールされていることを確認してください。インストールされていない場合は、pipを使用してインストールします:
pip install mlflowUltralyticsの設定でMLflowロギングが有効になっていることを確認してください。通常、これは設定の mlflow キーによって制御されます。詳細については、設定ページを参照してください。
Python環境内で、settingsオブジェクトに対してupdateメソッドを呼び出して設定を変更します。
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()使用方法#
コマンド#
-
プロジェクト名の設定: 環境変数を使用してプロジェクト名を設定できます:
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMEまたは、YOLOモデルのトレーニング時に
project=<project>引数を使用します(例:yolo train project=my_project)。 -
実行名の設定: プロジェクト名の設定と同様に、環境変数を使用して実行名を設定できます:
export MLFLOW_RUN=YOUR_RUN_NAMEまたは、YOLOモデルのトレーニング時に
name=<name>引数を使用します(例:yolo train project=my_project name=my_name)。 -
ローカルMLflowサーバーの起動: 追跡を開始するには、以下を使用します:
mlflow server --backend-store-uri runs/mlflowこれにより、デフォルトで
http://127.0.0.1:5000にローカルサーバーが起動し、すべてのMLflowログが 'runs/mlflow' ディレクトリに保存されます。トレーニング実行を別のトラッキングサーバーに向けるには、トレーニング前にMLFLOW_TRACKING_URIをエクスポートします:export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
トレーニング後もMLflowの実行をアクティブに保つ: デフォルトでは、Ultralyticsはトレーニングが完了すると自動的にMLflowの実行を終了します。実行を開いたままにするには(たとえば、同じノートブックから追加のメトリクスや成果物をログに記録するため)、トレーニング前に
MLFLOW_KEEP_RUN_ACTIVEをTrueに設定します:export MLFLOW_KEEP_RUN_ACTIVE=True値は大文字と小文字を区別せずに解析されます。文字列
trueのみがこの動作を有効にし、その他の値(未設定を含む)では実行を終了するデフォルトの動作が維持されます。後でmlflow.end_run()を使用して手動で閉じることを忘れないでください。 -
MLflowサーバーインスタンスの停止: 実行中のすべてのMLflowインスタンスを停止するには、以下を実行します:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9
ログ記録#
ロギングは、on_pretrain_routine_end、on_fit_epoch_end、および on_train_end の各コールバック関数によって処理されます。これらの関数はトレーニングプロセスのそれぞれの段階で自動的に呼び出され、パラメータ、メトリクス、および成果物のロギングを処理します。
例#
-
カスタムメトリクスのロギング:
on_fit_epoch_endが呼び出される前にtrainer.metrics辞書を変更することで、ログに記録するカスタムメトリクスを追加できます。 -
実験の表示: ログを表示するには、MLflowサーバー(通常は
http://127.0.0.1:5000)に移動し、実験と実行を選択します。
-
実行の表示: 実行は実験内の個々のモデルです。実行をクリックすると、アップロードされたアーティファクトやモデルのウェイトを含む実行の詳細を確認できます。

MLflowの無効化#
MLflowのログ記録をオフにするには:
yolo settings mlflow=False結論#
Ultralytics YOLOとのMLflowロギング統合により、機械学習の実験を効率的に追跡できます。パフォーマンス指標の監視と成果物の効果的な管理が可能になり、堅牢なモデルの開発とデプロイに役立ちます。詳細については、MLflowの公式ドキュメントをご覧ください。
よくある質問 (FAQ)#
Ultralytics YOLOでMLflowのログ記録を設定するにはどうすればよいですか?#
Ultralytics YOLOでMLflowのログ記録を設定するには、まずMLflowがインストールされていることを確認する必要があります。pipを使用してインストールできます:
pip install mlflow次に、Ultralyticsの設定でMLflowロギングを有効にします。これは、mlflow キーを使用して制御できます。詳細については、設定ガイドを参照してください。
from ultralytics import settings
# Update a setting
settings.update({"mlflow": True})
# Reset settings to default values
settings.reset()最後に、追跡のためにローカルMLflowサーバーを起動します:
mlflow server --backend-store-uri runs/mlflowUltralytics YOLOとMLflowを使用して、どのような指標とパラメータを記録できますか?#
MLflowを統合したUltralytics YOLOでは、トレーニングプロセス全体を通じてさまざまな指標、パラメータ、アーティファクトの記録をサポートしています:
- メトリクスのロギング: 各エポックの終了時およびトレーニングの完了時にメトリクスを追跡します。
- パラメータのログ記録: トレーニングプロセスで使用されるすべてのパラメータを記録します。
- アーティファクトのログ記録: トレーニング後、ウェイトや設定ファイルなどのモデルアーティファクトを保存します。
詳細については、Ultralytics YOLOトラッキングドキュメントをご覧ください。
MLflowのログ記録を有効にした後、無効にすることはできますか?#
はい、設定を更新することでUltralytics YOLOのMLflowログ記録を無効にできます。CLIを使用した方法は以下の通りです:
yolo settings mlflow=Falseさらなるカスタマイズと設定のリセットについては、設定ガイドを参照してください。
Ultralytics YOLOの追跡用にMLflowサーバーを開始および停止するにはどうすればよいですか?#
Ultralytics YOLOでの実験を追跡するためのMLflowサーバーを開始するには、次のコマンドを使用します:
mlflow server --backend-store-uri runs/mlflowこのコマンドを実行すると、デフォルトで http://127.0.0.1:5000 にローカルサーバーが起動します。実行中のMLflowサーバーインスタンスを停止する必要がある場合は、次のbashコマンドを使用します:
ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9その他のコマンドオプションについては、コマンドセクションを参照してください。
トレーニング終了後もMLflowの実行をアクティブに保つにはどうすればよいですか?#
トレーニングの前に、MLFLOW_KEEP_RUN_ACTIVE 環境変数を True に設定します:
export MLFLOW_KEEP_RUN_ACTIVE=Trueデフォルトではこれは False であるため、Ultralyticsはトレーニングの完了時に mlflow.end_run() を一度呼び出します。MLFLOW_KEEP_RUN_ACTIVE=True を使用すると、実行が開いたままになるため、同じPythonセッションから追加のメトリクス、パラメータ、または成果物をログに記録できます。終了したら、mlflow.end_run() を使用して自分で閉じます。値は大文字と小文字を区別せずに解析され、true のみがこの動作を有効にします。
Ultralytics YOLOとMLflowを統合して実験追跡を行うメリットは何ですか?#
MLflowとUltralytics YOLOを統合することで、機械学習実験の管理においていくつかのメリットが得られます:
- 実験追跡の強化: 異なる実行とその結果を簡単に追跡・比較できます。
- モデルの再現性向上: すべてのパラメータとアーティファクトを記録することで、実験の再現性を確保します。
- パフォーマンス監視: 時間の経過に伴うパフォーマンス指標を可視化し、モデル改善のためのデータに基づいた意思決定を支援します。
- ワークフローの効率化: ログ記録プロセスを自動化し、手動での追跡ではなくモデル開発に集中できるようにします。
- コラボレーション開発: 実験結果をチームメンバーと共有し、コラボレーションとナレッジ共有を促進します。
Ultralytics YOLOでのMLflowの設定と活用の詳細については、MLflow Integration for Ultralytics YOLOのドキュメントをご覧ください。