Yolo Vision Shenzhen
Shenzhen
Şimdi katılın

ClearML Kullanarak Ultralytics YOLOv5 'i Uzaktan Eğitin ve İzleyin

Ultralytics Ekibi

4 dakika okuma

21 Ekim 2022

Sorunsuz makine öğrenimi entegrasyonu, deney izleme ve daha fazlasına sahip gelişmiş bir Ultralytics YOLOv5 deneyimi için ClearML ile ortaklığımızı keşfedin.

Ultralytics 'te, YOLOv5 gibi harika açık kaynaklı araçlarımızın araştırma ve geliştirmesini finanse etmemize yardımcı olmak ve bunları herkes için ücretsiz tutmak için ticari olarak diğer girişimlerle ortaklık yapıyoruz. Bu makale, bu ortaklara bağlı bağlantılar içerebilir.

ClearML en yeni ortağımız: size zaman kazandırmak için tasarlanmış açık kaynaklı bir araç kutusu.

ML'nin benimsenmesini hızlandırma misyonuyla ClearML , ML'nin piyasadaki tüm Yazılım ve Donanım ürünlerine sorunsuz bir şekilde entegre edilmesini sağlar.

Bu entegrasyon, bir kişiyi eğitmeyi daha da kolaylaştırır YOLOv5 modelini oluşturun ve otomatik olarak track için ClearML deney yöneticisini kullanın. Veri girişi olarak bir ClearML veri kümesi sürüm kimliğini kolayca belirtebilirsiniz ve modelinizi eğitmek için otomatik olarak kullanılacaktır.

Deney Takibinizi Bir Sonraki Seviyeye Taşıyın

  • Deney yöneticisinde her YOLOv5 eğitim çalışmasını takip edin.
  • Entegre ClearML Veri Versiyonlama Aracı ile özel eğitim verilerinizi versiyonlayın ve kolayca erişin.
  • ClearML Hiperparametre Optimizasyonunu kullanarak en iyi mAP 'yi elde edin.
  • Yeni eğittiğiniz YOLOv5 modelinizi ClearML Serving kullanarak sadece birkaç komutla bir API'ye dönüştürün.

Bu araçlardan kaç tanesini kullanmak istediğiniz size kalmış, deney yöneticisine bağlı kalabilir veya hepsini etkileyici bir ardışık düzende bir araya getirebilirsiniz.

Kurulum

Deneylerinizi ve verilerinizi track etmek için ClearML 'in bir sunucu ile iletişim kurması gerekir. Bunun için iki seçeneğiniz var: ClearML Hosted Service'e ücretsiz kaydolun ya da kendi sunucunuzu kurun, buraya bakın.

Sunucu bile açık kaynaklıdır, bu nedenle hassas verilerle uğraşıyorsanız, bu sorun değil!

  1. clearml python paketini yükleyin: pip install clearml
  2. Kimlik bilgileri oluşturarak ClearML SDK'yı sunucuya bağlayın (sağ üstten Ayarlar → Çalışma Alanı → Yeni kimlik bilgileri oluştur'a gidin), ardından aşağıdaki komutu çalıştırın ve talimatları izleyin: clearml

İşte bu kadar! Başlamaya hazırsınız...

ClearML ile YOLOv5 Eğitimi

ClearML deney takibini etkinleştirmek için ClearML pip paketini yüklemeniz yeterlidir.

pip install clearml

Bu, YOLOv5 eğitim betiği ile entegrasyonu mümkün kılacaktır. Şu andan itibaren her eğitim çalışması ClearML deney yöneticisi tarafından yakalanacak ve saklanacaktır. Proje_adını veya görev_adını değiştirmek isterseniz, değiştirebileceğiniz özel kaydedicimize gidin: clearml.py

python train.py --img 640 --batch 16 --epochs 3 --data coco128yaml --weights yolov5s.pt --cache

Bu şunları yakalayacaktır:

  • Kaynak kodu + işlenmemiş değişiklikler
  • Yüklü paketler
  • (Hiper)parametreler
  • Model dosyaları (her n epoch'ta bir kontrol noktası kaydetmek için --save-period n kullanın)
  • Konsol çıktısı
  • SkalalarmAP.5, mAP.5:0.95, kesinlik, geri çağırma, kayıplar, öğrenme oranları, ...)
  • Makine detayları, çalışma zamanı, oluşturulma tarihi vb. gibi genel bilgiler.
  • Etiket korelogramı ve karmaşıklık matrisi gibi üretilen tüm çizimler
  • Her epoch için sınırlayıcı kutular içeren görseller
  • Her epoch için mozaik
  • Her epoch için doğrulama görselleri

