Ray Tune ve YOLO26 ile Verimli Hiperparametre Ayarı

Hiperparametre ayarı, en uygun hiperparametre setini keşfederek modelin en yüksek performansa ulaşmasını sağlamak için hayati önem taşır. Bu süreç, farklı hiperparametrelerle denemeler yapmayı ve her denemenin performansını değerlendirmeyi içerir.

Ultralytics YOLO26 ve Ray Tune ile Ayarlamayı Hızlandırın

Ultralytics YOLO26, hiperparametre ayarı için Ray Tune'u bünyesinde barındırır ve YOLO26 model hiperparametrelerinin optimizasyonunu kolaylaştırır. Ray Tune ile ayarlama sürecini hızlandırmak için gelişmiş arama stratejilerinden, paralellikten ve erken durdurma özelliğinden yararlanabilirsin.

Ray Tune

Ray Tune hyperparameter optimization workflow

Ray Tune, verimlilik ve esneklik için tasarlanmış bir hiperparametre ayarlama kütüphanesidir. Çeşitli arama stratejilerini, paralelliği ve erken durdurma stratejilerini destekler ve Ultralytics YOLO26 dahil olmak üzere popüler makine öğrenimi çerçeveleriyle sorunsuz bir şekilde entegre olur.

Weights & Biases ile Entegrasyon

YOLO26 ayrıca ayarlama sürecini izlemek için Weights & Biases ile isteğe bağlı entegrasyona olanak tanır.

Kurulum

Gerekli paketleri yüklemek için şunu çalıştır:

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

# Optionally install W&B for logging
pip install wandb

Kullanım

Kullanım
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() Metot Parametreleri

YOLO26'daki tune() metodu, Ray Tune ile hiperparametre ayarı için kullanımı kolay bir arayüz sağlar. Ayarlama sürecini özelleştirmeni sağlayan çeşitli argümanları kabul eder. Aşağıda her parametrenin ayrıntılı açıklaması yer almaktadır:

ParametreTürAçıklamaVarsayılan Değer
datastrTuner'ı çalıştırmak için veri kümesi yapılandırma dosyası (YAML formatında). Bu dosya, eğitim ve doğrulama verisi yollarının yanı sıra diğer veri kümesine özgü ayarları da belirtmelidir.
spacedict, optionalRay Tune için hiperparametre arama uzayını tanımlayan bir sözlük. Her anahtar bir hiperparametre ismine karşılık gelir ve değer, ayarlama sırasında keşfedilecek değer aralığını belirtir. Sağlanmazsa, YOLO26 çeşitli hiperparametrelerle varsayılan bir arama uzayı kullanır.
grace_periodint, optionalThe grace period in epochs for the ASHA scheduler in Ray Tune. The scheduler will not terminate any trial before this number of epochs, allowing the model to have some minimum training before making a decision on early stopping.10
gpu_per_trialint, optionalAyarlama sırasında deneme başına tahsis edilecek GPU sayısı. Bu, özellikle çoklu GPU ortamlarında GPU kullanımını yönetmeye yardımcı olur. Sağlanmazsa, tuner mevcut tüm GPU'ları kullanır.None
iterationsint, optionalAyarlama sırasında çalıştırılacak maksimum deneme sayısı. Bu parametre, toplam hiperparametre kombinasyonu sayısını kontrol etmeye yardımcı olur ve ayarlama sürecinin sonsuza kadar çalışmamasını sağlar.10
search_algstr or Searcher, optionalKullanılacak Ray Tune arama stratejisi. Doğrudan bir Ray arayıcı nesnesi aktarabilir veya optuna, hyperopt, bayesopt, bohb, hebo, nevergrad, zoopt, ax veya random gibi desteklenen bir dizge kullanabilirsin. Dizge tabanlı arayıcılar otomatik olarak varsayılan görev metriğini ve mode="max" ayarını kullanır. Sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator'a döner.None
**train_argsdict, optionalAyarlama sırasında train() metoduna aktarılacak ek argümanlar. Bu argümanlar eğitim epok sayısı, toplu iş boyutu ve diğer eğitime özgü yapılandırmalar gibi ayarları içerebilir.{}

