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

Ultralytics olarak, YOLOv5 gibi harika açık kaynaklı araçlarımızı herkes için ücretsiz tutabilmek amacıyla araştırma ve geliştirme çalışmalarımızı finanse etmemize yardımcı olmaları için diğer startup'larla ticari ortaklıklar kuruyoruz. Bu makale, bu ortaklara ait satış ortaklığı bağlantıları içerebilir.
ClearML en yeni ortağımızdır: zamandan tasarruf etmen için tasarlanmış bir açık kaynaklı araç seti.
ClearML, ML'nin mevcut tüm Yazılım ve Donanım ürünlerine sorunsuz şekilde entegre edilmesini sağlayarak ML Adoption'ı hızlandırma misyonuyla hareket eder.
Bu entegrasyon, bir YOLOv5 modelini eğitmeyi ve ClearML deney yöneticisini kullanarak modeli otomatik olarak izlemeyi daha da kolaylaştırır. Girdi olarak bir ClearML veri kümesi sürüm kimliğini kolayca belirtebilirsin; bu kimlik, modelini eğitmek için otomatik olarak kullanılır.
Deney İzlemeyi 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ümlendir ve bunlara kolayca eriş.
- ClearML Hyperparameter Optimization ile en yüksek mAP değerini elde et.
- ClearML Serving'i kullanarak yeni eğittiğin YOLOv5 modelini yalnızca birkaç komutla API'ye dönüştür.
Bu araçlardan kaçını kullanacağına sen karar verirsin; yalnızca deney yöneticisini kullanabilir veya hepsini etkileyici bir işlem hattında bir araya getirebilirsin.
Kurulum#
Deneylerini ve verilerini izleyebilmek 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; ClearML Server deployment docs sayfasına bakabilirsin.
Sunucu bile açık kaynaklıdır; bu nedenle hassas verilerle çalışıyorsan bu bir sorun değildir!
- clearml python paketini yükle:
pip install clearml - Kimlik bilgileri oluşturarak ClearML SDK'sını sunucuya bağla (sağ üstten Settings → Workspace → Create new credentials yolunu izle), ardından aşağıdaki komutu çalıştır ve talimatları izle:
clearml-init
İşte bu kadar! Başlamaya hazırsın...
ClearML ile YOLOv5 Eğitimi#
ClearML deney izlemeyi etkinleştirmek için ClearML pip paketini yüklemen yeterlidir.
pip install clearmlBu işlem, YOLOv5 eğitim betiğiyle entegrasyonu etkinleştirir. Bundan sonra her eğitim çalıştırması ClearML deney yöneticisi tarafından yakalanıp depolanır. project_name veya task_name değerlerini değiştirmek istersen, bunları 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 --cacheŞunlar yakalanır:
- 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ı
- Skalerler (mAP_0.5, mAP_0.5:0.95, kesinlik, geri çağırma, kayıplar, öğrenme oranları, ...)
- Makine ayrıntıları, çalışma zamanı, oluşturulma tarihi vb. genel bilgiler
- Etiket korelogramı ve hata 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
Fena değil! Artık eğitim ilerlemene genel bir bakış elde etmek için tüm bu bilgileri ClearML kullanıcı arayüzünde görselleştirebiliriz. En iyi performans gösteren modeli kolayca sıralayabilmen için tablo görünümüne özel sütunlar (örneğin mAP_0.5) ekle. Ya da birden fazla deneyi seçip doğrudan karşılaştır!
Hiperparametre optimizasyonu ve uzaktan çalıştırma gibi işlemler için tüm bu bilgilerle yapabileceğimiz daha çok şey var; nasıl yapılacağını öğrenmek için okumaya devam et!
Veri Kümesi Sürüm Yönetimi#
Verilerini kodundan ayrı olarak sürümlendirmek genellikle iyi bir fikirdir ve en güncel sürümü edinmeni de kolaylaştırır. Bu depo, bir veri kümesi sürüm kimliği belirtmeni destekler ve veriler henüz mevcut değilse bunları alır. Ayrıca bu iş akışı, kullanılan veri kümesi kimliğini görev parametrelerinin bir parçası olarak da kaydeder; böylece hangi deneyde hangi verilerin kullanıldığını her zaman kesin olarak bilirsin!
Veri Kümeni Hazırla#
YOLOv5 deposu, bilgilerini 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. Bu nedenle YAML'deki bağlantıyı veya yolov5 tarafından sağlanan betikleri kullanarak coco128 veri kümesini indirdiysen klasör yapın şöyle olur:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtAncak bu, istediğin herhangi bir veri kümesi olabilir. 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. Elbette bu dosyayı kendin de oluşturabilirsin; örnek YAML dosyalarının yapısını izlemen yeterlidir.
Temel olarak ş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ümlendirilmiş bir veri kümesi olarak ClearML'ye aktarmak için veri kümesinin kök klasörüne git ve aşağıdaki 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ümesini Kullanarak Eğitimi Çalıştır#
Artık bir ClearML veri kümesine sahip olduğuna göre bunu özel YOLOv5 modellerini eğitmek için çok kolay bir şekilde kullanabilirsin.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheHiperparametre Optimizasyonu#
Artık deneylerimize ve veri sürümümüze sahip olduğumuza göre, bunların üzerine neler inşa edebileceğimize bakmanın zamanı geldi!
Kod bilgileri, yüklü paketler ve ortam ayrıntıları kullanıldığından deneyin kendisi artık tamamen yeniden üretilebilir. Hatta ClearML, bir deneyi klonlamana ve parametrelerini değiştirmenize olanak tanır. Ardından bu yeni parametrelerle deneyi otomatik olarak yeniden çalıştırabiliriz; HPO temelde bunu yapar!
Hiperparametre optimizasyonunu yerel olarak çalıştırmak için senin için hazır bir betik ekledik. Bir eğitim görevinin en az bir kez çalıştırıldığından ve ClearML deney yöneticisinde bulunduğundan emin ol; bu görevi temelde klonlayıp hiperparametrelerini değiştireceğiz.
utils/loggers/clearml/hpo.py konumunda bulunan betiğe bu şablon görevin kimliğini girmen ve ardından betiği çalıştırman gerekir. Görevi bir ClearML kuyruğuna eklemek ve bunun yerine uzak bir aracını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 Çalıştırma (İleri Düzey)#
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 olacak? Belki şirket içinde çok güçlü bir GPU makinesine erişimin vardır veya bulut GPU'larını kullanmak için bir bütçen bulunur. ClearML Agent burada devreye girer.
Aracının neler yapabileceğine buradan göz at:
Kısaca: deney yöneticisi tarafından izlenen her deney, farklı bir makinede yeniden üretilebilmesi için yeterli bilgiyi içerir (yüklü paketler, commit edilmemiş değişiklikler vb.). ClearML agent tam olarak bunu yapar: gelen görevler için bir kuyruğu dinler ve bir görev bulduğunda ortamı yeniden oluşturup görevi çalıştırırken skalerleri, grafikleri vb. deney yöneticisine bildirmeye devam eder.
Şu komutu çalıştırarak herhangi bir makineyi (bulut VM'si, yerel GPU makinesi veya kendi dizüstü bilgisayarın) ClearML agent'a dönüştürebilirsin:
clearml-agent daemon --queue [--docker]Klonlama, Düzenleme ve Kuyruğa Ekleme#
Aracımız çalıştığına göre ona bazı işler verebiliriz. HPO bölümünde bir görevi klonlayıp hiperparametrelerini düzenleyebileceğimizi hatırlıyor musun? Bunu arayüzden de yapabiliriz!
🪄 Deneye sağ tıklayarak deneyi klonla
🎯 Hiperparametreleri istediğin değerlere göre düzenle
⏳ Göreve sağ tıklayarak görevi kuyruklardan birine ekle
Bir Görevi Uzaktan Çalıştırma#
Artık yukarıda açıkladığımız gibi bir görevi klonlayabilir veya mevcut betiğini task.execute_remotely() ekleyerek işaretleyebilirsin; çalıştırıldığında görev bir kuyruğa eklenir ve aracının üzerinde çalışmaya başlaması sağlanır!
YOLOv5 eğitim betiğini uzaktan çalıştırmak için yapman gereken tek şey, ClearML günlükçüsü başlatıldıktan 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 LINESoruların mı var? Topluluğumuza katıl ve sorunu bugün paylaş!









