ClearMLを使用してUltralytics YOLOv5を遠隔トレーニングおよび監視する
シームレスなML統合、実験追跡などを備えた、より優れたUltralytics YOLOv5体験のためのClearMLとのパートナーシップを探ります。

Ultralyticsでは、YOLOv5のような優れたオープンソースツールの研究開発資金を確保し、誰でも無料で利用できるようにするため、他のスタートアップ企業と商業的なパートナーシップを結んでいます。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。
ClearMLは当社の最新のパートナーであり、時間を節約するために設計されたオープンソースのツールボックスです。
ML導入の加速をミッションに掲げるClearMLは、あらゆるソフトウェアおよびハードウェア製品にMLをシームレスに統合できるようにします。
この統合により、YOLOv5モデルのトレーニングと、ClearML実験マネージャーを使用した自動追跡がさらに簡単になります。データ入力としてClearMLデータセットのバージョンIDを指定するだけで、トレーニングに自動的に使用されます。
Link to this section実験追跡を次のレベルへ#
- すべてのYOLOv5トレーニング実行を実験マネージャーで追跡します。
- 統合されたClearMLデータバージョニングツールを使用して、カスタムトレーニングデータをバージョン管理し、簡単にアクセスできます。
- ClearMLのハイパーパラメータ最適化を使用して、最高のmAPを実現しましょう。
- ClearML Servingを使用すれば、わずかなコマンドでトレーニング済みのYOLOv5モデルをAPI化できます。
これらのツールをどれだけ使用するかは自由です。実験マネージャーのみを使用することも、すべてを連携させて印象的なパイプラインを構築することも可能です。
Link to this sectionセットアップ#
実験やデータを追跡するために、ClearMLはサーバーと通信する必要があります。これには2つの選択肢があります。ClearML Hosted Serviceに無料で登録するか、独自のサーバーをセットアップしてください。詳細はClearML Server deployment docsを参照してください。
サーバー自体もオープンソースであるため、機密データを扱っている場合でも問題ありません!
- clearml pythonパッケージをインストールします:
pip install clearml - ClearML SDKをサーバーに接続するには、認証情報を作成(右上の設定 → ワークスペース → 新しい認証情報の作成に移動)してから、以下のコマンドを実行して指示に従ってください:
clearml-init
これで完了です!準備は整いました...
Link to this sectionClearMLを使用した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)を追加すれば、パフォーマンスの高いモデルで簡単にソートできます。また、複数の実験を選択して直接比較することも可能です!
ハイパーパラメータ最適化やリモート実行など、これらの情報を使ってさらに多くのことができます。読み進めてその方法を学びましょう!
Link to this sectionデータセットのバージョン管理#
コードとは別にデータをバージョン管理することは一般的に良い習慣であり、最新バージョンを簡単に取得できるようになります。このリポジトリはデータセットバージョンIDの指定をサポートしており、データが存在しない場合は確実に取得します。さらに、このワークフローでは使用したデータセットIDがタスクパラメータの一部として保存されるため、どの実験でどのデータが使用されたかを常に確実に把握できます!
Link to this sectionデータセットを準備する#
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 # ← HERE!
|_ LICENSE
|_ README.txtLink to this sectionデータセットをアップロードする#
このデータセットをバージョン管理されたデータセットとしてClearMLに取り込むには、データセットのルートフォルダに移動して、以下のコマンドを実行します:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .コマンドclearml-data syncは実際にはショートハンドコマンドです。代わりに、これらのコマンドを順番に実行することもできます:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeLink to this sectionClearMLデータセットを使用してトレーニングを実行する#
ClearMLデータセットを作成したら、それを使用してカスタムYOLOv5モデルを非常に簡単にトレーニングできます。
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheLink to this sectionハイパーパラメータ最適化#
実験とデータのバージョンが用意できたので、その上で何を構築できるかを見ていきましょう!
コード情報、インストール済みパッケージ、環境の詳細を使用することで、実験自体が完全に再現可能になりました。実際、ClearMLでは実験をクローンしたり、パラメータを変更したりできます。そして、それらの新しいパラメータで自動的に再実行するだけでよく、これが実質的にHPOが行うことです!
ハイパーパラメータ最適化をローカルで実行するために、あらかじめ用意されたスクリプトを同梱しています。トレーニングタスクが少なくとも1回実行され、ClearML実験マネージャーに存在していることを確認してください。基本的にはそれをクローンし、ハイパーパラメータを変更します。
スクリプト(utils/loggers/clearml/hpo.py)内のテンプレートタスクのIDを入力してから実行するだけです。task.execute_locally()をtask.execute()に変更すると、ClearMLキューに入れてリモートエージェントに処理させることもできます。
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyLink to this sectionリモート実行(高度)#
HPOをローカルで実行するのは非常に便利ですが、実験をリモートマシンで実行したい場合はどうすればよいでしょうか?オンサイトに非常に強力なGPUマシンがある場合や、クラウドGPUを使用する予算がある場合などです。ここでClearMLエージェントの出番です。
エージェントでできることについては、以下を確認してください:
要するに、実験マネージャーによって追跡されるすべての実験には、別のマシンで再現するのに十分な情報(インストール済みパッケージ、コミットされていない変更など)が含まれています。ClearMLエージェントは、キューを監視してタスクを受信し、タスクを見つけると環境を再構築して実行し、スカラーやプロットなどを実験マネージャーに報告します。
任意のマシン(クラウドVM、ローカルのGPUマシン、自分のノートPC)をClearMLエージェントにするには、以下のコマンドを実行するだけです:
clearml-agent daemon --queue [--docker]Link to this sectionクローン、編集、エンキュー#
エージェントが動作していれば、作業を割り当てることができます。HPOセクションで学んだように、タスクをクローンしてハイパーパラメータを編集できることは覚えていますか?インターフェースからもそれが可能です!
🪄 実験を右クリックしてクローンを作成する
🎯 ハイパーパラメータを希望の値に編集する
⏳ タスクを右クリックして任意のキューにエンキューする
Link to this sectionタスクをリモートで実行する#
上記のようにタスクをクローンすることもできますし、現在のスクリプトにtask.execute_remotely()を追加してマークするだけでも構いません。実行時にキューに入れられ、エージェントが作業を開始します!
YOLOv5トレーニングスクリプトをリモートで実行するには、ClearMLロガーをインスタンス化した後、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質問はありますか?コミュニティに参加して、今すぐ質問を投稿してください!






