コンテンツぞスキップ

ClearML 統合

クリアMLクリアML

に぀いおClearML

ClearMLは、⏱、あなたの時間を節玄するために蚭蚈されたオヌプン゜ヌスのツヌルボックスです。

🔚YOLOv5 、実隓マネヌゞャヌですべおのトレヌニング実行を远跡する。

🔧 統合されたClearML デヌタ・バヌゞョニング・ツヌルで、カスタム・トレヌニング・デヌタをバヌゞョンアップし、簡単にアクセスできたす。

🔊ClearML ゚ヌゞェントを䜿甚しお、YOLOv5 トレヌニングをリモヌトで実斜し、モニタリングしたす。

ᔬClearML ハむパヌパラメヌタ最適化を䜿甚しお、最良の mAP を埗る。

↪So_1F52D ↪So_1F52D ↪So_1F52D ↪So_1F52D ↪So_1F52D ↪So_1F52D ↪So_1F52D ↪So_1F52D 🔭ClearML Serving を䜿っお、わずかなコマンドで新しく孊習したYOLOv5 モデルを APIに倉換する。


他にもたくさんある。これらのツヌルをいく぀䜿うかはあなた次第で、実隓マネヌゞャヌだけにこだわるこずもできるし、すべおを連鎖させお印象的なパむプラむンにするこずもできる

ClearML スカラヌダッシュボヌド



🊟 セッティングをする

実隓やデヌタを蚘録するために、ClearML はサヌバヌず通信する必芁がありたす。サヌバヌを手に入れるには2぀の方法がある

ClearML ホスティング・サヌビスに無料でサむンアップするか、あるいはあなた自身のサヌバヌを立ち䞊げるこずができたす。サヌバヌさえもオヌプン゜ヌスなので、機密デヌタを扱っおいおも問題ないはずだ

  • をむンストヌルしたす。 clearml python パッケヌゞで提䟛される

    pip install clearml
    
  • ClearML SDKをサヌバヌに接続するには、認蚌情報を䜜成し右䞊の「蚭定」→「ワヌクスペヌス」→「新しい認蚌情報を䜜成」、以䞋のコマンドを実行し、指瀺に埓っおください

    clearml-init
    

以䞊です完了です😎。


トレヌニング 🚀YOLOv5 WithClearML

ClearML 実隓远跡を有効にするには、ClearML pip パッケヌゞをむンストヌルするだけです。

pip install clearml>=1.2.0

これにより、YOLOv5 トレヌニングスクリプトずの統合が可胜になる。今埌、すべおのトレヌニング実行はClearML experiment managerに取り蟌たれ、保存される。

を倉曎したい堎合 project_name たたは task_nameを䜿甚する。 --project そしお --name の匕数である。 train.py スクリプトを䜿甚する堎合、デフォルトではプロゞェクトは YOLOv5 そしお Training.泚意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

これは捕獲する

  • ゜ヌスコヌド未コミットの倉曎
  • むンストヌルされおいるパッケヌゞ
  • (ハむパヌパラメヌタヌ
  • モデルファむル --save-period n n゚ポックごずにチェックポむントを保存する)
  • コン゜ヌル出力
  • スカラヌmAP_0.5、mAP_0.5:0.95、粟床、再珟率、損倱、孊習率、...
  • マシンの詳现、ランタむム、䜜成日などの䞀般的な情報。
  • ラベル盞関図や混同行列など、生成されたすべおのプロット
  • ゚ポックごずのバりンディングボックス付き画像
  • ゚ポックごずのモザむク
  • ゚ポックごずの怜蚌画像

すごい量でしょうでは、これらの情報をClearML UIで可芖化し、トレヌニングの進捗状況を把握したしょう。テヌブルビュヌにカスタムカラム䟋えばmAP_0.5などを远加するこずで、最もパフォヌマンスの高いモデルを簡単に゜ヌトするこずができたす。たた、耇数の実隓を遞択しお盎接比范するこずもできたす

ハむパヌパラメヌタヌの最適化やリモヌト実行など、これらの情報を䜿っおできるこずはただただある

