YOLO Vision 2025にご期待ください!
2025年9月25日
10:00 — 18:00(英国夏時間)
ハイブリッドイベント
Yolo Vision 2024

ClearMLを使用してUltralytics YOLOv5をリモートでトレーニングおよび監視する

Ultralyticsチーム

4分で読めます

2022年10月21日

ClearMLとの提携により、Ultralytics YOLOv5の体験が向上し、シームレスなML統合、実験の追跡などが可能になります。

Ultralyticsでは、YOLOv5のような素晴らしいオープンソースツールをすべての人に無料で提供し続けるために、他のスタートアップ企業と提携して、研究開発の資金を調達しています。この記事には、これらのパートナーへのアフィリエイトリンクが含まれている場合があります。

ClearMLは、時間を節約するために設計されたオープンソースのツールボックスであり、当社の最新のパートナーです。

ClearML は、ML の導入を加速するというミッションのもと、あらゆるソフトウェアおよびハードウェア製品に ML をシームレスに統合できるようにします。

この統合により、YOLOv5モデルのトレーニングと、ClearML実験マネージャーを使用した自動追跡がさらに簡単になります。ClearMLデータセットのバージョンIDをデータ入力として簡単に指定でき、モデルのトレーニングに自動的に使用されます。

実験の追跡を次のレベルへ

  • 実験マネージャーで全てのYOLOv5の学習実行を追跡します。
  • 統合されたClearMLデータバージョニングツールを使用して、カスタムトレーニングデータのバージョンを管理し、簡単にアクセスできます。
  • ClearMLハイパーパラメータ最適化を使用して、最高のmAPを取得します。
  • ClearML Servingを使用して、トレーニング済みのYOLOv5モデルをわずか数コマンドでAPIに変換します。

これらのツールをいくつ使用するかは自由です。実験マネージャーにこだわることも、すべてをまとめて印象的なパイプラインにすることもできます。

セットアップ

実験とデータを追跡するには、ClearML がサーバーと通信する必要があります。これには、ClearML Hosted Service に無料でサインアップするか、独自のサーバーをセットアップするかの 2 つのオプションがあります。詳細については、こちらをご覧ください。

サーバーでさえオープンソースなので、機密データを扱う場合でも問題ありません。

  1. clearml pythonパッケージをインストールします: pip install clearml
  2. 認証情報を作成して(右上隅の設定→ワークスペース→新しい認証情報を作成に移動)、ClearML SDKをサーバーに接続し、次のコマンドを実行して指示に従います:clearml-init

これで準備完了です。

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

ClearMLの実験追跡を有効にするには、ClearML pipパッケージをインストールするだけです。

pip install clearml

これにより、YOLOv5トレーニングスクリプトとの統合が可能になります。これ以降のすべてのトレーニング実行は、ClearML実験マネージャーによってキャプチャおよび保存されます。 project_nameまたはtask_nameを変更する場合は、カスタムロガー(utils/loggers/clearml/clearml_utils.py)で変更できます。

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

これにより、以下がキャプチャされます。

  • ソースコード + 未コミットの変更
  • インストール済みパッケージ
  • (ハイパー)パラメータ
  • モデルファイル(--save-period n を使用して、nエポックごとにチェックポイントを保存します)
  • コンソール出力
  • スカラー (mAP_0.5、mAP_0.5:0.95、適合率、再現率、損失、学習率など)
  • 機械の詳細、ランタイム、作成日などの一般的な情報。
  • ラベルコレログラムや混同行列など、作成されたすべてのプロット
  • エポックごとのバウンディングボックス付き画像
  • エポックごとのモザイク
  • エポックごとの検証画像

悪くありませんね!これで、ClearML UIでこのすべての情報を可視化して、トレーニングの進捗状況の概要を把握できます。テーブルビューにカスタム列(例:mAP_0.5など)を追加して、最高のパフォーマンスを発揮するモデルを簡単にソートできます。または、複数の実験を選択して直接比較することもできます!

ハイパーパラメータの最適化やリモート実行など、このすべての情報でできることはさらにたくさんあります。読み進めてその方法を学びましょう。

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

コードとは別にデータをバージョン管理することは一般的に良い考えであり、最新バージョンも簡単に取得できます。このリポジトリは、データセットのバージョンIDの提供をサポートしており、まだデータがない場合は、確実に取得します。それに加えて、このワークフローは、使用されたデータセットIDをタスクパラメータの一部として保存するため、どのデータがどの実験で使用されたかを常に確実に知ることができます。

データセットの準備

YOLOv5リポジトリは、情報を含むYAMLファイルを使用することで、多数の異なるデータセットをサポートします。デフォルトでは、データセットはリポジトリのルートフォルダからの相対パスで../datasetsフォルダにダウンロードされます。したがって、YAMLのリンクまたはYOLOv5によって提供されるスクリプトを使用してcoco128データセットをダウンロードした場合、次のフォルダ構造になります。

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

