コンテンツへスキップ

レイチューンとハイパーパラメータの効率的なチューニングYOLO11

ハイパーパラメータのチューニングは、最適なハイパーパラメータのセットを発見することによって、モデルの性能を最高にするために不可欠である。これには、異なるハイパーパラメータで試行を実行し、各試行のパフォーマンスを評価することが含まれます。

Ultralytics YOLO11 とRay Tuneでチューニングを加速させる

Ultralytics YOLO11Ray Tune は、ハイパーパラメータのチューニングのために Ray Tune を組み込んでおり、YOLO11 モデルのハイパーパラメータの最適化を効率化します。Ray Tuneを使用すると、高度な検索ストラテジー、並列処理、早期停止を利用して、チューニングプロセスを迅速化することができます。

レイ・チューン

レイ・チューンの概要

Ray Tuneは、効率性と柔軟性のために設計されたハイパーパラメータチューニングライブラリです。様々な探索戦略、並列性、早期停止戦略をサポートし、Ultralytics YOLO11 を含む一般的な機械学習フレームワークとシームレスに統合します。

との統合Weights & Biases

YOLO11 また、オプションで Weights & Biasesとの統合も可能です。

インストール

必要なパッケージをインストールするには

インストール

# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

使用方法

使用方法

from ultralytics import YOLO

# Load a YOLO11n model
model = YOLO("yolo11n.pt")

# Start tuning hyperparameters for YOLO11n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() メソッド・パラメータ

について tune() YOLO11 メソッドは、Ray Tune によるハイパーパラメータのチューニングのための使いやすいインターフェイスを提供します。チューニングプロセスをカスタマイズできるいくつかの引数を受け取ります。以下は各パラメータの詳細な説明です:

パラメータ タイプ 説明 デフォルト値
data str チューナーを実行するデータセット設定ファイル(YAML形式)。このファイルには、学習データと検証データのパス、およびその他のデータセット固有の設定を指定します。
space dict, optional Ray Tune のハイパーパラメータ探索空間を定義する辞書。各キーはハイパーパラメータ名に対応し、値はチューニング中に探索する値の範囲を指定します。提供されない場合、YOLO11 は、さまざまなハイパーパラメータを持つデフォルトの検索空間を使用します。
grace_period int, optional Ray Tune におけるASHA スケジューラの猶予時間(エポック)。スケジューラはこのエポック数より前にトライアルを終了することはなく、モデルが早期停止を決定する前に最低限の学習を行うことができます。 10
gpu_per_trial int, optional チューニング中にトライアルごとに割り当てるGPUの数。これは、特にマルチGPU 環境で、GPU の使用を管理するのに役立ちます。指定しない場合、チューナーは利用可能なすべての GPU を使用します。 なし
iterations int, optional チューニング中に実行する試行の最大数。このパラメータは、テストされるハイパーパラメータの組み合わせの総数を制御するのに役立ち、チューニングプロセスが無限に実行されないようにします。 10
**train_args dict, optional に渡す追加引数。 train() メソッドに渡すことができる。これらの引数には、学習エポック数などの設定を含めることができる、 バッチサイズなど、トレーニングに特化した構成になっている。 {}

これらのパラメータをカスタマイズすることで、特定のニーズと利用可能な計算リソースに合わせて、ハイパーパラメータ最適化プロセスを微調整することができます。

デフォルトの検索スペース

次の表は、YOLO11 with Ray Tune でハイパーパラメータをチューニングするためのデフォルトのサーチスペースパラメータの一覧です。各パラメータは tune.uniform().

パラメータ 値の範囲 説明
lr0 tune.uniform(1e-5, 1e-1) 初期学習率
lrf tune.uniform(0.01, 1.0) 最終学習率係数
momentum tune.uniform(0.6, 0.98) 勢い
weight_decay tune.uniform(0.0, 0.001) 体重減少
warmup_epochs tune.uniform(0.0, 5.0) ウォームアップ・エポック
warmup_momentum tune.uniform(0.0, 0.95) ウォームアップの勢い
box tune.uniform(0.02, 0.2) ボックスロス重量
cls tune.uniform(0.2, 4.0) 減量クラス
hsv_h tune.uniform(0.0, 0.1) 色相増強範囲
hsv_s tune.uniform(0.0, 0.9) 飽和増大範囲
hsv_v tune.uniform(0.0, 0.9) 値(輝度)増強範囲
degrees tune.uniform(0.0, 45.0) 回転増大範囲(度)
translate tune.uniform(0.0, 0.9) 翻訳増強範囲
scale tune.uniform(0.0, 0.9) 補強範囲の拡大
shear tune.uniform(0.0, 10.0) 剪断増大範囲(度)
perspective tune.uniform(0.0, 0.001) パースペクティブ拡張範囲
flipud tune.uniform(0.0, 1.0) 垂直フリップ増加確率
fliplr tune.uniform(0.0, 1.0) 水平フリップ増加確率
mosaic tune.uniform(0.0, 1.0) モザイク補強確率
mixup tune.uniform(0.0, 1.0) 混合補強確率
copy_paste tune.uniform(0.0, 1.0) コピペ補強確率

カスタム検索スペースの例

この例では、Ray Tune とYOLO11 を使って、ハイパーパラメータのチューニングにカスタム探索空間を使用する方法を示します。カスタム検索空間を提供することで、関心のある特定のハイパーパラメータにチューニングプロセスを集中させることができます。

使用方法

from ray import tune

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo11n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-1)},
    epochs=50,
    use_ray=True,
)