🔗 デヌタセットのバヌゞョン管理

デヌタをコヌドずは別にバヌゞョン管理するこずは、䞀般的に良いアむデアです。このリポゞトリはデヌタセットのバヌゞョンIDの入力をサポヌトしおいたす。さらに、このワヌクフロヌでは䜿甚したデヌタセットIDをタスクパラメヌタヌの䞀郚ずしお保存するので、どの実隓にどのデヌタが䜿われたかを垞に確実に知るこずができる

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

コマンド clearml-data sync は実際には省略コマンドである。これらのコマンドを次々に実行するこずもできる

# Optionally add --parent <parent_dataset_id> 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 close

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

これで、ClearML デヌタセットが手に入ったので、それを䜿っおカスタムYOLOv5 🚀モデルを蚓緎するこずが非垞に簡単にできる

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


ハむパヌパラメヌタの最適化

実隓ずデヌタのバヌゞョン管理ができたので、次はその䞊に䜕を構築するかを芋おみよう

コヌド情報、むンストヌルされたパッケヌゞ、環境の詳现を䜿っお、実隓そのものを完党に再珟できるようになった。実際、ClearML 、実隓をクロヌンし、そのパラメヌタヌを倉曎するこずもできる。そうすれば、自動的に新しいパラメヌタヌで実隓を再実行するこずができる

ハむパヌパラメヌタの最適化をロヌカルで実行するために、事前に䜜成したスクリプトを甚意したした。トレヌニングタスクが少なくずも䞀床実行され、ClearML experiment manager にあるこずを確認するだけで、基本的にそのタスクをクロヌンし、ハむパヌパラメヌタを倉曎したす。

このIDを蚘入する必芁がある。 template task にあるスクリプトの utils/loggers/clearml/hpo.py で、実行するだけです :)あなたは 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.py

HPO

リモヌト実行 (侊箚)

HPOをロヌカルで実行するのはずおも䟿利ですが、代わりにリモヌトマシンで実隓を実行したい堎合はどうすればよいでしょうか非垞に匷力なGPUマシンをオンサむトで利甚できるかもしれないし、クラりドGPUを䜿う予算があるかもしれない。そこで、ClearML ゚ヌゞェントの出番です。゚ヌゞェントができるこずをここでチェックしおください

芁するに、゚クスペリメントマネヌゞャヌが远跡しおいる党おの実隓には、それを別のマシンで再珟するのに十分な情報が含たれおいるむンストヌルされおいるパッケヌゞ、コミットされおいない倉曎など。぀たり、ClearML ゚ヌゞェントは、受信タスクのキュヌをリッスンし、タスクが芋぀かるず環境を再䜜成しお実行し、同時にスカラヌやプロットなどを゚クスペリメントマネヌゞャヌに報告する。

実行するだけで、どんなマシンクラりドVM、ロヌカルGPUマシン、自分のラップトップ...でもClearML ゚ヌゞェントに倉えるこずができる

clearml-agent daemon --queue <queues_to_listen_to> [--docker]

クロヌン、線集、゚ンキュヌ

゚ヌゞェントが実行されたので、少し仕事をさせるこずができる。HPOのセクションで、タスクをクロヌンしおハむパヌパラメヌタを線集できるこずを芚えおいるだろうかむンタヌフェむスからもそれができる

右クリックしお実隓をクロヌンする。

ハむパヌパラメヌタを線集する。

タスクを右クリックしお、いずれかのキュヌに゚ンキュヌする。

UIからタスクを゚ンキュヌする

リモヌトでのタスク実行

䞊蚘で説明したように、タスクをクロヌンするこずもできたす。 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 ゚ヌゞェントに倉えたす。タスクが凊理されるず、オヌトスケヌラは自動的にリモヌトマシンをシャットダりンし、あなたは支払いを停止する

オヌトスケヌラヌのスタヌト・ビデオをご芧ください。

ビデオを芋る



䜜成日2023-11-12 曎新日2024-04-18
著者Glenn-Jocher(6),RizwanMunawar(1)

コメント