İçeriğe geç

ClearML Entegrasyon

Temizle|MLTemizle|ML

Hakkında ClearML

ClearML size zaman kazandırmak için tasarlanmış açık kaynaklı bir araç kutusudur ⏱️.

🔨 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 Agent'ı kullanarak YOLOv5 eğitim çalışmalarınızı uzaktan eğitin ve izleyin

🔬 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


Ve çok daha fazlası. Bu araçlardan kaçını kullanmak istediğiniz size kalmış, deney yöneticisine bağlı kalabilir veya hepsini etkileyici bir boru hattına zincirleyebilirsiniz!

ClearML skaler gösterge tablosu



🦾 İşleri Ayarlama

Deneylerinizi ve/veya verilerinizi takip etmek için ClearML adresinin bir sunucuyla iletişim kurması gerekir. Bir tane edinmek için 2 seçeneğiniz var:

Ya 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şıyor olsanız bile, gitmekte iyi olmalısınız!

  • Yükleme clearml python Paket:

    pip install clearml
    
  • 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-init
    

İşte bu kadar! Bitirdiniz 😎


🚀 Eğitim YOLOv5 ile ClearML

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

pip install clearml>=1.2.0

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.

Eğer değiştirmek istiyorsanız project_name veya task_name'yi kullanın. --project ve --name argümanları train.py komut dosyasında, varsayılan olarak proje YOLOv5 ve görev Training. LÜTFEN DİKKAT: ClearML şunları kullanır / 'yi alt projeler için bir sınırlayıcı olarak kullanırken dikkatli olun. / proje adınızda!

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

veya özel proje ve görev adı ile:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Bu yakalayacak:

  • Kaynak kodu + taahhüt edilmemiş değişiklikler
  • Yüklü paketler
  • (Hiper) parametreler
  • Model dosyaları (kullanım --save-period n her n epokta bir kontrol noktası kaydetmek için)
  • Konsol çıktısı
  • Skalalar (mAP_0.5, mAP_0.5:0.95, kesinlik, geri çağırma, kayıplar, öğrenme oranları, ...)
  • Makine ayrıntıları, çalışma zamanı, oluşturma tarihi vb. gibi genel bilgiler.
  • Etiket korelogramı ve karışıklık matrisi gibi üretilen tüm grafikler
  • Dönem başına sınırlayıcı kutulara sahip görüntüler
  • Dönem başına mozaik
  • Epok başına doğrulama görüntüleri

Bu çok fazla değil mi? 🤯 Ş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_0.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 da fazlası var, bu yüzden nasıl çalıştığını görmek istiyorsanız okumaya devam edin!

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

Verilerinizi kodunuzdan ayrı olarak sürümlendirmek genellikle iyi bir fikirdir ve en son sürümü edinmeyi de kolaylaştırır. Bu veri havuzu, bir veri kümesi sürüm kimliği sağlamayı destekler ve henüz orada değilse verileri aldığından emin olur. Bunun yanı sıra, bu iş akışı kullanılan veri seti kimliğini de görev parametrelerinin bir parçası olarak kaydeder, böylece hangi deneyde hangi verilerin kullanıldığını her zaman kesin olarak bilirsiniz!

ClearML Veri Seti Arayüzü

Veri Setinizi 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 ../datasets klasörünü depo kök klasörüne göre ayarlayın. Yani eğer indirdiyseniz coco128 YAML'deki bağlantıyı kullanarak veya yolov5 tarafından sağlanan komut dosyalarıyla veri kümesi, 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 kendinizinkini kullanmaktan çekinmeyin.

Ardından,⚠️copy ilgili YAML dosyasını folder⚠️ veri kümesinin kökdizinine ekleyin. Bu YAML dosyaları ClearML 'un 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
        |_ coco128.yaml  # <---- HERE!
        |_ LICENSE
        |_ README.txt

Veri Setinizi Yükleyin

Bu veri kümesini ClearML adresine 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-data sync --project YOLOv5 --name coco128 --folder .

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

# Optionally add --parent <parent_dataset_id> 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 close

Bir ClearML Veri Kümesi Kullanarak Eğitimi Çalıştırın

Artık bir ClearML veri setiniz 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://<your_dataset_id> --weights yolov5s.pt --cache


👀 Hiperparametre Optimizasyonu

Artık deneylerimizi ve verilerimizi sürümlendirdiğimize göre, üzerine neler inşa edebileceğimize bir göz atmanın zamanı geldi!

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 izin verir. 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.

Bunun kimliğini doldurmanız gerekecek template task adresinde bulunan komut dosyasında utils/loggers/clearml/hpo.py ve sonra sadece çalıştırın :) Değiştirebilirsiniz task.execute_locally() için task.execute() ClearML kuyruğuna koymak ve bunun yerine uzak bir temsilcinin üzerinde çalışmasını sağlamak için.

# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.py

HPO

🤯 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 yapabildiğ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 ajanı 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-agent daemon --queue <queues_to_listen_to> [--docker]

Klonlama, Düzenleme ve Sıraya Alma

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

🪄 Deneyi sağ tıklayarak klonlayın

🎯 Hiperparametreleri olmasını istediğiniz şekilde düzenleyin

Görevi sağ tıklayarak herhangi bir kuyruğa atayın

UI'den bir görev çağırma

Bir Görevi Uzaktan Yürütme

Şimdi yukarıda açıkladığımız gibi bir görevi klonlayabilir veya mevcut komut dosyanızı ekleyerek işaretleyebilirsiniz task.execute_remotely() ve yürütüldüğünde, temsilcinin üzerinde çalışmaya başlaması için bir sıraya konacaktır!

YOLOv5 eğitim betiğini uzaktan çalıştırmak için tek yapmanız gereken, clearml kaydedicisi oluşturulduktan 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 kodunu çalıştırırken, python kodu 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çekleyicilerle 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!

Autoscalers başlangıç videosuna aşağıdan göz atın.

Videoyu izleyin



Oluşturma 2023-11-12, Güncelleme 2024-04-18
Yazarlar: glenn-jocher (6), RizwanMunawar (1)

Yorumlar