上のコード・スニペットでは、"yolo11n.pt" の事前学習された重みでYOLO モデルを作成します。そして tune() メソッドで、データセットの設定を "coco8.yaml "で指定する。初期学習率のためのカスタム探索空間を提供する。 lr0 lr0 "というキーと "lr0 "という値を持つ辞書を使う。 tune.uniform(1e-5, 1e-1).最後に、エポック数のような追加のトレーニング引数を、次のようにチューニングメソッドに直接渡します。 epochs=50.

レイ・チューンの結果を処理する

Ray Tune でハイパーパラメータのチューニング実験を実行した後、得られた結果について様々な分析を行 いたいと思うかもしれません。このガイドでは、これらの結果を処理・分析するための一般的なワークフローを紹介します。

ディレクトリからのチューニング実験結果の読み込み

を使ったチューニング実験を行った後、次のように述べた。 tuner.fit()ディレクトリから結果をロードできます。これは、特に最初のトレーニングスクリプトが終了した後に分析を実行する場合に便利です。

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

基本的な実験レベルの分析

トライアルの結果の概要を把握できます。トライアル中にエラーがなかったかどうか、すぐに確認することができます。

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

基本的なトライアルレベルの分析

個々のトライアルのハイパーパラメータ構成と、最後に報告されたメトリクスにアクセスします。

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

臨床試験で報告されたメトリクスの全履歴をプロットする

各試験で報告されたメトリクスの履歴をプロットして、メトリクスの経時変化を見ることができます。

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

概要

このドキュメントでは、Ultralytics を使用して Ray Tune で実行された実験結果を解析するための一般的なワークフローについて説明します。主なステップには、ディレクトリからの実験結果のロード、基本的な実験レベルおよびトライアルレベルの解析の実行、メトリクスのプロットなどがあります。

ハイパーパラメーターのチューニング実験を最大限に活用するために、Ray Tuneの「Analyze Results(結果の分析)」ドキュメントページをさらに詳しくご覧ください。

よくあるご質問

Ray Tuneを使用して、YOLO11 モデルのハイパーパラメータを調整するには?

Ray Tune を使用してUltralytics YOLO11 モデルのハイパーパラメータをチューニングするには、以下の手順に従います:

  1. 必要なパッケージをインストールする:

    pip install -U ultralytics "ray[tune]"
    pip install wandb # optional for logging
    
  2. YOLO11 、チューニングを開始します:

    from ultralytics import YOLO
    
    # Load a YOLO11 model
    model = YOLO("yolo11n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

これは、Ray Tuneの高度な検索ストラテジーと並列性を利用して、モデルのハイパーパラメーターを効率的に最適化します。詳しくはRay Tuneのドキュメントをご覧ください。

Ray TuneでYOLO11 、デフォルトのハイパーパラメータは何ですか?

Ultralytics YOLO11 は、Ray Tune でのチューニングに以下のデフォルトのハイパーパラメータを使用します:

パラメータ 値の範囲 説明
lr0 tune.uniform(1e-5, 1e-1) 初期学習率
lrf tune.uniform(0.01, 1.0) 最終学習率係数
momentum tune.uniform(0.6, 0.98) 勢い
weight_decay tune.uniform(0.0, 0.001) 体重減少
warmup_epochs tune.uniform(0.0, 5.0) ウォームアップ・エポック
box tune.uniform(0.02, 0.2) ボックスロス重量
cls tune.uniform(0.2, 4.0) 減量クラス
hsv_h tune.uniform(0.0, 0.1) 色相増強範囲
translate tune.uniform(0.0, 0.9) 翻訳増強範囲

これらのハイパーパラメータは、特定のニーズに合わせてカスタマイズすることができる。完全なリストと詳細については、ハイパーパラメータのチューニング・ガイドを参照してください。

YOLO11 モデルのチューニングにWeights & Biases を統合するには?

Weights & Biases (W&B) をUltralytics YOLO11 チューニング・プロセスに統合する:

  1. W&Bを設置する:

    pip install wandb
    
  2. チューニングスクリプトを修正する:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo11n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

このセットアップにより、チューニング・プロセスをモニターし、ハイパーパラメータの設定を追跡し、結果をW&Bで視覚化することができる。

YOLO11 、ハイパーパラメータの最適化にRay Tuneを使うべき理由は?

レイ・チューンは、ハイパーパラメータの最適化において多くの利点を提供する:

  • 高度な検索戦略: ベイズ最適化やHyperOptなどのアルゴリズムを活用し、効率的なパラメータ検索を実現。
  • 並列性:複数のトライアルの並列実行をサポートし、チューニングプロセスを大幅にスピードアップ。
  • 早期停止:ASHAのような戦略を採用し、パフォーマンスの低い試験を早期に終了させ、計算資源を節約する。

Ray TuneはUltralytics YOLO11シームレスに統合され、ハイパーパラメーターを効果的にチューニングするための使いやすいインターフェースを提供します。まずは、ハイパーパラメーターチューニングガイドをご覧ください。

YOLO11 ハイパーパラメータ・チューニングのためのカスタム探索空間を定義するには?

Ray Tune でYOLO11 ハイパーパラメータチューニングのためのカスタムサーチ空間を定義する:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

これは、チューニング・プロセス中に探索される初期学習率や運動量などのハイパーパラメータの範囲をカスタマイズする。高度な設定については、カスタム探索空間の例のセクションを参照してください。

📅作成:1年前 ✏️更新 3日前

コメント