ただし、これは任意のデータセットにすることができます。このフォルダ構造を守る限り、ご自身のデータセットを自由に使用してください。

次に、⚠️対応するYAMLファイルをデータセットフォルダのルートにコピーします⚠️。これらのYAMLファイルには、ClearMLがデータセットを適切に使用するために必要な情報が含まれています。もちろん、自分で作成することもできます。例のYAMLの構造に従ってください。

基本的に、path、train、test、val、nc、namesのキーが必要です。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # ← ここ!
        |_ LICENSE
        |_ README.txt

データセットをアップロード

このデータセットをバージョン管理されたデータセットとして ClearML に取り込むには、データセットのルートフォルダーに移動し、次のコマンドを実行します。

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .


コマンドclearml-data syncは、実際には短縮コマンドです。これらのコマンドを1つずつ実行することもできます。

# 親となるデータセットのバージョンを指定したい場合は、--parentを追加してください

# これにより、別のデータセットバージョンに基づいて、ファイルの重複アップロードを回避できます。

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

ClearMLデータセットを使用した学習の実行

ClearMLデータセットを入手したので、それを使用してカスタムYOLOv5モデルを非常に簡単にトレーニングできます。

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

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

実験とデータのバージョンができたので、その上に何を構築できるかを見てみましょう。

コード情報、インストールされたパッケージ、および環境の詳細を使用すると、実験自体を完全に再現できます。実際、ClearMLを使用すると、実験を複製したり、パラメータを変更したりすることもできます。次に、これらの新しいパラメータを使用して自動的に再実行できます。これは基本的にHPOが行うことです。

ハイパーパラメータ最適化をローカルで実行するために、既製のスクリプトをご用意しました。ClearML実験マネージャにトレーニングタスクが少なくとも1回実行されていることを確認してください。本質的にそれを複製し、そのハイパーパラメータを変更します。

utils/loggers/clearml/hpo.pyにあるスクリプトで、このテンプレートタスクのIDを入力し、実行してください。task.execute_locally()をtask.execute()に変更すると、ClearMLキューに投入され、リモートエージェントが代わりに処理します。

# Optunaを使用するには、最初にインストールしてください。そうでない場合は、オプティマイザをRandomSearch pip install optuna python utils/loggers/clearml/hpo.pyに変更できます。

リモート実行(高度)

HPOをローカルで実行するのは非常に便利ですが、実験をリモートマシンで実行したい場合はどうすればよいでしょうか?オンサイトに非常に強力なGPUマシンがあるか、クラウドGPUを使用するための予算があるかもしれません。そこでClearML Agentが登場します。

エージェントがここで何ができるかを確認してください:

要するに、実験マネージャーによって追跡されるすべての実験には、別のマシンでそれを再現するのに十分な情報(インストールされたパッケージ、コミットされていない変更など)が含まれています。したがって、ClearMLエージェントはまさにそれを行います。受信タスクのキューをリッスンし、タスクを見つけると、環境を再作成して実行し、スカラー、プロットなどを実験マネージャーに報告します。

クラウドVM、ローカルGPUマシン、自分のラップトップなど、あらゆるマシンをClearMLエージェントに変えるには、以下を実行するだけです。

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

クローン作成、編集、エンキュー

エージェントが実行されているので、いくつかの作業を指示できます。HPOのセクションで、タスクを複製してハイパーパラメータを編集できることを思い出してください。インターフェースからもそれを行うことができます!

🪄 実験を右クリックして複製します

🎯 ハイパーパラメータを希望どおりに編集してください

タスクを右クリックして、任意のキューにエンキューします

タスクをリモートで実行する

上記で説明したようにタスクを複製するか、task.execute_remotely()を追加して現在のスクリプトをマークするだけで、実行時にエージェントが作業を開始するためにキューに入れられます。

YOLOv5トレーニングスクリプトをリモートで実行するには、ClearMLロガーのインスタンス化後、この行をtraining.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 either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

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

ワーカーの自動スケーリング

ClearMLにはオートスケーラーも付属しています!このツールは、選択したクラウド(AWS、GCP、Azure)で新しいリモートマシンを自動的に起動し、キューで実験が検出されるたびにClearMLエージェントに変換します。タスクが処理されると、オートスケーラーはリモートマシンを自動的にシャットダウンするため、支払いを停止できます!以下のオートスケーラーの入門ビデオをご覧ください。

ご質問はありますか?<a href="https://community.ultralytics.com/" target="_blank">コミュニティに参加して、今すぐ質問を投稿してください!

AIの未来を
共に築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。

無料ではじめる
クリップボードにコピーしました