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 ortağımızdır: zaman kazanmanızı sağlamak için tasarlanmış bir açık kaynaklı araç kutusu.
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 modelini eğitmeyi ve onu otomatik olarak izlemek için ClearML deney yöneticisini kullanmayı daha da basitleştirir. Veri girişi olarak kolayca bir ClearML veri kümesi sürüm kimliği belirtebilirsin; bu, modelini eğitmek için otomatik olarak kullanılacaktır.
Link to this sectionDeney İ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.
Link to this sectionKurulum#
Deneylerini ve verilerini takip edebilmen için ClearML'in bir sunucuyla iletişim kurması gerekir. Bunun için iki seçeneğin var: ya ücretsiz olarak ClearML Hosted Service'e kaydol ya da kendi sunucunu kur; detaylar için ClearML Server deployment docs sayfasına göz at.
Sunucu bile açık kaynaklıdır, bu yüzden hassas verilerle uğraşıyorsan bu hiç sorun değil!
- clearml python paketini kur:
pip install clearml - ClearML SDK'sını sunucuya kimlik bilgileri oluşturarak (sağ üstten Ayarlar → Çalışma Alanı → Yeni kimlik bilgileri oluştur'a git), ardından aşağıdaki komutu çalıştır ve talimatları izle:
clearml-init
Ve voilà! Başlamaya hazırsın...
Link to this sectionClearML 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 sağlayacaktır. Bundan sonraki her eğitim süreci, ClearML deney yöneticisi tarafından yakalanacak ve kaydedilecektir. project_name veya task_name değerini değiştirmek istersen, değiştirebileceğin yer olan özel logger'ımıza 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!
Link to this sectionVeri 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!
Link to this sectionVeri 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.txtLink to this sectionVeri 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 bir kısayol komutudur. 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 closeLink to this sectionBir 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 --cacheLink to this sectionHiperparametre 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.
Bu şablon görevinin kimliğini utils/loggers/clearml/hpo.py adresinde bulunan betiğe girmen ve ardından çalıştırman yeterlidir. Onu bir ClearML kuyruğuna koymak ve uzaktaki bir aracının üzerinde çalışmasını sağlamak için task.execute_locally() ifadesini 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.pyLink to this sectionUzaktan 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]Link to this sectionKlonlama, 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
Link to this sectionBir Görevi Uzaktan Yürütme#
Artık yukarıda açıkladığımız gibi bir görevi kopyalayabilir veya mevcut betiğini task.execute_remotely() ekleyerek işaretleyebilirsin; yürütüldüğünde bir kuyruğa alınacak ve agent üzerinde çalışmaya başlayacaktır!
YOLOv5 eğitim betiğini uzaktan çalıştırmak için, ClearML logger örneği oluşturulduktan 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) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINEHerhangi bir sorun mu var? Topluluğumuza katıl ve sorunu bugün bırak!