Çok da kötü değil! Şimdi, eğitim ilerlememize genel bir bakış elde etmek için tüm bu bilgileri ClearML kullanıcı arayüzünde görselleştirebiliriz. Tablo görünümüne özel sütunlar ekleyin (örneğin mAP.5 gibi), böylece en iyi performans gösteren modeli kolayca sıralayabilirsiniz. Ya da birden fazla deney seçin ve bunları doğrudan karşılaştırın!

Hiperparametre optimizasyonu ve uzaktan yürütme gibi tüm bu bilgilerle yapabileceğimiz daha çok şey var, bu yüzden nasıl olduğunu öğrenmek için okumaya devam edin!

Veri Kümesi Sürüm Yönetimi

Verilerinizi kodunuzdan ayrı olarak sürümlemek genellikle iyi bir fikirdir ve en son sürümü edinmeyi kolaylaştırır. Bu depo, bir veri kümesi sürüm kimliği sağlamayı destekler ve henüz orada değilse verileri 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 verilerin hangi deneyde kullanıldığını her zaman kesin olarak bilirsiniz!

Veri Kümenizi Hazırlayın

YOLOv5 deposu, bilgilerini içeren YAML dosyalarını kullanarak bir dizi farklı veri kümesini destekler. Varsayılan olarak, veri kümeleri depo kök klasörüne bağlı olarak ../datasets klasörüne indirilir. Dolayısıyla, coco128 veri setini YAML'deki bağlantıyı kullanarak veya yolov5 tarafından sağlanan komut dosyalarıyla indirdiyseniz, bu klasör yapısını elde edersiniz:

...
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt

Ancak bu, istediğiniz herhangi bir veri kümesi olabilir. Bu klasör yapısına uyduğunuz sürece kendi veri kümenizi kullanmaktan çekinmeyin.

Ardından, ⚠️copy ilgili YAML dosyasını folder⚠️ veri kümesinin kök dizinine ekleyin. Bu YAML dosyaları ClearML 'in veri kümesini düzgün bir şekilde kullanması için ihtiyaç duyacağı bilgileri içerir. Elbette bunu kendiniz de yapabilirsiniz, sadece örnek YAML'lerin yapısını takip edin.

Temel olarak, aşağıdaki anahtarlara ihtiyacımız var: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128yaml # ← İŞTE!
|_ LICENSE
|_ README.txt

Veri Kümenizi Yükleyin

Bu veri kümesini ClearML 'e sürümlü bir veri kümesi olarak almak için veri kümesi kök klasörüne gidin ve aşağıdaki komutu çalıştırın:

cd coco128

clearml sync --project YOLOv5 --name coco128 --folder .


clearml sync komutu aslında kısaltılmış bir komuttur. Bu komutları birbiri ardına da çalıştırabilirsiniz:

# İsteğe bağlı olarak, eğer bu sürümü başka bir veri seti sürümüne dayandırmak istiyorsanız --parent ekleyin, böylece yinelenen dosyalar yüklenmez!

# İsteğe bağlı olarak, eğer bu sürümü başka bir veri seti sürümüne dayandırmak istiyorsanız --parent ekleyin, böylece yinelenen dosyalar yüklenmez!

clearml create --name coco128 --project YOLOv5

clearml add --files .

clearml kapat

ClearML Veri Kümesi Kullanarak Eğitimi Çalıştırma

Artık bir ClearML veri kümeniz olduğuna göre, bunu çok basit bir şekilde özel YOLOv5 modellerini eğitmek için kullanabilirsiniz.

python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache

Hiperparametre Optimizasyonu

Deneylerimizi ve veri versiyonumuzu oluşturduğumuza göre, şimdi de bunların üzerine neler inşa edebileceğimize bir göz atma zamanı!

Kod bilgilerini, kurulu paketleri ve ortam ayrıntılarını kullanarak deneyin kendisi artık tamamen yeniden üretilebilir. Aslında, ClearML bir deneyi klonlamanıza ve hatta parametrelerini değiştirmenize olanak tanır. Daha sonra bu yeni parametrelerle otomatik olarak yeniden çalıştırabiliriz, HPO'nun yaptığı temelde budur!

