コンテンツへスキップ

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 coco128.yaml --weights yolov5s.pt --cache

またはカスタムプロジェクト名とカスタムタスク名を指定する:

python train.py --project my_project --name my_training --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をタスクパラメーターの一部として保存するので、どの実験にどのデータが使われたかを常に確実に知ることができる!

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-01-12
作成者:glenn-jocher(5),chr043416@gmail.com(1)

コメント