Bu parametreleri özelleştirerek, hiperparametre optimizasyon sürecini özel ihtiyaçlarına ve mevcut hesaplama kaynaklarına göre ince ayar yapabilirsin.

Varsayılan Arama Uzayı Açıklaması

Aşağıdaki tablo, Ray Tune ile YOLO26'da hiperparametre ayarı için varsayılan arama uzayı parametrelerini listeler. Her parametre, tune.uniform() ile tanımlanan belirli bir değer aralığına sahiptir.

ParametreAralıkAçıklama
lr0tune.uniform(1e-5, 1e-2)Optimizasyon sırasında adım boyutunu kontrol eden başlangıç öğrenme oranı. Daha yüksek değerler eğitimi hızlandırır ancak kararsızlığa neden olabilir.
lrftune.uniform(0.01, 1.0)Eğitimin sonunda öğrenme oranının ne kadar azalacağını belirleyen nihai öğrenme oranı çarpanı.
momentumtune.uniform(0.7, 0.98)Eğitimi hızlandırmaya ve yerel minimumların üstesinden gelmeye yardımcı olan, optimize edici için momentum çarpanı.
weight_decaytune.uniform(0.0, 0.001)Büyük ağırlık değerlerini cezalandırarak aşırı öğrenmeyi önleyen düzenlileştirme parametresi.
warmup_epochstune.uniform(0.0, 5.0)Erken eğitimi stabilize etmek için öğrenme oranının kademeli olarak arttığı epok sayısı.
warmup_momentumtune.uniform(0.0, 0.95)Isınma dönemi boyunca kademeli olarak artan başlangıç momentum değeri.
boxtune.uniform(1.0, 20.0)Modeldeki yerelleştirme doğruluğunu dengeleyen, sınırlayıcı kutu kaybı bileşeni için ağırlık.
clstune.uniform(0.1, 4.0)Modeldeki sınıf tahmini doğruluğunu dengeleyen, sınıflandırma kaybı bileşeni için ağırlık.
dfltune.uniform(0.4, 12.0)Hassas sınırlayıcı kutu yerelleştirmesini vurgulayan Dağılımsal Odak Kaybı (Distribution Focal Loss) bileşeni için ağırlık.
hsv_htune.uniform(0.0, 0.1)Modelin genelleştirilmesine yardımcı olmak için renk değişkenliği sunan ton artırma aralığı.
hsv_stune.uniform(0.0, 0.9)Sağlamlığı artırmak için renk yoğunluğunu değiştiren doygunluk artırma aralığı.
hsv_vtune.uniform(0.0, 0.9)Modelin çeşitli aydınlatma koşullarında performans göstermesine yardımcı olan değer (parlaklık) artırma aralığı.
degreestune.uniform(0.0, 45.0)Döndürülmüş nesnelerin tanınmasını iyileştiren, derece cinsinden döndürme artırma aralığı.
translatetune.uniform(0.0, 0.9)Görüntüleri yatay ve dikey olarak kaydıran öteleme artırma aralığı.
scaletune.uniform(0.0, 0.95)Nesneleri farklı mesafelerde simüle eden ölçekleme artırma aralığı.
sheartune.uniform(0.0, 10.0)Perspektif değişimlerini simüle eden, derece cinsinden kesme artırma aralığı.
perspectivetune.uniform(0.0, 0.001)3B bakış açısı değişikliklerini simüle eden perspektif artırma aralığı.
flipudtune.uniform(0.0, 1.0)Veri kümesi çeşitliliğini artıran dikey çevirme artırma olasılığı.
fliplrtune.uniform(0.0, 1.0)Simetrik nesneler için yararlı olan yatay çevirme artırma olasılığı.
bgrtune.uniform(0.0, 1.0)Renk değişmezliğine yardımcı olan BGR kanalı değiştirme artırma olasılığı.
mosaictune.uniform(0.0, 1.0)Dört görüntüyü tek bir eğitim örneğinde birleştiren mozaik artırma olasılığı.
mixuptune.uniform(0.0, 1.0)İki görüntüyü ve etiketlerini birbirine karıştıran Mixup artırma olasılığı.
cutmixtune.uniform(0.0, 1.0)Yerel özellikleri korurken görüntü bölgelerini birleştiren Cutmix artırma olasılığı.
copy_pastetune.uniform(0.0, 1.0)Örnek çeşitliliğini artırmak için görüntüler arasında nesneler aktaran kopyala-yapıştır artırma olasılığı.
close_mosaictune.randint(0.0, 11)Tamamlanmadan önce eğitimi stabilize etmek için son N epokta mozaiği devre dışı bırakır.

