グリーンチェック
クリップボードにコピーされたリンク

Ultralytics YOLOv5 を使用した遠隔トレーニングおよびモニタリングClearML

シームレスなML統合や実験追跡など、UltrlayticsYOLOv5 の体験がさらに充実したものとなるよう、ClearML とのパートナーシップをご検討ください。

Ultralytics YOLOv5 のような素晴らしいオープンソースツールの研究開発資金を提供するために、私たちは他の新興企業と商業的に提携しています。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。

ClearMLオープンソースのツールボックスは、あなたの時間を節約するために設計されています。

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

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

実験のトラッキングを次のレベルへ

  • 実験マネージャーで、YOLOv5 トレーニングの実行をすべて追跡する。
  • 統合されたClearML Data Versioning Toolを使って、カスタムトレーニングデータをバージョンアップし、簡単にアクセスすることができます。
  • ClearML Hyperparameter Optimization を使って最高の mAP を得る。
  • ClearML Servingを使えば、わずかなコマンドで新しく学習したYOLOv5 モデルをAPIに変換できる。

これらのツールをいくつ使うかはあなた次第で、実験マネージャーだけにこだわることもできるし、すべてを連鎖させて印象的なパイプラインにすることもできる。

セッティング

あなたの実験とデータを追跡するために、ClearML はサーバーと通信する必要があります。ClearML Hosted Serviceに無料でサインアップするか、自分でサーバーを立ち上げるかです

サーバーもオープンソースなので、機密データを扱っていても問題ない!

  1. clearml python パッケージをインストールする: pip installclearml
  2. ClearML SDKをサーバーに接続するには、認証情報を作成し(右上の「設定」→「ワークスペース」→「新しい認証情報を作成」)、以下のコマンドを実行し、指示に従ってください:clearml-init

出来上がり!これで準備は整った...

トレーニングYOLOv5 ClearML

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

ピップインストール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

これで捕捉できる:

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

悪くない!さて、これらの情報をClearML UI で可視化し、トレーニングの進捗状況の概要を把握しましょう。テーブルビューにカスタムカラム(例えばmAP_0.5など)を追加すれば、最もパフォーマンスの良いモデルを簡単にソートできます。また、複数の実験を選択して直接比較することもできます!

ハイパーパラメーターの最適化やリモート実行など、この情報すべてを使ってできることはまだまだある!

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

データをコードとは別にバージョン管理することは、一般的に良いアイデアです。このリポジトリはデータセットのバージョンIDの入力をサポートしており、データがまだ存在しない場合は必ず取得します。さらに、このワークフローでは使用したデータセットIDをタスクパラメーターの一部として保存するので、どの実験にどのデータが使われたかを常に確実に知ることができる!

データ、Ultralytics YOLOv5  ClearML

データセットを準備する

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 --projectYOLOv5 --name coco128 --folder .


clearml-data syncというコマンドは、実際には省略記法のコマンドである。これらのコマンドを次々に実行することもできる:

# をベースにしたい場合は、オプションで --parent を追加する。

# このバージョンは別のデータセットのバージョンに置き換える!

clearml-data create --name coco128 --projectYOLOv5/p>

clearml-data add --files .

clearml-データクローズ

ClearML データセットを使ったトレーニングの実行

これで、ClearML データセットが手に入ったので、それを使ってカスタムYOLOv5 モデルを訓練することができる。

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

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

さて、実験とデータ・バージョンができたので、その上に何を構築できるかを見てみよう!

コード情報、インストールされたパッケージ、環境の詳細を使って、実験そのものを完全に再現できるようになった。実際、ClearML 、実験をクローンし、そのパラメーターを変更することもできる。そうすれば、自動的に新しいパラメーターで実験を再実行することができる!

ハイパーパラメータの最適化をローカルで実行するために、事前に作成したスクリプトを用意しました。トレーニングタスクが少なくとも一度実行され、ClearML 実験マネージャにあることを確認するだけで、基本的にそのタスクをクローンし、ハイパーパラメータを変更します。

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

python clearmlそうでなければ、オプティマイザを RandomSearch だけに変更することができます。 # optuna を使うには、まずそれをインストールしてください。

HPO,Ultralytics YOLOv5  ClearML

リモート実行(上級)

HPOをローカルで実行するのはとても便利ですが、代わりにリモートマシンで実験を実行したい場合はどうしたらよいでしょうか?非常にパワフルなGPU マシンをオンサイトで利用できるかもしれないし、クラウドGPUを使う予算があるかもしれない。そこで、ClearML エージェントの出番です。

エージェントができることをここでチェックしよう:

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

どのようなマシン(クラウドVM、ローカルのGPU マシン、自分のラップトップ...)でも、実行するだけでClearML エージェントに変えることができる:

clearml-エージェント・デーモン --queue [--docker]

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

エージェントが実行されたので、少し仕事をさせることができる。HPOのセクションで、タスクをクローンしてハイパーパラメータを編集できることを覚えているだろうか?インターフェイスからもそれができる!

右クリックして実験をクローンする。

ハイパーパラメータを編集する。

タスクを右クリックして、いずれかのキューにエンキューする。

Enqueue,Ultralytics YOLOv5  ClearML

リモートでのタスク実行

上記で説明したように、タスクをクローンすることもできるし、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 エージェントに変えます。タスクが処理されると、オートスケーラは自動的にリモートマシンをシャットダウンします!以下のオートスケーラのスタートビデオをご覧ください。

ご質問は?今すぐコミュニティに参加して質問をお寄せください!

Facebookのロゴツイッターのロゴリンクトインのロゴコピー・リンク・シンボル

このカテゴリの続きを読む

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう