レイチューンとハイパーパラメータの効率的なチューニングYOLO11
ハイパーパラメータのチューニングは、最適なハイパーパラメータのセットを発見することによって、モデルの性能を最高にするために不可欠である。これには、異なるハイパーパラメータで試行を実行し、各試行のパフォーマンスを評価することが含まれます。
Ultralytics YOLO11 とRay Tuneでチューニングを加速させる
Ultralytics YOLO11Ray Tune は、ハイパーパラメータのチューニングのために Ray Tune を組み込んでおり、YOLO11 モデルのハイパーパラメータの最適化を効率化します。Ray Tuneを使用すると、高度な検索ストラテジー、並列処理、早期停止を利用して、チューニングプロセスを迅速化することができます。
レイ・チューン
Ray Tuneは、効率性と柔軟性のために設計されたハイパーパラメータチューニングライブラリです。様々な探索戦略、並列性、早期停止戦略をサポートし、Ultralytics YOLO11 を含む一般的な機械学習フレームワークとシームレスに統合します。
との統合Weights & Biases
YOLO11 また、オプションで Weights & Biasesとの統合も可能です。
インストール
必要なパッケージをインストールするには
インストール
使用方法
使用方法
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 を使って、ハイパーパラメータのチューニングにカスタム探索空間を使用する方法を示します。カスタム検索空間を提供することで、関心のある特定のハイパーパラメータにチューニングプロセスを集中させることができます。
使用方法
上のコード・スニペットでは、"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()
基本的な実験レベルの分析
トライアルの結果の概要を把握できます。トライアル中にエラーがなかったかどうか、すぐに確認することができます。
基本的なトライアルレベルの分析
個々のトライアルのハイパーパラメータ構成と、最後に報告されたメトリクスにアクセスします。
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 モデルのハイパーパラメータをチューニングするには、以下の手順に従います:
-
必要なパッケージをインストールする:
-
YOLO11 、チューニングを開始します:
これは、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 チューニング・プロセスに統合する:
-
W&Bを設置する:
-
チューニングスクリプトを修正する:
このセットアップにより、チューニング・プロセスをモニターし、ハイパーパラメータの設定を追跡し、結果を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)
これは、チューニング・プロセス中に探索される初期学習率や運動量などのハイパーパラメータの範囲をカスタマイズする。高度な設定については、カスタム探索空間の例のセクションを参照してください。