Ultralytics YOLO27:

Ultralytics YOLOのMLflow統合#

MLflow experiment tracking with Ultralytics YOLO

はじめに#

実験のログ記録は、さまざまなメトリクス、パラメーター、成果物を追跡できる機械学習ワークフローの重要な要素です。モデルの再現性向上、問題のデバッグ、モデル性能の改善に役立ちます。リアルタイムの物体検出機能で知られるUltralytics YOLOは、機械学習ライフサイクル全体を管理するオープンソースプラットフォームであるMLflowとの統合に対応しました。

このドキュメントページでは、Ultralytics YOLOプロジェクトでMLflowのログ記録機能を設定して使用する方法を包括的に説明します。

MLflowとは何ですか?#

MLflowは、Databricksが開発したオープンソースのプラットフォームで、機械学習ライフサイクル全体を管理します。実験の追跡、再現可能な実行環境としてのコードのパッケージ化、モデルの共有とデプロイを行うためのツールが含まれています。MLflowは、あらゆる機械学習ライブラリおよびプログラミング言語で動作するように設計されています。

機能#

  • メトリクスのログ記録: 各エポックの終了時に、学習率、学習損失、検証メトリクスを記録します。
  • パラメーターのログ記録: 学習で使用したすべてのパラメーターを記録します。
  • 成果物のログ記録: 学習の終了時に、重みや設定ファイルなどのモデル成果物を記録します。

セットアップと前提条件#

MLflowがインストールされていることを確認してください。インストールされていない場合は、pipを使ってインストールします。

pip install mlflow

Ultralyticsの設定でMLflowのログ記録が有効になっていることを確認してください。通常、これは設定のmlflowキーで制御します。詳しくは設定ページをご覧ください。

UltralyticsのMLflow設定を更新する

Python環境で、settingsオブジェクトのupdateメソッドを呼び出して設定を変更します。

from ultralytics import settings

# 設定を更新
settings.update({"mlflow": True})

# 設定をデフォルト値にリセット
settings.reset()

使用方法#

コマンド#

  1. プロジェクト名を設定する: 環境変数を使ってプロジェクト名を設定できます。

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    または、YOLOモデルの学習時にproject=<project>引数を使用します。例: yolo train project=my_project。

  2. 実行名を設定する: プロジェクト名の設定と同様に、環境変数を使って実行名を設定できます。

    export MLFLOW_RUN=YOUR_RUN_NAME

    または、YOLOモデルの学習時にname=<name>引数を使用します。例: yolo train project=my_project name=my_name。

  3. ローカル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
  4. 学習後もMLflowの実行を継続する: デフォルトでは、学習が終了するとUltralyticsはMLflowの実行を自動的に終了します。同じノートブックから追加のメトリクスや成果物を記録するなど、実行を継続するには、学習前にMLFLOW_KEEP_RUN_ACTIVEをTrueに設定します。

    export MLFLOW_KEEP_RUN_ACTIVE=True

    1、true、yes、on、y、tの値を指定すると、この動作が有効になります(大文字と小文字は区別されません)。それ以外の値(変数が未設定の場合を含む)では、実行はデフォルトどおり終了します。その後、mlflow.end_run()を使って手動で終了することを忘れないでください。

ロギング#

ログ記録は、on_pretrain_routine_end、on_train_epoch_end、on_fit_epoch_end、on_train_endのコールバック関数が処理します。これらの関数は、トレーニングプロセスの各段階で自動的に呼び出され、パラメーター、メトリクス、アーティファクトのログを処理します。

例#

  1. カスタムメトリクスのログ記録: on_fit_epoch_endの呼び出し前にtrainer.metricsの辞書を変更することで、ログに記録するカスタムメトリクスを追加できます。

  2. 実験の表示: ログを表示するには、MLflowサーバー(通常はhttp://127.0.0.1:5000)に移動し、実験と実行を選択します。MLflow experiment tracking interface for YOLO

  3. 実行の表示: 実行とは、実験内の個々のモデルを指します。実行をクリックすると、アップロードされたアーティファクトやモデルの重みなど、実行の詳細を確認できます。MLflow run details with YOLO artifacts

MLflowを無効にする#

MLflowのログ記録をオフにするには、次の手順に従います。

yolo settings mlflow=False

結論#

Ultralytics YOLOとのMLflowログ記録の統合により、機械学習の実験を効率よく追跡できます。パフォーマンスメトリクスを監視し、アーティファクトを効果的に管理できるため、堅牢なモデルの開発とデプロイに役立ちます。詳細については、MLflowの公式ドキュメントをご覧ください。

よくある質問#

  • Ultralytics YOLOでMLflowのログ記録を設定するには、まずMLflowがインストールされていることを確認します。pipを使ってインストールできます。

    pip install mlflow

    次に、Ultralyticsの設定でMLflowのログ記録を有効にします。これはmlflowキーで制御できます。詳細については、設定ガイドをご覧ください。

    UltralyticsのMLflow設定を更新する
    from ultralytics import settings
    
    # 設定を更新
    settings.update({"mlflow": True})
    
    # 設定をデフォルト値にリセット
    settings.reset()

    最後に、追跡用のローカルMLflowサーバーを起動します。

    mlflow server --backend-store-uri runs/mlflow
  • Ultralytics YOLOとMLflowでは、トレーニングプロセス全体を通じて、さまざまなメトリクス、パラメーター、アーティファクトをログに記録できます。

    • メトリクスのログ記録: 各エポックの終了時とトレーニング完了時にメトリクスを追跡します。
    • パラメーターのログ記録: トレーニングプロセスで使用されたすべてのパラメーターを記録します。
    • アーティファクトのログ記録: トレーニング後に、重みや設定ファイルなどのモデルアーティファクトを保存します。

    詳しくは、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統合のドキュメントをご覧ください。

コメント