─░├žeri─če ge├ž

Ray Tune ile Verimli Hiperparametre Ayarlama ve YOLOv8

Hyperparameter tuning is vital in achieving peak model performance by discovering the optimal set of hyperparameters. This involves running trials with different hyperparameters and evaluating each trial's performance.

Ultralytics YOLOv8 ve Ray Tune ile Ayarlamay─▒ H─▒zland─▒r─▒n

Ultralytics YOLOv8 hiperparametre ayar─▒ i├žin Ray Tune'u i├žerir ve YOLOv8 model hiperparametrelerinin optimizasyonunu kolayla┼čt─▒r─▒r. Ray Tune ile ayarlama s├╝recini h─▒zland─▒rmak i├žin geli┼čmi┼č arama stratejilerini, paralelli─či ve erken durdurmay─▒ kullanabilirsiniz.

Ray Tune

Ray Tune Genel Bak─▒┼č

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 YOLOv8 dahil olmak ├╝zere pop├╝ler makine ├Â─črenimi ├žer├ževeleriyle sorunsuz bir ┼čekilde entegre olur.

ile Entegrasyon Weights & Biases

YOLOv8 ile iste─če ba─čl─▒ entegrasyona da izin verir. Weights & Biases ayarlama s├╝recini izlemek i├žin.

Kurulum

Gerekli paketleri y├╝klemek i├žin ├žal─▒┼čt─▒r─▒n:

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 YOLOv8n model
model = YOLO("yolov8n.pt")

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

tune() Y├Ântem Parametreleri

Bu tune() YOLOv8 adresindeki y├Ântem, Ray Tune ile hiperparametre ayar─▒ i├žin kullan─▒m─▒ kolay bir aray├╝z sa─člar. Ayarlama s├╝recini ├Âzelle┼čtirmenize olanak tan─▒yan ├že┼čitli arg├╝manlar─▒ kabul eder. A┼ča─č─▒da her parametrenin ayr─▒nt─▒l─▒ bir a├ž─▒klamas─▒ bulunmaktad─▒r:

Parametre Tip A├ž─▒klama Varsay─▒lan De─čer
data str Ayarlay─▒c─▒y─▒ ├žal─▒┼čt─▒rmak i├žin veri k├╝mesi yap─▒land─▒rma dosyas─▒ (YAML bi├žiminde). Bu dosya, e─čitim ve do─črulama veri yollar─▒n─▒n yan─▒ s─▒ra veri k├╝mesine ├Âzg├╝ di─čer ayarlar─▒ da belirtmelidir.
space dict, optional Ray Tune i├žin hiperparametre arama alan─▒n─▒ tan─▒mlayan bir s├Âzl├╝k. Her anahtar bir hiperparametre ad─▒na kar┼č─▒l─▒k gelir ve de─čer, ayarlama s─▒ras─▒nda ke┼čfedilecek de─čer aral─▒─č─▒n─▒ belirtir. Sa─članmam─▒┼čsa, YOLOv8 ├že┼čitli hiperparametrelerle varsay─▒lan bir arama alan─▒ kullan─▒r.
grace_period int, optional Ray Tune'da ASHA zaman lay─▒c─▒s─▒ i├žin epok cinsinden ├Âdemesiz d├Ânem. Zamanlay─▒c─▒, bu epok say─▒s─▒ndan ├Ânce herhangi bir denemeyi sonland─▒rmayacak ve modelin erken durdurma karar─▒ vermeden ├Ânce minimum e─čitim almas─▒na izin verecektir. 10
gpu_per_trial int, optional Ayarlama 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, ayarlay─▒c─▒ mevcut t├╝m GPU'lar─▒ kullanacakt─▒r. Hi├žbiri
iterations int, optional Ayarlama s─▒ras─▒nda ├žal─▒┼čt─▒r─▒lacak maksimum deneme say─▒s─▒. Bu parametre, test edilen hiperparametre kombinasyonlar─▒n─▒n toplam say─▒s─▒n─▒n kontrol edilmesine yard─▒mc─▒ olarak ayarlama s├╝recinin s├╝resiz olarak ├žal─▒┼čmamas─▒n─▒ sa─člar. 10
**train_args dict, optional 'ye iletilecek ek arg├╝manlar train() ayarlama s─▒ras─▒nda y├Ântem. Bu arg├╝manlar e─čitim epoklar─▒n─▒n say─▒s─▒, y─▒─č─▒n boyutu ve e─čitime ├Âzg├╝ di─čer konfig├╝rasyonlar gibi ayarlar─▒ i├žerebilir. {}

Bu parametreleri ├Âzelle┼čtirerek, hiperparametre optimizasyon s├╝recini ├Âzel ihtiya├žlar─▒n─▒za ve mevcut hesaplama kaynaklar─▒n─▒za uyacak ┼čekilde ince ayar yapabilirsiniz.

Varsay─▒lan Arama Alan─▒ A├ž─▒klama

A┼ča─č─▒daki tabloda YOLOv8 adresinde Ray Tune ile hiperparametre ayarlama i├žin varsay─▒lan arama alan─▒ parametreleri listelenmektedir. Her parametrenin ┼ču ┼čekilde tan─▒mlanan belirli bir de─čer aral─▒─č─▒ vard─▒r tune.uniform().