Özel Arama Uzayı Örneği

Bu örnekte, Ray Tune ve YOLO26 ile hiperparametre ayarı için özel bir arama uzayının nasıl kullanılacağını gösteriyoruz. Özel bir arama uzayı sağlayarak, ayarlama sürecini ilgilendiğin belirli hiperparametrelere odaklayabilirsin.

Kullanım
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-2)},
    epochs=50,
    use_ray=True,
)

In the code snippet above, we create a YOLO model with the "yolo26n.pt" pretrained weights. Then, we call the tune() method, specifying the dataset configuration with "coco8.yaml". We provide a custom search space for the initial learning rate lr0 using a dictionary with the key "lr0" and the value tune.uniform(1e-5, 1e-2). Finally, we pass additional training arguments, such as the number of epochs directly to the tune method as epochs=50.

Arama Algoritması Örneği

İsme göre bir Ray Tune arama stratejisi seçebilirsin. Dizge tabanlı arama algoritmaları için Ultralytics, otomatik olarak mevcut görevin varsayılan optimizasyon metriğini ve mode="max" ayarını kullanacaktır. search_alg sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator'ı kullanır.

`model.tune()` ile dizge `search_alg` kullanımı
from ultralytics import YOLO

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

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg="optuna",
    use_ray=True,
)

Arayıcının örnekleyicisini özelleştirmen veya metriğini ve optimizasyon modunu geçersiz kılman gerekiyorsa, dizge yerine örneklenmiş bir Ray Tune arayıcı nesnesi aktar.

`model.tune()` ile `OptunaSearch` nesnesi kullanımı
from ray.tune.search.optuna import OptunaSearch

from ultralytics import YOLO

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

# Define a searcher
searcher = OptunaSearch(
    metric="metrics/mAP50-95(B)",
    mode="max",
)

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg=searcher,
    use_ray=True,
)

Ray Tune ile Kesintiye Uğrayan Hiperparametre Ayarlama Oturumuna Devam Etme

You can resume an interrupted Ray Tune session by passing resume=True. You can optionally pass the directory name used by Ray Tune under runs/{task} to resume. Otherwise, it would resume the last interrupted session. You don't need to provide the iterations and space again, but you need to provide the rest of the training arguments again including data and epochs.

`model.tune()` ile `resume=True` Kullanımı
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 Sonuçlarını İşleme

Ray Tune ile bir hiperparametre ayarlama deneyi çalıştırdıktan sonra, elde edilen sonuçlar üzerinde çeşitli analizler yapmak isteyebilirsin. Bu kılavuz, bu sonuçları işlemek ve analiz etmek için yaygın iş akışlarında sana yol gösterecektir.

Bir Dizin İçinden Tune Deney Sonuçlarını Yükleme

tuner.fit() ile ayarlama deneyi çalıştırdıktan sonra, sonuçları bir dizinden yükleyebilirsin. Bu, özellikle ilk eğitim betiği kapandıktan sonra analiz yapıyorsan yararlıdır.

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()

Temel Deney Seviyesi Analizi

Denemelerin nasıl performans gösterdiğine dair genel bir bakış elde et. Denemeler sırasında herhangi bir hata olup olmadığını hızlıca kontrol edebilirsin.

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

Temel Deneme Seviyesi Analizi

Bireysel deneme hiperparametre yapılandırmalarına ve en son bildirilen metriklere eriş.

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

Bir Deneme İçin Bildirilen Metriklerin Tüm Geçmişini Çizdirme

Metriklerin zaman içinde nasıl geliştiğini görmek için her deneme için bildirilen metriklerin geçmişini çizebilirsin.

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()

Özet

Bu kılavuzda, Ultralytics kullanarak Ray Tune ile çalıştırılan deneylerin sonuçlarını analiz etmek için yaygın iş akışlarını ele aldık. Temel adımlar arasında deney sonuçlarını bir dizinden yükleme, temel deney seviyesi ve deneme seviyesi analizi yapma ve metrikleri çizdirme yer alır.

