Ultralytics YOLOv5'i ClearML Kullanarak Uzaktan Eğit ve İzle
ClearML ile deneyleri izlemeyi, veri kümelerini sürümlemeyi, hiperparametreleri ayarlamayı ve Ultralytics YOLOv5 modellerini uzak makinelerde eğitmeyi öğren.
Nuvola Ladi5 dakikalık okuma
Ultralytics olarak YOLOv5 gibi açık kaynaklı araçlarımızın araştırma ve geliştirme çalışmalarını finanse etmemize ve araçlarımızı herkes için ücretsiz tutmamıza yardımcı olmaları için diğer startup'larla ticari ortaklıklar kuruyoruz. Bu makalede söz konusu ortaklara ait satış ortaklığı bağlantıları bulunabilir.
ClearML en yeni iş ortağımız: sana zaman kazandırmak için tasarlanmış bir açık kaynaklı araç kutusu.
ClearML, makine öğreniminin benimsenmesini hızlandırma misyonuyla makine öğrenimini her türlü yazılım veya donanım ürününe entegre etmeyi kolaylaştırıyor.
Bu entegrasyon, YOLOv5 modelini eğitmeyi ve ClearML deney yöneticisini kullanarak modeli otomatik biçimde takip etmeyi daha da kolaylaştırır. Veri girişi olarak ClearML veri kümesi sürüm kimliğini kolayca belirtebilirsin; bu kimlik modelini eğitmek için otomatik olarak kullanılır.
Deney takibini bir üst seviyeye taşı#
- Her YOLOv5 eğitim çalıştırmasını deney yöneticisinde izle.
- Entegre ClearML Data Versioning Tool ile özel eğitim verilerini sürümle ve kolayca eriş.
- ClearML Hyperparameter Optimization ile mümkün olan en yüksek mAP değerini elde et.
- Yeni eğittiğin YOLOv5 modelini ClearML Serving kullanarak yalnızca birkaç komutla bir API'ye dönüştür.
Bu araçlardan kaçını kullanacağın sana bağlı: yalnızca deney yöneticisini kullanabilir veya hepsini etkileyici bir işlem hattında bir araya getirebilirsin.
Kurulum#
Deneylerini ve verilerini takip edebilmek için ClearML'nin bir sunucuyla iletişim kurması gerekir. Bunun için iki seçeneğin var: ClearML Hosted Service'e ücretsiz kaydolabilir veya kendi sunucunu kurabilirsin.
Sunucunun kendisi bile açık kaynaklıdır; bu nedenle hassas verilerle çalışıyorsan sorun yaşamazsın!
- ClearML Python paketini yükle:
pip install clearml - Kimlik bilgileri oluşturarak ClearML SDK'yı sunucuya bağla (sağ üstte Settings → Workspace → Create new credentials yolunu izle), ardından aşağıdaki komutu çalıştırıp talimatları uygula:
clearml-init
Artık başlamaya hazırsın.
ClearML ile YOLOv5 eğitimi#
ClearML deney takibini etkinleştirmek için ClearML pip paketini yüklemen yeterli.
pip install clearmlBu işlem, YOLOv5 eğitim betiğiyle entegrasyonu etkinleştirir. Bundan sonraki her eğitim çalıştırması ClearML deney yöneticisi tarafından kaydedilip saklanır. project_name veya task_name değerini değiştirmek istersen özel günlükleyicimize gidip değişiklik yapabilirsin: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheŞunları kaydeder:
- Kaynak kodu + commit edilmemiş değişiklikler
- Yüklü paketler
- (Hiper)parametreler
- Model dosyaları (her n epoch'ta bir kontrol noktası kaydetmek için --save-period n kullan)
- Konsol çıktısı
- Skaler değerler (mAP50, mAP50-95, kesinlik, duyarlılık, kayıplar, öğrenme oranları, ...)
- Makine ayrıntıları, çalışma süresi, oluşturulma tarihi vb. gibi genel bilgiler
- Etiket korelogramı ve karışıklık matrisi gibi oluşturulan tüm grafikler
- Her epoch için sınırlayıcı kutular içeren görüntüler
- Her epoch için mozaik
- Her epoch için doğrulama görüntüleri
Artık eğitim sürecimizin ilerleyişine genel bir bakış elde etmek için tüm bu bilgileri ClearML arayüzünde görselleştirebiliriz. En iyi performans gösteren modele göre kolayca sıralama yapabilmek için tablo görünümüne özel sütunlar (ör. mAP50) ekle. Ya da birden fazla deneyi seçip doğrudan karşılaştır!
Hiperparametre optimizasyonu ve uzaktan çalıştırma gibi, tüm bu bilgilerle yapabileceğimiz daha pek çok şey var; nasıl yapacağını öğrenmek için okumaya devam et!
Veri Kümesi Sürüm Yönetimi#
Verilerini kodundan ayrı olarak sürümlemek genellikle iyi bir fikirdir ve en güncel sürümü edinmeyi de kolaylaştırır. Bu depo, bir veri kümesi sürüm kimliği belirtmeyi destekler ve veri henüz orada değilse indirilmesini sağlar. Ayrıca bu iş akışı, kullanılan veri kümesi kimliğini görev parametrelerinin bir parçası olarak kaydeder; böylece her deneyde hangi verilerin kullanıldığını kesin olarak bilirsin!
Veri Kümeni Hazırla#
YOLOv5 deposu, veri kümeleriyle ilgili bilgileri içeren YAML dosyalarını kullanarak çeşitli veri kümelerini destekler. Varsayılan olarak veri kümeleri, depo kök klasörüne göre ../datasets klasörüne indirilir. Dolayısıyla YAML'deki bağlantıyı veya YOLOv5'in sağladığı betikleri kullanarak COCO128 veri kümesini indirdiysen klasör yapısı şöyle olur:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtAncak dilediğin herhangi bir veri kümesini kullanabilirsin. Bu klasör yapısını koruduğun sürece kendi veri kümeni kullanabilirsin.
Ardından ilgili YAML dosyasını veri kümesi klasörünün köküne kopyala. Bu YAML dosyaları, ClearML'nin veri kümesini doğru şekilde kullanmak için ihtiyaç duyacağı bilgileri içerir. Dilersen bu dosyayı kendin de oluşturabilirsin; örnek YAML dosyalarının yapısını izlemeyi unutma.
YAML dosyasında şu anahtarlar bulunmalı: path, train, test, val, nc ve names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtVeri Kümeni Yükle#
Bu veri kümesini sürümlenmiş bir veri kümesi olarak ClearML'ye eklemek için veri kümesinin kök klasörüne git ve şu komutu çalıştır:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync komutu aslında bir kısaltmadır. Bu komutları art arda da çalıştırabilirsin:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeClearML Veri Kümesi Kullanarak Eğitimi Çalıştır#
Artık bir ClearML veri kümen olduğuna göre bunu özel YOLOv5 modellerini eğitmek için kullanabilirsin.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheHiperparametre Optimizasyonu#
Deneylerimiz ve veri sürümümüz hazır olduğuna göre, bunların üzerine neler kurabileceğimize bakmanın zamanı geldi!
Kod bilgileri, yüklenen paketler ve ortam ayrıntıları sayesinde deney artık tamamen yeniden üretilebilir durumda. ClearML, bir deneyi klonlamana ve hatta parametrelerini değiştirerek yeniden çalıştırmana olanak tanır. Ardından deneyi bu yeni parametrelerle otomatik olarak yeniden çalıştırabiliriz; HPO'nun yaptığı da temelde budur.
Hiperparametre optimizasyonunu yerel olarak çalıştırman için hazır bir betik ekledik. Eğitim görevinin ClearML deney yöneticisinde görünmesi için en az bir kez çalıştırılmış olduğundan emin ol; betik görevi klonlayıp hiperparametrelerini değiştirir.
Betikteki utils/loggers/clearml/hpo.py konumuna bu şablon görevinin kimliğini yazman ve ardından betiği çalıştırman yeterli. Görevi ClearML kuyruğuna ekleyip bunun yerine uzaktaki bir aracının çalıştırmasını sağlamak için task.execute_locally() değerini task.execute() olarak değiştirebilirsin.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyUzaktan Çalıştırma (İleri Düzey)#
HPO'yu yerel olarak çalıştırmak çok kullanışlıdır; peki deneylerimizi bunun yerine uzak bir makinede çalıştırmak istersek? Belki tesisinde çok güçlü bir GPU makinesine erişimin ya da bulut GPU'larını kullanmak için ayırdığın bir bütçen vardır. İşte bu noktada ClearML Agent devreye girer.
Aracının neler yapabileceğine buradan göz at:
Kısacası, deney yöneticisi tarafından izlenen her deney, başka bir makinede yeniden oluşturulması için yeterli bilgiyi içerir (yüklü paketler, commit edilmemiş değişiklikler vb.). ClearML aracı da tam olarak bunu yapar: gelen görevler için bir kuyruğu dinler; bir görev bulduğunda ortamı yeniden oluşturup görevi çalıştırırken skaler değerleri, grafikleri vb. deney yöneticisine raporlamaya devam eder.
Şu komutu çalıştırarak herhangi bir makineyi (bulut VM'si, yerel GPU makinesi veya kendi dizüstü bilgisayarın) ClearML aracısına dönüştürebilirsin:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]Klonlama, Düzenleme ve Kuyruğa Ekleme#
Aracımız çalıştığına göre ona bir iş verebiliriz. HPO bölümünden bir görevi klonlayıp hiperparametrelerini düzenleyebileceğimizi hatırla. Bunu arayüzden de yapabiliriz!
- Deneyin üzerine sağ tıklayarak deneyi klonla.
- Hiperparametreleri istediğin değerlere göre düzenle.
- Göreve sağ tıklayarak görevi istediğin kuyruğa ekle.
Bir Görevi Uzaktan Çalıştırma#
Yukarıda açıkladığımız gibi bir görevi klonlayabilir ya da geçerli betiğini task.execute_remotely() ekleyerek işaretleyebilirsin; çalıştırıldığında aracının başlatması için bir kuyruğa eklenir!
YOLOv5 eğitim betiğini uzaktan çalıştırmak için ClearML günlükleyicisi başlatıldıktan sonra train.py betiğine şu satırı eklemen yeterli:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # günlükleyici örneği
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ BU SATIRI EKLESorun var mı? Topluluğumuza katıl ve sorununu bugün paylaş!
Yazan
Yorumlar
Soru sor, sonuçlarını paylaş veya başka birine yardım et.