Hiperparametre optimizasyonunu yerel olarak çalıştırmak için, sizin için önceden hazırlanmış bir komut dosyası ekledik. Bir eğitim görevinin en az bir kez çalıştırıldığından emin olun, böylece ClearML deney yöneticisinde olur, aslında onu klonlayacağız ve hiperparametrelerini değiştireceğiz.

Bu şablon görevin kimliğini clearml.py adresinde bulunan betiğe girmeniz ve ardından çalıştırmanız gerekir. Bir ClearML kuyruğuna koymak ve bunun yerine uzak bir aracının üzerinde çalışmasını sağlamak için task.execute_locally() işlevini task.execute() olarak değiştirebilirsiniz.

# Optuna kullanmak için önce onu yükleyin, aksi takdirde optimize ediciyi sadece RandomSearch olarak değiştirebilirsiniz pip install optuna python clearml.py

Uzaktan Yürütme (Gelişmiş)

HPO'yu yerel olarak çalıştırmak gerçekten kullanışlıdır, ancak bunun yerine deneylerimizi uzak bir makinede çalıştırmak istersek ne olur? Belki tesisinizde çok güçlü bir GPU makinesine erişiminiz vardır veya bulut GPU'ları kullanmak için biraz bütçeniz vardır. İşte bu noktada ClearML Agent devreye giriyor.

Aracının neler yapabileceğine buradan göz atın:

Kısacası: deney yöneticisi tarafından izlenen her deney, farklı bir makinede yeniden üretmek için yeterli bilgi içerir (yüklü paketler, taahhüt edilmemiş değişiklikler vb.). Dolayısıyla bir ClearML aracısı tam olarak bunu yapar: gelen görevler için bir kuyruğu dinler ve bir tane bulduğunda, ortamı yeniden oluşturur ve skalaları, grafikleri vb. deney yöneticisine bildirmeye devam ederken çalıştırır.

Herhangi bir makineyi (bir bulut sanal makinesi, yerel bir GPU makinesi, kendi dizüstü bilgisayarınız) sadece çalıştırarak bir ClearML aracısına dönüştürebilirsiniz:

clearml daemon --queue [--docker]

Klonlama, Düzenleme ve Sıraya Alma

Aracımız çalışırken, ona biraz iş verebiliriz. HPO bölümünden bir görevi klonlayabildiğimizi ve hiperparametreleri düzenleyebildiğimizi hatırlıyor musunuz? Bunu arayüzden de yapabiliriz!

🪄 Deneyi sağ tıklayarak klonlayın

🎯 Hiperparametreleri istediğiniz gibi düzenleyin

⏳ Görevi sağ tıklayarak herhangi bir kuyruğa ekleyin

Bir Görevi Uzaktan Çalıştırma

Artık yukarıda açıkladığımız gibi bir görevi klonlayabilir veya mevcut komut dosyanızı task.execute_remotely() ekleyerek işaretleyebilirsiniz ve yürütme sırasında, aracını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ız gereken, ClearML kaydedicisi örneklendikten sonra bu satırı training.py betiğine 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 LINE # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Bu değişiklikten sonra eğitim komut dosyasını çalıştırırken, python komut dosyasını bu satıra kadar çalıştıracak, daha sonra kodu paketleyecek ve bunun yerine kuyruğa gönderecektir!

Otomatik ölçeklendirme çalışanları

ClearML otomatik ölçeklendiricilerle de geliyor! Bu araç, seçtiğiniz bulutta (AWS, GCP, Azure) otomatik olarak yeni uzak makineler oluşturacak ve kuyrukta algılanan deneyler olduğunda bunları sizin için ClearML aracılarına dönüştürecektir. Görevler işlendikten sonra, otomatik ölçekleyici uzak makineleri otomatik olarak kapatır ve siz de ödeme yapmayı bırakırsınız! Otomatik ölçekleyicilerin başlangıç videosuna aşağıdan göz atın.

Herhangi bir sorunuz mu var? Topluluğumuza katılın ve sorunuzu bugün bırakın!

Gelin, yapay zekanın geleceğini
birlikte inşa edelim!

Makine öğreniminin geleceği ile yolculuğunuza başlayın

Ücretsiz başlayın