Hiperparametre ayarlama deneylerinden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Et belgeleri sayfasına göz atarak daha fazlasını keşfet.

SSS

YOLO26 modelimin hiperparametrelerini Ray Tune kullanarak nasıl ayarlarım?

Ultralytics YOLO26 modelinin hiperparametrelerini Ray Tune kullanarak ayarlamak için şu adımları izle:

  1. Gerekli paketleri kur:

    pip install -U ultralytics "ray[tune]"
    pip install wandb # optional for logging
  2. YOLO26 modelini yükle ve ayarlamaya başla:

    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)

Bu, modelinin hiperparametrelerini verimli bir şekilde optimize etmek için Ray Tune'un gelişmiş arama stratejilerini ve paralelliğini kullanır. Daha fazla bilgi için Ray Tune belgelerine göz at.

Ray Tune ile YOLO26 ayarlaması için varsayılan hiperparametreler nelerdir?

Ultralytics YOLO26, Ray Tune ile ayarlama için şu varsayılan hiperparametreleri kullanır:

ParametreDeğer AralığıAçıklama
lr0tune.uniform(1e-5, 1e-2)Başlangıç öğrenme oranı
lrftune.uniform(0.01, 1.0)Nihai öğrenme oranı çarpanı
momentumtune.uniform(0.7, 0.98)Momentum
weight_decaytune.uniform(0.0, 0.001)Ağırlık azalımı
warmup_epochstune.uniform(0.0, 5.0)Isınma dönemleri
boxtune.uniform(1.0, 20.0)Kutu kaybı ağırlığı
clstune.uniform(0.1, 4.0)Sınıf kaybı ağırlığı
dfltune.uniform(0.4, 12.0)DFL kaybı ağırlığı
hsv_htune.uniform(0.0, 0.1)Renk tonu artırma aralığı
translatetune.uniform(0.0, 0.9)Öteleme artırma aralığı

Bu hiperparametreler, özel ihtiyaçlarına uyacak şekilde özelleştirilebilir. Tam liste ve daha fazla detay için Hiperparametre Ayarlama kılavuzuna göz at.

Weights & Biases'i YOLO26 model ayarlamama nasıl entegre edebilirim?

Weights & Biases (W&B) aracını Ultralytics YOLO26 ayarlama sürecinle entegre etmek için:

  1. W&B'yi yükle:

    pip install wandb
  2. Ayarlama betiğini değiştir:

    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)

Bu kurulum, ayarlama sürecini izlemeni, hiperparametre yapılandırmalarını takip etmeni ve sonuçları W&B içinde görselleştirmeni sağlayacaktır.

YOLO26 ile hiperparametre optimizasyonu için neden Ray Tune kullanmalıyım?

Ray Tune, hiperparametre optimizasyonu için sayısız avantaj sunar:

  • Gelişmiş Arama Stratejileri: Verimli parametre arayışı için Bayesian Optimization ve HyperOpt gibi algoritmalar kullanır.
  • Paralellik: Birden fazla denemenin paralel yürütülmesini destekleyerek ayarlama sürecini önemli ölçüde hızlandırır.
  • Erken Durdurma: Düşük performans gösteren denemeleri erkenden sonlandırmak için ASHA gibi stratejiler kullanarak hesaplama kaynaklarından tasarruf sağlar.

Ray Tune, Ultralytics YOLO26 ile sorunsuz bir şekilde entegre olur ve hiperparametreleri etkili bir şekilde ayarlamak için kullanımı kolay bir arayüz sağlar. Başlamak için Hiperparametre Ayarlama kılavuzuna göz at.

YOLO26 hiperparametre ayarlaması için nasıl özel bir arama alanı tanımlayabilirim?

Ray Tune ile YOLO26 hiperparametre ayarlaman için özel bir arama alanı tanımlamak için:

from ray import tune

from ultralytics import YOLO

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

Bu, ayarlama sürecinde keşfedilecek başlangıç öğrenme oranı ve momentum gibi hiperparametrelerin aralığını özelleştirir. Gelişmiş yapılandırmalar için Özel Arama Alanı Örneği bölümüne bak.

Yorumlar