Meet YOLO26: next-gen vision AI.

Link to this sectionClearMLの統合#

ClearML MLOps experiment tracking platform

Link to this sectionClearMLについて#

ClearMLは、機械学習のワークフローを効率化し、エンジニアリング時間を節約するために構築されたオープンソースのMLOpsプラットフォームです。

  • 🔨 YOLOv5のすべてのトレーニング実行を実験マネージャーで追跡します。
  • 🔧 統合されたClearMLデータバージョン管理ツールを使用して、カスタムトレーニングデータのバージョン管理およびアクセスを行います。
  • 🔦 ClearML Agentを使用して、YOLOv5の実行をリモートでトレーニングおよび監視します。
  • 🔬 ClearMLのハイパーパラメータ最適化を使用して、最適なmAPを見つけます。
  • 🔭 ClearML Servingを使用し、いくつかのコマンドでトレーニング済みのYOLOv5モデルをAPI化します。

必要に応じてこれらのツールを組み合わせて使用してください。実験マネージャー単体から始めることも、すべてをつなぎ合わせて完全なパイプラインを構築することも可能です。

YOLOv5のトレーニング指標を示すClearMLのスカラーダッシュボード

Link to this section🦾 セットアップ#

実験やデータを追跡するには、ClearMLがサーバーと通信する必要があります。2つの選択肢があります。

  • 無料のClearML Hosted Serviceにサインアップするか、
  • 独自のClearMLサーバーをデプロイします。これはオープンソースであるため、機密データに対しても有効な選択肢となります。

次に、clearmlのPythonパッケージをインストールし、SDKをサーバーに接続します。

pip install clearml

Settings → Workspace → Create new credentials(ClearML UIの右上)で認証情報を生成し、実行してください。

clearml-init

プロンプトに従ってください。これでセットアップは完了です。

Link to this section🚀 ClearMLでのYOLOv5トレーニング#

実験追跡を有効にするには、まだインストールしていない場合はClearMLのpipパッケージをインストールしてください。

pip install clearml

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

To customize the project and task names, pass --project and --name to train.py. The defaults are YOLOv5 and Training. ClearML uses / as a subproject delimiter, so avoid / in custom project names.

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

各実行で以下がキャプチャされます。

  • ソースコードおよびコミットされていない変更
  • インストールされているパッケージ
  • ハイパーパラメータ
  • Model checkpoints (use --save-period n to save every n epochs)
  • コンソール出力
  • スカラー(mAP_0.5、mAP_0.5:0.95、精度、再現率、損失、学習率)
  • マシンの詳細、ランタイム、および作成日
  • ラベルコレログラムや混同行列などの生成されたプロット
  • エポックごとのバウンディングボックス付き画像
  • エポックごとのモザイクの可視化
  • エポックごとの検証画像

すべてがClearMLのUIに表示されるため、一か所でトレーニングを監視できます。カスタム列(例:mAP_0.5)を追加してパフォーマンスの高いモデルで並べ替えたり、複数の実験を選択して並べて比較したりすることができます。

ハイパーパラメータ最適化およびリモート実行については、続きをお読みください。

Link to this section🔗 データセットのバージョン管理#

データとコードを分離してバージョン管理することで、最新バージョンの取得が容易になり、完全な再現性が確保されます。このリポジトリはデータセットのバージョンIDを受け取り、データが不足している場合は自動的に取得し、そのIDをタスクパラメータとして記録するため、どの実験でどのデータが使用されたかを常に把握できます。

ClearMLのデータセットバージョン管理インターフェース

Link to this sectionデータセットの準備#

YOLOv5リポジトリは、YAML設定ファイルを通じて多くのデータセットをサポートしています。デフォルトでは、データセットはリポジトリルートを基準とした../datasetsフォルダにダウンロードされます。coco128をダウンロードすると、フォルダ構造は以下のようになります。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

この構造を維持している限り、どのデータセットでも使用できます。

次に、データセットのYAMLファイルをデータセットのルートフォルダにコピーしてください。ClearMLはこのファイルを読み取ってデータセットを正しく使用します。例となるレイアウトに従って独自のYAMLを作成し、pathtraintestvalnc、およびnamesが定義されていることを確認してください。

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Link to this sectionデータセットのアップロード#

データセットをバージョン管理されたClearMLデータセットとして登録するには、ルートフォルダに移動して以下を実行してください。

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data syncは、以下のシーケンスの省略形であり、明示的に実行することもできます。

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

Link to this sectionClearMLデータセットでのトレーニング#

データセットが登録されたら、IDを指定してトレーニングを開始します。

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

Link to this section👀 ハイパーパラメータ最適化#

実験とデータがバージョン管理されていれば、それを活用できます。追跡された各実験は環境全体(コード、インストール済みパッケージ、構成)をキャプチャするため、実行は完全に再現可能です。ClearMLでは実験をクローンし、パラメータを変更して自動的に再実行することができ、これがハイパーパラメータ最適化(HPO)の基礎となります。

ローカルでHPOを実行するには、付属のスクリプトを使用します。まず、実験マネージャーにトレーニングタスクが存在することを確認してください。スクリプトがそれをクローンし、ハイパーパラメータを変化させます。

utils/loggers/clearml/hpo.pyのテンプレートタスクIDを記入し、実行してください。

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

task.execute_locally()task.execute()に切り替えると、ジョブがClearMLキューにプッシュされ、リモートエージェントがそれを取得します。

YOLOv5指標を表示するClearMLのHPOダッシュボード

Link to this section🤯 リモート実行(高度)#

ローカルでのHPO実行は便利ですが、より強力なハードウェア(オンプレミスのGPUマシンやクラウドインスタンス)での実験が必要になることがよくあります。それがClearML Agentの役割です。

追跡された各実験には、別のマシンで再現するために必要なすべて(インストールされたパッケージ、コミットされていない変更、構成)が含まれています。ClearMLエージェントはキューをリッスンし、入ってくるタスクを取得して環境を再作成し、ジョブを実行し、スカラーとプロットを実験マネージャーにストリーミングして戻します。

クラウドVM、ローカルのGPUボックス、ラップトップなど、あらゆるマシンを以下のコマンドでClearMLエージェントに変えることができます。

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Link to this sectionクローン、編集、エンキュー#

エージェントが実行されている場合、UIから直接作業を割り当てることができます。

  • 🪄 実験を右クリックしてクローンを作成します。
  • 🎯 ハイパーパラメータを編集します。
  • ⏳ クローンされたタスクを右クリックし、ターゲットキューにエンキューします。

UIからタスクをエンキューする

Link to this sectionタスクのリモート実行#

また、ClearMLロガーがインスタンス化された後にtask.execute_remotely()を追加することで、実行中のスクリプトをプログラムでリモート実行するようにフラグを立てることもできます。train.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 None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

この変更後、トレーニングスクリプトを実行するとその行まで実行され、コードがパッケージ化されてキューに送信されます。

Link to this sectionオートスケーリングワーカー#

ClearMLには、キューに保留中の実験がある場合にAWS、GCP、またはAzureでリモートマシンを起動し、それらをClearMLエージェントに変換し、作業が完了するとシャットダウンするオートスケーラーが付属しているため、実際に実行されているコンピューティングリソースに対してのみ料金が発生します。

以下の入門ビデオをご覧ください。

ビデオを見る

Link to this section詳細#

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

コメント