Parametre De─čer Aral─▒─č─▒ A├ž─▒klama
lr0 tune.uniform(1e-5, 1e-1) ─░lk ├Â─črenme oran─▒
lrf tune.uniform(0.01, 1.0) Nihai ├Â─črenme oran─▒ fakt├Âr├╝
momentum tune.uniform(0.6, 0.98) Momentum
weight_decay tune.uniform(0.0, 0.001) A─č─▒rl─▒k azalmas─▒
warmup_epochs tune.uniform(0.0, 5.0) Is─▒nma d├Ânemleri
warmup_momentum tune.uniform(0.0, 0.95) Is─▒nma momentumu
box tune.uniform(0.02, 0.2) Kutu kilo kayb─▒
cls tune.uniform(0.2, 4.0) S─▒n─▒f kilo kayb─▒
hsv_h tune.uniform(0.0, 0.1) Ton b├╝y├╝tme aral─▒─č─▒
hsv_s tune.uniform(0.0, 0.9) Doygunluk art─▒rma aral─▒─č─▒
hsv_v tune.uniform(0.0, 0.9) De─čer (parlakl─▒k) art─▒rma aral─▒─č─▒
degrees tune.uniform(0.0, 45.0) Rotasyon b├╝y├╝tme aral─▒─č─▒ (derece)
translate tune.uniform(0.0, 0.9) ├çeviri b├╝y├╝tme aral─▒─č─▒
scale tune.uniform(0.0, 0.9) ├ľl├žek b├╝y├╝tme aral─▒─č─▒
shear tune.uniform(0.0, 10.0) Kesme b├╝y├╝tme aral─▒─č─▒ (derece)
perspective tune.uniform(0.0, 0.001) Perspektif b├╝y├╝tme aral─▒─č─▒
flipud tune.uniform(0.0, 1.0) Dikey ├ževirme b├╝y├╝tme olas─▒l─▒─č─▒
fliplr tune.uniform(0.0, 1.0) Yatay ├ževirme b├╝y├╝tme olas─▒l─▒─č─▒
mosaic tune.uniform(0.0, 1.0) Mozaik b├╝y├╝tme olas─▒l─▒─č─▒
mixup tune.uniform(0.0, 1.0) Kar─▒┼č─▒kl─▒k art─▒rma olas─▒l─▒─č─▒
copy_paste tune.uniform(0.0, 1.0) Kopyalama-yap─▒┼čt─▒rma art─▒rma olas─▒l─▒─č─▒

├ľzel Arama Alan─▒ ├ľrne─či

Bu ├Ârnekte, Ray Tune ve YOLOv8 ile hiperparametre ayar─▒ i├žin ├Âzel bir arama alan─▒n─▒n nas─▒l kullan─▒laca─č─▒n─▒ g├Âsteriyoruz. ├ľzel bir arama alan─▒ sa─člayarak, ayarlama s├╝recini ilgilenilen belirli hiperparametreler ├╝zerine odaklayabilirsiniz.

Kullan─▒m

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolov8n.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,
)

Yukar─▒daki kod par├žas─▒nda, "yolov8n.pt" ├Ân e─čitimli a─č─▒rl─▒klarla bir YOLO modeli olu┼čturuyoruz. Daha sonra tune() y├Ântemini kullanarak, veri k├╝mesi yap─▒land─▒rmas─▒n─▒ "coco8.yaml" ile belirtiyoruz. ─░lk ├Â─črenme oran─▒ i├žin ├Âzel bir arama alan─▒ sa─čl─▒yoruz lr0 "lr0" anahtar─▒na ve de─čerine sahip bir s├Âzl├╝k kullanarak tune.uniform(1e-5, 1e-1). Son olarak, epok say─▒s─▒ gibi ek e─čitim arg├╝manlar─▒n─▒ do─črudan ayarlama y├Ântemine ┼ču ┼čekilde aktar─▒yoruz epochs=50.

I┼č─▒n Ayar─▒ Sonu├žlar─▒n─▒n ─░┼členmesi

Ray Tune ile bir hiperparametre ayarlama deneyi y├╝r├╝tt├╝kten sonra, elde edilen sonu├žlar ├╝zerinde ├že┼čitli analizler yapmak isteyebilirsiniz. Bu k─▒lavuz, bu sonu├žlar─▒ i┼člemek ve analiz etmek i├žin yayg─▒n i┼č ak─▒┼člar─▒n─▒ size g├Âsterecektir.

Dizinden Tune Deneyi Sonu├žlar─▒n─▒ Y├╝kleme

ile ayarlama deneyini ├žal─▒┼čt─▒rd─▒ktan sonra tuner.fit()'yi kullanarak sonu├žlar─▒ bir dizinden y├╝kleyebilirsiniz. Bu, ├Âzellikle analizi ilk e─čitim komut dosyas─▒ndan ├ž─▒kt─▒ktan sonra ger├žekle┼čtiriyorsan─▒z kullan─▒┼čl─▒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 yap─▒ld─▒─č─▒na dair genel bir bak─▒┼č elde edin. Denemeler s─▒ras─▒nda herhangi bir hata olup olmad─▒─č─▒n─▒ h─▒zl─▒ca kontrol edebilirsiniz.

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

Temel Deneme Seviyesi Analizi

Bireysel deneme hiperparametre konfig├╝rasyonlar─▒na ve son raporlanan metriklere eri┼čin.

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

Bir Deneme i├žin Raporlanan Metriklerin T├╝m Ge├žmi┼čini ├çizme

Metriklerin zaman i├žinde nas─▒l geli┼čti─čini g├Ârmek i├žin her bir deneme i├žin raporlanan metriklerin ge├žmi┼čini ├žizebilirsiniz.

import matplotlib.pyplot as plt

for result in 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 belgede, Ultralytics adresini kullanarak Ray Tune ile y├╝r├╝t├╝len 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─▒n bir dizinden y├╝klenmesi, deney d├╝zeyinde ve deneme d├╝zeyinde temel analizlerin ger├žekle┼čtirilmesi ve metriklerin ├žizilmesi yer almaktad─▒r.

Explore further by looking into Ray Tune's Analyze Results docs page to get the most out of your hyperparameter tuning experiments.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (9)

Yorumlar