UltrlayticsのYOLOv5では、ClearMLとのパートナーシップにより、MLとのシームレスな統合や実験のトラッキングなど、より充実した体験を提供します。

UltrlayticsのYOLOv5では、ClearMLとのパートナーシップにより、MLとのシームレスな統合や実験のトラッキングなど、より充実した体験を提供します。
Ultralyticsでは、YOLOv5のような素晴らしいオープンソースツールの研究開発に資金を提供するために、他のスタートアップ企業と商業的に提携しています。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。
ClearMLは私たちの新しいパートナーです。あなたの時間を節約するために設計されたオープンソースのツールボックスです。
MLの導入を加速させることを使命とするClearMLは、MLをあらゆるソフトウェアやハードウェア製品にシームレスに統合します。
この統合により、YOLOv5モデルをトレーニングし、ClearML 実験マネージャーを使用して自動的に追跡することがより簡単になります。データ入力としてClearMLデータセットのバージョンIDを簡単に指定でき、モデルのトレーニングに自動的に使用されます。
これらのツールをいくつ使うかはあなた次第で、実験マネージャーだけにこだわることもできるし、すべてを連鎖させて印象的なパイプラインにすることもできる。
実験とデータを管理するために、ClearML はサーバーと通信する必要があります。ClearML Hosted Service に無料でサインアップするか、自分でサーバーを立ち上げるかです。
サーバーもオープンソースなので、機密データを扱っていても問題ない!
出来上がり!これで準備は整った...
ClearML の実験追跡を有効にするには、ClearML の pip パッケージをインストールするだけです。
pip install clearml
これにより、YOLOv5トレーニングスクリプトとの統合が可能になります。今後、トレーニングの実行はすべてClearML experiment managerに取り込まれ、保存されます。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
これで捕捉できる:
悪くない!さて、これらの情報を ClearML UI で可視化し、トレーニングの進捗状況を把握しましょう。テーブルビューにカスタムカラム(例えば mAP_0.5)を追加すれば、最もパフォーマンスの良いモデルを簡単にソートできます。また、複数の実験を選択して直接比較することもできます!
ハイパーパラメーターの最適化やリモート実行など、この情報すべてを使ってできることはまだまだある!
データをコードとは別にバージョン管理することは、一般的に良いアイデアです。このリポジトリはデータセットのバージョンIDの入力をサポートしており、データがまだ存在しない場合は必ず取得します。さらに、このワークフローでは使用したデータセットIDをタスクパラメーターの一部として保存するので、どの実験にどのデータが使われたかを常に確実に知ることができる!
YOLOv5リポジトリは、データセットの情報を含むYAMLファイルを使うことで、さまざまなデータセットをサポートしています。デフォルトでは、データセットはリポジトリのルートフォルダから./datasetsフォルダにダウンロードされます。もしcoco128データセットをYAML内のリンク、またはyolov5が提供するスクリプトを使ってダウンロードした場合、このようなフォルダ構造になります:
...
|_ 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.txt
このデータセットをバージョン管理されたデータセットとしてClearMLに取り込むには、データセットのルートフォルダーに移動し、以下のコマンドを実行します:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .
コマンドclearml-data syncは、実際には省略記法のコマンドである。これらのコマンドを順番に実行することもできる:
# をベースにしたい場合は、オプションで --parent を追加する。
# このバージョンは別のデータセットのバージョンに置き換えるので、重複したファイルはアップロードされない!
clearml-data create --name coco128 --project YOLOv5/p> -プロジェクト YOLOv5/p>。
clearml-data add --files .
クリアムル・データ・クローズ
ClearMLデータセットがあれば、それを使ってYOLOv5モデルを簡単にトレーニングすることができます。
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache
実験とデータ・バージョンができたので、次はその上に何を構築するかを見てみよう!
コード情報、インストールされたパッケージ、環境の詳細を使用することで、実験そのものを完全に再現できるようになりました。実際、ClearML では実験のクローンを作成し、パラメータを変更することもできます。そうすれば、新しいパラメータで自動的に再実行することができます!
ハイパーパラメータの最適化をローカルで実行するために、あらかじめスクリプトを用意しました。トレーニングタスクが少なくとも一度実行され、ClearML experiment manager にあることを確認してください。
utils/loggers/clearml/hpo.py にあるスクリプトにこのテンプレートタスクの ID を記入し、実行するだけです。task.execute_locally() を task.execute() に変更すると、ClearML のキューに入れ、代わりにリモートエージェントが処理します。
# そうでなければ、オプティマイザをRandomSearchだけに変更することができます。
HPOをローカルで実行するのはとても便利ですが、代わりにリモートマシンで実験を実行したい場合はどうしたらよいでしょうか?非常に強力なGPUマシンをオンサイトで利用できるかもしれないし、クラウドGPUを利用する予算があるかもしれない。そこで ClearML Agent の出番です。
エージェントができることをここでチェックしよう:
要するに、エクスペリメントマネージャが追跡するすべての実験には、別のマシンでそれを再現するのに十分な情報が含まれている(インストールされたパッケージ、コミットされていない変更など)。つまり、ClearML エージェントは、受信タスクのキューをリッスンし、タスクが見つかると環境を再作成して実行し、同時にスカラーやプロットなどをエクスペリメントマネージャに報告します。
実行するだけで、どんなマシン(クラウドVM、ローカルGPUマシン、自分のラップトップ...)でもClearMLエージェントにすることができます:
clearml-agent デーモン --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 エージェントに変えます。タスクが処理されると、オートスケーラは自動的にリモートマシンをシャットダウンします!オートスケーラのスタートビデオをご覧ください。
ご質問は?今すぐコミュニティに参加して質問をお寄せください!