Ultralytics YOLOのMLflow統合
はじめに
Experiment logging is a crucial aspect of machine learning workflows that enables tracking of various metrics, parameters, and artifacts. It helps to enhance model reproducibility, debug issues, and improve model performance. Ultralytics YOLO, known for its real-time object detection capabilities, now offers integration with MLflow, an open-source platform for complete machine learning lifecycle management.
このドキュメントページは、Ultralytics YOLOプロジェクトでMLflowのログ記録機能を設定し、利用するための包括的なガイドです。
MLflowとは?
MLflowは、エンドツーエンドの機械学習ライフサイクルを管理するためにDatabricksによって開発されたオープンソースプラットフォームです。これには、実験の追跡、コードを再現可能な実行単位にパッケージ化するツール、およびモデルの共有とデプロイを行うためのツールが含まれています。MLflowは、あらゆる機械学習ライブラリやプログラミング言語と連携できるように設計されています。
機能
- メトリクスのログ記録: 各エポックの終了時およびトレーニング終了時にメトリクスをログに記録します。
- パラメータのログ記録: トレーニングで使用されるすべてのパラメータをログに記録します。
- アーティファクトのログ記録: トレーニング終了時に、重みや設定ファイルを含むモデルアーティファクトをログに記録します。
設定と前提条件
MLflowがインストールされていることを確認してください。インストールされていない場合は、pipを使用してインストールしてください:
pip install mlflowUltralyticsの設定でMLflowのログ記録が有効になっていることを確認してください。通常、これは設定のmlflowキーによって制御されます。詳細については、設定ページを参照してください。
Within the Python environment, call the update method on the settings object to change your settings:
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)。 -
実行名(Run Name)を設定する: プロジェクト名の設定と同様に、環境変数を使用して実行名を設定できます:
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サーバーインスタンスを終了する: 実行中のすべての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 コールバック関数によって処理されます。これらの関数はトレーニングプロセスの各段階で自動的に呼び出され、パラメータ、メトリクス、アーティファクトのログ記録を処理します。
使用例
-
Logging Custom Metrics: You can add custom metrics to be logged by modifying the
trainer.metricsdictionary beforeon_fit_epoch_endis called. -
実験を表示する: ログを表示するには、MLflowサーバー(通常は
http://127.0.0.1:5000)に移動し、実験と実行を選択します。
-
実行(Run)を表示する: 実行は実験内の個々のモデルです。実行をクリックすると、アップロードされたアーティファクトやモデルの重みを含む実行の詳細が表示されます。

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とUltralytics YOLOを統合するメリットは何ですか?
MLflowとUltralytics YOLOを統合することで、機械学習実験を管理する上でいくつかのメリットがあります:
- 実験追跡の強化: さまざまな実行結果を簡単に追跡・比較できます。
- モデルの再現性の向上: すべてのパラメータとアーティファクトを記録することで、実験の再現性を確保します。
- パフォーマンス監視: パフォーマンスメトリクスを長期的に可視化し、モデル改善のためのデータに基づいた意思決定を可能にします。
- ワークフローの効率化: ログ記録プロセスを自動化し、手動での追跡ではなくモデル開発に集中できます。
- 共同開発: チームメンバーと実験結果を共有し、コラボレーションと知識共有を促進します。
Ultralytics YOLOでMLflowを設定・活用するための詳細については、Ultralytics YOLOのMLflow統合ドキュメントをご覧ください。