コンテンツにスキップ

ClearML統合

Clear|MLClear|ML

ClearMLについて

ClearMLは、機械学習ワークフローを効率化し、時間を節約するように設計されたオープンソースのMLOpsプラットフォームです⏱️。

🔨 実験マネージャーですべてのYOLOv5トレーニング実行を追跡します

🔧 統合されたClearML データバージョン管理ツールを使用して、カスタムトレーニングデータをバージョン管理し、簡単にアクセスできます。

🔦 ClearML Agentを使用して、YOLOv5のトレーニングをリモートでトレーニングおよび監視します。

🔬 ClearMLのハイパーパラメータ最適化を利用して、最高のmAPを手に入れましょう。

🔭 ClearML Servingを使用すると、数コマンドで、新しくトレーニングしたYOLOv5モデルをAPIに変換できます。


その他にもたくさんあります。これらのツールをいくつ使用するかはあなた次第です。実験マネージャーに固執することも、すべてを連鎖させて印象的なパイプラインにすることもできます。

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



🦾 セットアップ

実験やデータを追跡するには、ClearML はサーバーと通信する必要があります。サーバーを取得するには、2 つのオプションがあります。

ClearML Hosted Serviceに無料でサインアップするか、独自のClearMLサーバーをセットアップできます。サーバーでさえオープンソースであるため、機密データを扱っている場合でも、問題ありません。

  • 以下のインストール clearml pythonパッケージ:

    pip install clearml
    
  • 認証情報を作成して(右上の設定 -> ワークスペース -> 新しい認証情報を作成に進みます)、ClearML SDKをサーバーに接続し、以下のコマンドを実行して指示に従ってください。

    clearml-init
    

これで完了です! 😎


🚀 ClearMLを使用したYOLOv5のトレーニング

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

pip install clearml

これにより、YOLOv5トレーニングスクリプトとの統合が可能になります。これ以降のすべてのトレーニング実行は、ClearML 実験マネージャーによってキャプチャされ、保存されます。

変更したい場合 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、適合率、再現率、損失、学習率など)
  • マシンの詳細、ランタイム、作成日などの一般的な情報。
  • ラベル相関図や混同行列など、生成されたすべてのプロット
  • エポックごとのバウンディングボックスを持つ画像
  • Mosaic(モザイク)/epoch
  • エポックごとの検証画像

すごい量でしょう? 🤯 さて、この情報をすべて 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 は実際には省略形のコマンドです。これらのコマンドを1つずつ実行することもできます。

# 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 を使用すると、実験を複製し、パラメーターを変更することもできます。これらの新しいパラメーターで自動的に再実行できます。これは基本的に HPO が行うことです!

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

この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 Agentの出番です。エージェントで何ができるかはこちらをご覧ください。

要するに、実験マネージャーによって追跡されるすべての実験には、別のマシンでそれを再現するのに十分な情報(インストールされたパッケージ、コミットされていない変更など)が含まれています。したがって、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 エージェントに変換します。タスクが処理されると、オートスケーラーは自動的にリモートマシンをシャットダウンし、支払いが停止します。

オートスケーラーの入門ビデオを以下でご覧ください。

ビデオを見る

詳細はこちら

ClearML と Ultralytics モデルの統合に関する詳細については、ClearML 統合ガイドを確認し、他の実験追跡ツールを使用してMLOps ワークフローをどのように強化できるかをご確認ください。



📅 1年前に作成 ✏️ 4か月前に更新

コメント