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=True1、true、yes、on、y、tの値でこの動作が有効になります(大文字と小文字は区別されません)。設定されていない変数を含め、それ以外の値では、デフォルトどおり実行が終了します。その後、mlflow.end_run()で手動で終了することを忘れないでください。
ログ記録#
ログ記録は、on_pretrain_routine_end、on_fit_epoch_end、on_train_endのコールバック関数によって処理されます。これらの関数は、トレーニングプロセスの各段階で自動的に呼び出され、パラメーター、メトリクス、アーティファクトのログ記録を処理します。
例#
-
カスタムメトリクスを記録する:
on_fit_epoch_endが呼び出される前にtrainer.metrics辞書を変更することで、記録するカスタムメトリクスを追加できます。 -
実験の表示: ログを表示するには、MLflowサーバー(通常は
http://127.0.0.1:5000)に移動し、実験とRunを選択します。
-
Runの表示: Runは実験内の個々のモデルです。Runをクリックすると、アップロードされたアーティファクトやモデルの重みなど、Runの詳細を確認できます。

MLflowを無効にする#
MLflowのログ記録をオフにするには:
yolo settings mlflow=Falseまとめ#
MLflowとUltralytics YOLOのログ記録統合により、機械学習実験を効率的に追跡できます。パフォーマンスメトリクスを監視し、アーティファクトを効果的に管理できるため、堅牢なモデルの開発とデプロイに役立ちます。詳しくはMLflowの公式ドキュメントをご覧ください。
FAQ#
Ultralytics YOLOでMLflowのログ記録を設定するには、まずMLflowがインストールされていることを確認します。pipを使用してインストールできます:
pip install mlflow次に、Ultralyticsの設定でMLflowのログ記録を有効にします。これは
mlflowキーで制御できます。詳しくは設定ガイドをご覧ください。Ultralyticsの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/mlflowMLflowと連携したUltralytics YOLOでは、トレーニングプロセス全体を通じて、さまざまなメトリクス、パラメーター、アーティファクトを記録できます:
- メトリクスのログ記録:エポックの終了時およびトレーニング完了時にメトリクスを追跡します。
- パラメーターのログ記録:トレーニングプロセスで使用したすべてのパラメーターを記録します。
- アーティファクトのログ記録:トレーニング後に、重みや設定ファイルなどのモデルアーティファクトを保存します。
詳しくは、Ultralytics YOLOの追跡に関するドキュメントをご覧ください。
はい、設定を更新することで、Ultralytics YOLOのMLflowログ記録を無効にできます。CLIを使用する方法は次のとおりです:
yolo settings mlflow=Falseさらにカスタマイズしたり設定をリセットしたりするには、設定ガイドをご覧ください。
Ultralytics YOLOで実験を追跡するためにMLflowサーバーを起動するには、次のコマンドを使用します:
mlflow server --backend-store-uri runs/mlflowこのコマンドは、デフォルトで
http://127.0.0.1:5000にローカルサーバーを起動します。停止するには、そのターミナルでCtrl+Cを押します。その他のコマンドオプションについては、コマンドセクションをご覧ください。
トレーニング前に、
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()で手動で終了してください。1、true、yes、on、y、tの値でこの動作が有効になります(大文字と小文字は区別されません)。MLflowをUltralytics YOLOと統合すると、機械学習実験の管理にさまざまなメリットがあります:
- 実験追跡の強化:さまざまな実行とその結果を簡単に追跡して比較できます。
- モデルの再現性向上:すべてのパラメーターとアーティファクトを記録することで、実験の再現性を確保できます。
- パフォーマンス監視:パフォーマンスメトリクスを時間の経過に沿って可視化し、モデル改善に向けたデータに基づく意思決定を行えます。
- ワークフローの効率化:ログ記録プロセスを自動化し、手動追跡ではなくモデル開発に集中できます。
- 共同開発:実験結果をチームメンバーと共有し、コラボレーションと知識共有を促進できます。
Ultralytics YOLOでMLflowを設定して活用する方法を詳しく確認するには、Ultralytics YOLOのMLflow統合ドキュメントをご覧ください。