ClearML Kullanarak Ultralytics YOLOv5'i Uzaktan Eğit ve İzle
Sorunsuz ML entegrasyonu, deney takibi ve daha fazlasıyla gelişmiş bir Ultralytics YOLOv5 deneyimi için ClearML ile ortaklığımızı keşfet.

Ultralytics olarak, YOLOv5 gibi harika açık kaynaklı araçlarımızın herkes için ücretsiz kalmasını sağlamak amacıyla, bunların araştırma ve geliştirme süreçlerini finanse etmemize yardımcı olmaları için diğer girişimlerle ticari ortaklıklar yapıyoruz. Bu makale, söz konusu ortaklara ilişkin bağlı kuruluş bağlantıları içerebilir.
ClearML en yeni iş ortağımızdır: sana zaman kazandırmak için tasarlanmış open-source bir araç setidir.
ML benimsenmesini hızlandırma misyonuyla ClearML, ML'i piyasadaki herhangi bir Yazılım ve Donanım ürününe entegre etmeyi sorunsuz hale getirir.
Bu entegrasyon, bir YOLOv5 modeli eğitmeni ve bunu otomatik olarak takip etmek için ClearML deney yöneticisini kullanmanı daha da kolaylaştırır. Veri girişi olarak kolayca bir ClearML veri seti sürüm kimliği belirtebilirsin ve bu, modelini eğitmek için otomatik olarak kullanılacaktır.
Deney İzleme Sürecini Bir Üst Seviyeye Taşı#
- Her YOLOv5 eğitim sürecini deney yöneticisinde izle.
- Entegre ClearML Veri Sürümleme Aracı ile özel eğitim verilerini sürümle ve bunlara kolayca eriş.
- ClearML Hiperparametre Optimizasyonu kullanarak en iyi mAP değerini elde et.
- ClearML Serving kullanarak sadece birkaç komutla yeni eğittiğin YOLOv5 modelini bir API'ye dönüştür.
Bu araçlardan kaçını kullanmak istediğin sana kalmış; sadece deney yöneticisine bağlı kalabilir veya hepsini bir araya getirerek etkileyici bir boru hattı oluşturabilirsin.
Kurulum#
Deneylerini ve verilerini takip etmek için ClearML'in bir sunucuyla iletişim kurması gerekir. Bunun için iki seçeneğin var: ya ClearML Barındırılan Hizmetine ücretsiz olarak kaydol ya da kendi sunucunu kur, şuraya bak: ClearML Server deployment docs.
Sunucu bile açık kaynaklıdır, bu yüzden hassas verilerle uğraşıyorsan bu hiç sorun değil!
- clearml python paketini yükle:
pip install clearml - kimlik bilgileri oluşturarak (sağ üstten Ayarlar → Çalışma Alanı → Yeni kimlik bilgileri oluştur'a git) ClearML SDK'yı sunucuya bağla, ardından aşağıdaki komutu çalıştır ve talimatları takip et:
clearml-init
Ve voilà! Başlamaya hazırsın...
ClearML ile YOLOv5 Eğitimi#
ClearML deney izlemeyi etkinleştirmek için ClearML pip paketini kurman yeterli.
pip install clearmlBu, YOLOv5 eğitim betiği ile entegrasyonu etkinleştirecektir. Bundan sonraki her eğitim çalışması ClearML deney yöneticisi tarafından yakalanacak ve saklanacaktır. project_name veya task_name değerini değiştirmek istiyorsan, bunu değiştirebileceğin özel günlükçümüze git: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheBu şunları yakalayacaktır:
- Kaynak kodu + commit edilmemiş değişiklikler
- Kurulu paketler
- (Hiper)parametreler
- Model dosyaları (her n epokta bir kontrol noktası kaydetmek için --save-period n kullan)
- Konsol çıktısı
- Skaler değerler (mAP_0.5, mAP_0.5:0.95, kesinlik, duyarlılık, kayıplar, öğrenme oranları, ...)
- Makine detayları, çalışma süresi, oluşturulma tarihi vb. gibi genel bilgiler.
- Etiket korelogramı ve karmaşıklık matrisi gibi üretilen tüm grafikler
- Her epok için sınırlayıcı kutulara sahip görüntüler
- Her epok için mozaik
- Her epok için doğrulama görüntüleri
Fena değil! Şimdi, eğitim sürecimize genel bir bakış elde etmek için tüm bu bilgileri ClearML arayüzünde görselleştirebiliriz. Tablo görünümüne özel sütunlar (örneğin mAP_0.5 gibi) ekle, böylece en iyi performans gösteren modele kolayca göre sıralama yapabilirsin. Veya birden fazla deney seçip bunları doğrudan karşılaştırabilirsin!
Hiperparametre optimizasyonu ve uzaktan çalıştırma gibi tüm bu bilgilerle yapabileceğimiz daha çok şey var, nasıl olduğunu öğ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 son sürüme ulaşmayı da kolaylaştırır. Bu depo, bir veri kümesi sürüm kimliği sağlamayı destekler ve mevcut değilse veriyi alacağından emin olur. Bunun yanı sıra, bu iş akışı kullanılan veri kümesi kimliğini görev parametrelerinin bir parçası olarak kaydeder, böylece hangi deneyde hangi verinin kullanıldığından her zaman emin olursun!
Veri Kümeni Hazırla#
YOLOv5 deposu, bilgilerini içeren YAML dosyalarını kullanarak birçok farklı veri kümesini destekler. Varsayılan olarak, veri kümeleri depo kök klasörüne göre ../datasets klasörüne indirilir. Yani eğer YAML'deki bağlantıyı veya yolov5 tarafından sağlanan betikleri kullanarak coco128 veri kümesini indirdiysen, şu klasör yapısını elde edersin:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtAncak bu istediğin herhangi bir veri kümesi olabilir. Bu klasör yapısına sadık kaldığın sürece kendininkini kullanmakta özgürsün.
Ardından, ⚠️ilgili YAML dosyasını veri kümesi klasörünün köküne kopyala⚠️. Bu YAML dosyaları, ClearML'in veri kümesini düzgün bir şekilde kullanması için ihtiyaç duyacağı bilgileri içerir. Bunu kendin de yapabilirsin elbette, sadece örnek YAML'lerin yapısını takip et.
Temelde şu anahtarlara ihtiyacımız var: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtVeri Kümeni Yükle#
Bu veri kümesini sürümü alınmış bir veri kümesi olarak ClearML'e almak için, veri kümesi 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 kısa yol bir komuttur. Bu komutları arka arkaya 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 closeBir ClearML Veri Kümesi Kullanarak Eğitimi Çalıştır#
Artık bir ClearML veri kümen olduğuna göre, onu özel YOLOv5 modellerini eğitmek için çok basit bir şekilde 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 elimizde olduğuna göre, üzerine neler inşa edebileceğimize bakma zamanı!
Kod bilgisi, kurulu paketler ve ortam detayları kullanılarak, deneyin kendisi artık tamamen tekrarlanabilir. Aslında ClearML, bir deneyi kopyalamana ve hatta parametrelerini değiştirmene olanak tanır. Daha sonra bunu yeni parametrelerle otomatik olarak yeniden çalıştırabiliriz, HPO'nun yaptığı temel olarak budur!
Hiperparametre optimizasyonunu yerel olarak çalıştırmak için senin için önceden hazırlanmış bir betik dahil ettik. Sadece bir eğitim görevinin en az bir kez çalıştırıldığından emin ol, böylece ClearML deney yöneticisinde yer alır; aslında onu kopyalayıp hiperparametrelerini değiştireceğiz.
utils/loggers/clearml/hpo.py adresinde bulunan betikte bu şablon görevin kimliğini doldurman gerekecek ve ardından sadece çalıştırman yeterlidir. Onu bir ClearML kuyruğuna koymak ve bunun yerine uzak bir ajanın üzerinde çalışması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 Yürütme (Gelişmiş)#
HPO'yu yerel olarak çalıştırmak gerçekten kullanışlıdır, ancak deneylerimizi bunun yerine uzak bir makinede çalıştırmak istersek ne olur? Belki yerinde çok güçlü bir GPU makinesine erişimin vardır veya bulut GPU'larını kullanmak için bir bütçen vardır. İşte ClearML Agent'ın devreye girdiği yer burasıdır.
Agent'ın neler yapabileceğine buradan göz at:
Kısacası: deney yöneticisi tarafından izlenen her deney, onu farklı bir makinede yeniden üretmek için yeterli bilgiyi içerir (kurulu paketler, commit edilmemiş değişiklikler vb.). Dolayısıyla bir ClearML agent tam olarak bunu yapar: gelen görevler için bir kuyruğu dinler ve bir tane bulduğunda, ortamı yeniden oluşturur ve skaler değerleri, grafikleri vb. deney yöneticisine raporlamaya devam ederken onu çalıştırır.
Herhangi bir makineyi (bulut sanal makinesi, yerel GPU makinesi, kendi dizüstü bilgisayarın) sadece şunu çalıştırarak bir ClearML agent'a dönüştürebilirsin:
clearml-agent daemon --queue [--docker]Klonlama, Düzenleme ve Kuyruğa Alma#
Agent'ımız çalışırken ona biraz iş verebiliriz. HPO bölümünden bir görevi kopyalayıp hiperparametreleri düzenleyebileceğimizi hatırlıyor musun? Bunu arayüzden de yapabiliriz!
🪄 Deneye sağ tıklayarak klonla
🎯 Hiperparametreleri istediğin değerlere göre düzenle
⏳ Göreve sağ tıklayarak onu istediğin kuyruğa al
Bir Görevi Uzaktan Yürütme#
Artık yukarıda açıkladığımız gibi bir görevi klonlayabilirsin veya sadece task.execute_remotely() ekleyerek mevcut betiğini işaretleyebilirsin ve çalıştırıldığında, ajanın üzerinde çalışmaya başlaması için bir kuyruğa konulacaktır!
YOLOv5 eğitim betiğini uzaktan çalıştırmak için tek yapman gereken, ClearML günlükçüsü oluşturulduktan sonra train.py betiğine bu satırı eklemektir:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINEHerhangi bir sorun mu var? Join our community ve sorunu bugün bırak!






