Ray TuneとYOLO26による効率的なハイパーパラメータチューニング
ハイパーパラメータ調整は、最適なハイパーパラメータのセットを見つけることにより、モデルのパフォーマンスを最大限に引き出すために不可欠です。これには、異なるハイパーパラメータで試行を繰り返し、各試行のパフォーマンスを評価することが含まれます。
Ultralytics YOLO26とRay Tuneによるチューニングの高速化
Ultralytics YOLO26はハイパーパラメータチューニングにRay Tuneを組み込んでおり、YOLO26モデルのハイパーパラメータ最適化を効率化します。Ray Tuneを使用することで、高度な探索戦略、並列処理、早期停止を活用し、チューニングプロセスを迅速化できます。
Ray Tune

Ray Tuneは、効率性と柔軟性を追求して設計されたハイパーパラメータチューニングライブラリです。様々な探索戦略、並列処理、早期停止戦略をサポートし、Ultralytics YOLO26を含む主要な機械学習フレームワークとシームレスに統合されます。
Weights & Biases との統合
YOLO26は、チューニングプロセスの監視のために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 YOLO26n model
model = YOLO("yolo26n.pt")
# Start tuning hyperparameters for YOLO26n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)
tune() メソッドのパラメータ
The tune() YOLO26のメソッドは、Ray Tuneを用いたハイパーパラメータチューニングのための使いやすいインターフェースを提供します。チューニングプロセスをカスタマイズできるいくつかの引数を受け入れます。以下に各パラメータの詳細な説明を示します。
| パラメータ | 種類 | 説明 | デフォルト値 |
|---|---|---|---|
data | str | チューナーを実行するためのデータセット構成ファイル(YAML形式)。このファイルには、トレーニングと検証データのパス、およびその他のデータセット固有の設定を指定する必要があります。 | |
space | dict, optional | Ray Tuneのハイパーパラメータ探索空間を定義する辞書です。各キーはハイパーパラメータ名に対応し、値はチューニング中に探索する値の範囲を指定します。指定されない場合、YOLO26は様々なハイパーパラメータを持つデフォルトの探索空間を使用します。 | |
grace_period | int, optional | Ray TuneのASHAスケジューラにおけるエポック単位の猶予期間。スケジューラは、このエポック数より前にトライアルを終了することはありません。これにより、モデルは早期停止の決定を下す前に、最小限のトレーニングを行うことができます。 | 10 |
gpu_per_trial | int, optional | チューニング中に試行ごとに割り当てるGPUの数。これは、特にマルチGPU環境でGPUの使用量を管理するのに役立ちます。提供されていない場合、チューナーは利用可能なすべてのGPUを使用します。 | None |
iterations | int, optional | チューニング中に実行する試行の最大数。このパラメーターは、テストされるハイパーパラメーターの組み合わせの総数を制御し、チューニングプロセスがいつまでも実行されないようにするのに役立ちます。 | 10 |
**train_args | dict, optional | に渡す追加の引数 train() チューニング中のメソッド。これらの引数には、トレーニングエポック数などの設定が含まれます。 バッチサイズ)、およびその他のトレーニング固有の構成。 | {} |
これらのパラメータをカスタマイズすることで、特定のニーズや利用可能な計算リソースに合わせて、ハイパーパラメータ最適化プロセスを微調整できます。
デフォルトの探索空間の説明
以下の表は、Ray Tuneを用いたYOLO26のハイパーパラメータチューニングにおけるデフォルトの探索空間パラメータを一覧表示しています。各パラメータには、によって定義された特定の値の範囲があります 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) | Translation拡張は、画像を水平方向および垂直方向にシフトさせる範囲を指定します。 |
scale | tune.uniform(0.0, 0.9) | 異なる距離にある物体をシミュレートするスケーリング拡張の範囲。 |
shear | tune.uniform(0.0, 10.0) | パースペクティブシフトをシミュレートする、度単位でのシア拡張範囲。 |
perspective | tune.uniform(0.0, 0.001) | 3D視点の変化をシミュレートするパースペクティブ拡張の範囲。 |
flipud | tune.uniform(0.0, 1.0) | データセットの多様性を高める、垂直方向の反転拡張の確率。 |
fliplr | tune.uniform(0.0, 1.0) | 左右対称のオブジェクトに役立つ、水平方向の反転拡張の確率。 |
mosaic | tune.uniform(0.0, 1.0) | 4つの画像を1つのトレーニングサンプルに結合するモザイク拡張の確率。 |
mixup | tune.uniform(0.0, 1.0) | 2つの画像とそのラベルをブレンドするMixupオーグメンテーション確率。 |
cutmix | tune.uniform(0.0, 1.0) | 局所的な特徴を維持しながら画像領域を結合し、部分的に遮られたオブジェクトの検出を改善するCutmix拡張の確率。 |
copy_paste | tune.uniform(0.0, 1.0) | インスタンスの多様性を高めるために、イメージ間でオブジェクトを転送するコピー&ペースト拡張の確率。 |
カスタム探索空間の例
この例では、Ray TuneとYOLO26を用いたハイパーパラメータチューニングにカスタム探索空間を使用する方法を示します。カスタム探索空間を提供することで、チューニングプロセスを特定の関心のあるハイパーパラメータに集中させることができます。
使用法
from ray import tune
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.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,
)
上記のコードスニペットでは、「yolo26n.pt」の事前学習済み重みを持つYOLOモデルを作成します。次に、を呼び出します tune() メソッドで、データセット構成を「coco8.yaml」で指定します。初期学習率のためにカスタム探索空間を提供します。 lr0 キー「lr0」と値を持つ辞書を使用する tune.uniform(1e-5, 1e-1)。最後に、エポック数などの追加のトレーニング引数を、tuneメソッドに直接渡します。 epochs=50.
Ray Tuneで中断されたハイパーパラメータ調整セッションを再開する
中断されたRay Tuneセッションを渡すことで再開できます。 resume=Trueオプションでディレクトリを渡すことができます。 name Ray Tuneで使用 runs/{task} 再開するには、以下のようにします。そうでない場合、最後に中断されたセッションが再開されます。以前のトレーニング引数を指定する必要はありません。 iterations および space 再度実行する必要がありますが、トレーニング引数の残りの部分( data および epochs.
使用 resume=True with model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Resume previous run
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)
# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)
Ray Tuneの結果の処理
Ray Tune を使用してハイパーパラメータチューニング実験を実行した後、取得した結果に対してさまざまな分析を実行したい場合があります。このガイドでは、これらの結果を処理および分析するための一般的なワークフローについて説明します。
ディレクトリから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を使用してYOLO26モデルのハイパーパラメータをチューニングするにはどうすればよいですか?
Ray Tuneを使用してUltralytics YOLO26モデルのハイパーパラメータをチューニングするには、以下の手順に従ってください。
必要なパッケージをインストール:
pip install -U ultralytics "ray[tune]" pip install wandb # optional for loggingYOLO26モデルをロードし、チューニングを開始します:
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Start tuning with the COCO8 dataset result_grid = model.tune(data="coco8.yaml", use_ray=True)
これは、Ray Tuneの高度な検索戦略と並列処理を利用して、モデルのハイパーパラメータを効率的に最適化します。詳細については、Ray Tuneドキュメントをご覧ください。
Ray Tuneを使用したYOLO26チューニングのデフォルトハイパーパラメータは何ですか?
Ultralytics YOLO26は、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) | Weight decay(荷重減衰) |
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) | 平行移動拡張範囲 |
これらのハイパーパラメータは、特定のニーズに合わせてカスタマイズできます。完全なリストと詳細については、ハイパーパラメータ調整ガイドを参照してください。
Weights & BiasesをYOLO26モデルのチューニングに統合するにはどうすればよいですか?
Ultralytics YOLO26のチューニングプロセスにWeights & Biases (W&B) を統合するには:
W&Bをインストール:
pip install wandbチューニングスクリプトを変更:
import wandb from ultralytics import YOLO wandb.init(project="YOLO-Tuning", entity="your-entity") # Load YOLO model model = YOLO("yolo26n.pt") # Tune hyperparameters result_grid = model.tune(data="coco8.yaml", use_ray=True)
この設定により、チューニングプロセスを監視し、ハイパーパラメータ構成を追跡し、W&Bで結果を視覚化できます。
YOLO26のハイパーパラメータ最適化にRay Tuneを使用すべき理由は何ですか?
Ray Tuneは、ハイパーパラメータ最適化に数多くの利点をもたらします。
- 高度な検索戦略: ベイズ最適化やHyperOptなどのアルゴリズムを利用して、効率的なパラメータ探索を実現します。
- 並列処理: 複数のトライアルの並列実行をサポートし、チューニングプロセスを大幅に高速化します。
- 早期停止: ASHAなどの戦略を採用して、パフォーマンスの低いトライアルを早期に終了させ、計算リソースを節約します。
Ray TuneはUltralytics YOLO26とシームレスに統合されており、ハイパーパラメータを効果的にチューニングするための使いやすいインターフェースを提供します。開始するには、ハイパーパラメータチューニングガイドをご覧ください。
YOLO26のハイパーパラメータチューニングのためのカスタム探索空間を定義するにはどうすればよいですか?
Ray Tuneを使用してYOLO26のハイパーパラメータチューニングのためのカスタム検索空間を定義するには:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo26n.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)
これにより、初期学習率やモメンタムなどのハイパーパラメータの範囲をカスタマイズして、チューニングプロセス中に探索できます。高度な構成については、カスタム検索空間の例セクションを参照してください。