YOLO Vision 2026:

ClearML連携#

ClearML MLOps experiment tracking platform

ClearMLについて#

ClearMLは、機械学習ワークフローを効率化し、エンジニアリングの時間を節約するために構築されたオープンソースのMLOpsプラットフォームです。

  • 🔨 すべてのYOLOv5トレーニング実行を実験マネージャーで追跡できます。
  • 🔧 統合されたClearMLのデータバージョニングツールで、カスタムトレーニングデータのバージョン管理とアクセスができます。
  • 🔦 ClearML Agentを使用して、YOLOv5の実行をリモートでトレーニングおよび監視できます。
  • ClearMLのハイパーパラメータ最適化で、最適なmAPを見つけられます。
  • ClearML Servingを使用して、数個のコマンドでトレーニング済みのYOLOv5モデルをAPIに変換できます。

これらのツールは必要な数だけ使用できます。実験マネージャーだけで始めることも、すべてを連携して完全なパイプラインにすることもできます。

🦾 セットアップ#

ClearMLで実験とデータを追跡するには、サーバーとの通信が必要です。次の2つの方法があります。

  • 無料のClearML Hosted Serviceにサインアップする、または
  • 独自のClearMLサーバーをデプロイする — オープンソースなので、機密データを扱う場合でも有効な選択肢です。

次に、clearml Pythonパッケージをインストールし、SDKをサーバーに接続します。

pip install clearml

Settings → Workspace → Create new credentials(ClearML UIの右上)で認証情報を生成し、次を実行します。

clearml-init

プロンプトに従います。これでセットアップは完了です。

🚀 ClearMLを使用したYOLOv5のトレーニング#

実験の追跡を有効にするには、まだインストールしていない場合はClearML pipパッケージをインストールします。

pip install clearml

これにより、YOLOv5トレーニングスクリプトとの連携が有効になります。以降のすべてのトレーニング実行は、ClearMLの実験マネージャーによって取得・保存されます。

プロジェクト名とタスク名をカスタマイズするには、--project--nametrain.pyに渡します。デフォルトはYOLOv5Trainingです。ClearMLは/をサブプロジェクトの区切り文字として使用するため、カスタムプロジェクト名では/を避けてください。

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

または、カスタム名を使用します。

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

各実行で次の情報が取得されます。

  • ソースコードとコミットされていない変更
  • インストール済みパッケージ
  • ハイパーパラメータ
  • モデルチェックポイント(nエポックごとに保存するには--save-period nを使用)
  • コンソール出力
  • スカラー(mAP_0.5、mAP_0.5:0.95、precision、recall、loss、learning rate)
  • マシンの詳細、実行時間、作成日
  • ラベルコレログラムや混同行列などの生成されたプロット
  • エポックのBBox付き画像
  • 各エポックのモザイク可視化
  • 各エポックの検証画像

すべての情報がClearML UIに表示されるため、トレーニングを1か所で監視できます。カスタム列(例:mAP_0.5)を追加して最高性能のモデルで並べ替えたり、複数の実験を選択して横並びで比較したりできます。

ハイパーパラメータ最適化とリモート実行については、引き続きお読みください。

🔗 データセットのバージョン管理#

コードとは別にデータをバージョン管理すると、最新バージョンを簡単に取得でき、完全な再現性を確保できます。このリポジトリはデータセットのバージョンIDを受け取り、データが存在しない場合は自動的に取得し、そのIDをタスクパラメータとして記録するため、各実験でどのデータが使用されたかを常に把握できます。

データセットの準備#

YOLOv5リポジトリは、YAML設定ファイルを介して多くのデータセットをサポートしています。デフォルトでは、データセットはリポジトリルートからの相対パスにある../datasetsフォルダーにダウンロードされます。coco128をダウンロードすると、フォルダー構造は次のようになります。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

この構造を維持する限り、どのデータセットでも使用できます。

次に、データセットのYAMLファイルをデータセットのルートフォルダーにコピーします。ClearMLはこのファイルを読み取り、データセットを正しく使用します。例のレイアウトに従って独自のYAMLを作成し、pathtraintestvalncnamesを定義してください。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

データセットのアップロード#

データセットをバージョン管理されたClearMLデータセットとして登録するには、そのルートフォルダーに移動して次を実行します。

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data syncは次の一連の処理の短縮形です。明示的に実行することもできます。

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

ClearMLデータセットでトレーニングする#

データセットを登録したら、IDを指定してトレーニングの対象にします。

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

👀 ハイパーパラメータ最適化#

実験とデータをバージョン管理すると、それらを基盤として構築できます。追跡対象の各実験には、コード、インストール済みパッケージ、設定を含む完全な環境が保存されるため、実行は完全に再現可能です。ClearMLでは、実験をクローンし、パラメータを変更して自動的に再実行できます。これがハイパーパラメータ最適化(HPO)の基盤です。

HPOをローカルで実行するには、付属のスクリプトを使用します。まず、実験マネージャーにトレーニングタスクが存在することを確認してください。スクリプトはそのタスクをクローンし、ハイパーパラメータを変化させます。

utils/loggers/clearml/hpo.pyにテンプレートタスクIDを入力し、次を実行します。

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

task.execute_locally()task.execute()に切り替えると、ジョブがClearMLキューに送信され、リモートAgentが取得できるようになります。

YOLOv5メトリクスを表示するClearML HPOダッシュボード

🤯 リモート実行(高度な内容)#

HPOをローカルで実行するのは便利ですが、オンプレミスのGPUマシンやクラウドインスタンスなど、より強力なハードウェアで実験を実行したい場合も多くあります。それがClearML Agentの役割です。

追跡対象の各実験には、別のマシンで再現するために必要なすべての情報(インストール済みパッケージ、コミットされていない変更、設定)が含まれます。ClearML Agentはキューを監視し、受信したタスクを取得して環境を再作成し、ジョブを実行して、スカラーとプロットを実験マネージャーにストリーミングします。

次のコマンドで、クラウドVM、ローカルGPUマシン、ノートPCなど、任意のマシンをClearML Agentに変換できます。

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

クローン、編集、キューへの追加#

Agentを実行すると、UIから直接作業を割り当てられます。

  • 🪄 実験を右クリックしてクローンします。
  • 🎯 ハイパーパラメータを編集します。
  • ⏳ クローンしたタスクを右クリックし、対象キューに追加します。

タスクのリモート実行#

ClearMLロガーのインスタンスが作成された後にtask.execute_remotely()を追加することで、実行中のスクリプトをプログラムからリモート実行用に指定することもできます。強調表示された行をtrain.pyに追加します。

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

この変更後にトレーニングスクリプトを実行すると、その行まで処理を実行し、コードをパッケージ化してキューに送信します。

ワーカーのオートスケーリング#

ClearMLにはオートスケーラーが付属しており、キューに保留中の実験があるとAWS、GCP、Azureでリモートマシンを起動し、それらをClearML Agentに変換して、作業が完了するとシャットダウンします。そのため、実際に稼働しているコンピュートリソースの料金だけを支払えば済みます。

以下の入門動画をご覧ください。

動画を見る

詳細情報#

UltralyticsモデルとClearMLの連携について詳しくは、ClearML連携ガイドをご覧いただき、他の実験追跡ツールを使用してMLOpsワークフローを強化する方法をご確認ください。

コメント