İçeriğe geç

ClearML Entegrasyonu

Clear|MLClear|ML

ClearML Hakkında

ClearML, makine öğrenimi iş akışınızı kolaylaştırmak ve zamandan tasarruf etmenizi sağlamak için tasarlanmış bir açık kaynaklı MLOps platformudur ⏱️.

🔨 Deney yöneticisinde her YOLOv5 eğitimini takip edin

🔧 Entegre ClearML Veri Sürümleme Aracı ile özel eğitim verilerinizi sürümleyin ve kolayca erişin

🔦 ClearML Agent'ı kullanarak YOLOv5 eğitimlerinizi uzaktan eğitin ve izleyin

🔬 ClearML Hiperparametre Optimizasyonu kullanarak en iyi mAP'yi elde edin

🔭 ClearML Serving'i kullanarak yeni eğitilmiş YOLOv5 modelinizi 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 ardışık düzende bir araya getirebilirsiniz!

ClearML skalar gösterge paneli



🦾 İşleri Kurma

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

ClearML Hosted Service'e ücretsiz kaydolun veya kendi ClearML sunucunuzu kurabilirsiniz. Sunucu bile açık kaynaklıdır, bu nedenle hassas verilerle uğraşıyor olsanız bile sorun yaşamamalısınız!

  • Şunu yükleyin: clearml python paketi:

    pip install clearml
    
  • Kimlik bilgileri oluşturarak (sağ üstten Ayarlar -> Çalışma Alanı -> Yeni kimlik bilgileri oluştur'a gidin) ClearML SDK'sını sunucuya bağlayın, ardından aşağıdaki komutu yürütün ve talimatları izleyin:

    clearml-init
    

İşte bu kadar! Bitirdiniz 😎


🚀 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 komut dosyasıyla entegrasyonu etkinleştirecektir. Bundan sonraki her eğitim çalıştırması, ClearML deney yöneticisi tarafından yakalanacak ve saklanacaktır.

Eğer değiştirmek isterseniz project_name veya task_name, şunu kullanın --project ve --name 'nin argümanları train.py komut dosyası, varsayılan olarak projeye şu ad verilecektir: YOLOv5 ve görev Training. LÜTFEN DİKKAT: ClearML şunu kullanır: / alt projeler için bir sınırlayıcı olarak kullanılır, bu nedenle 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ıyla:

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

Bu şunları yakalayacaktır:

  • Kaynak kodu + commit edilmemiş değişiklikler
  • Yüklü paketler
  • (Hiper)parametreler
  • Model dosyaları (kullanım --save-period n her n epoch'ta bir kontrol noktası kaydetmek için)
  • 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. gibi genel bilgiler.
  • Etiket korelogramı ve karışıklık matrisi gibi üretilen tüm çizimler
  • Epok başına sınırlayıcı kutular içeren görüntüler
  • Epok başına mozaik
  • Epok başına doğrulama görüntüleri

Çok fazla değil mi? 🤯 Şimdi, eğitim sürecimize genel bir bakış elde etmek için tüm bu bilgileri ClearML UI'da görselleştirebiliriz. Tablo görünümüne özel sütunlar ekleyin (örneğin mAP_0.5), böylece en iyi performansı gösteren modeli kolayca sıralayabilirsiniz. Veya birden fazla deneyi seçin ve doğrudan karşılaştırın!

Hiperparametre optimizasyonu ve uzaktan yürütme gibi tüm bu bilgilerle yapabileceğimiz daha da fazla şey var, bu yüzden bunun 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ümlemek genellikle iyi bir fikirdir ve en son sürümü edinmeyi de 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 deneyde hangi verilerin kullanıldığını her zaman kesin olarak bilirsiniz!

ClearML Veri Kümesi Arayüzü

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 şuraya indirilir: ../datasets depo kök klasörüne göre klasör. Yani eğer şunu indirdiyseniz: coco128 YAML'deki bağlantıyı kullanarak veya yolov5 tarafından sağlanan komut dosyalarıyla veri kümesini oluşturduğunuzda, şu 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 bağlı kaldığınız sürece kendi verilerinizi kullanmaktan çekinmeyin.

Ardından, ⚠️ilgili YAML dosyasını veri kümesi klasörünün köküne kopyalayın⚠️. Bu YAML dosyası, ClearML'nin veri kümesini düzgün bir şekilde kullanması için gereken bilgileri içerir. Elbette, örnek YAML'lerin yapısını izleyerek bunu kendiniz de oluşturabilirsiniz.

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 Kümenizi Yükleyin

Bu veri kümesini sürüm kontrollü bir veri kümesi olarak ClearML'ye aktarmak 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 bir kısaltma komutudur. Bu komutları art arda 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ğitim Çalıştırın

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

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


👀 Hiperparametre Optimizasyonu

Deneylerimizi ve veri sürümlememizi yaptığıma göre, üzerine ne inşa edebileceğimize bir göz atmanın zamanı geldi!

Kod bilgileri, kurulu paketler ve ortam ayrıntıları kullanılarak, 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, bu temelde HPO'nun yaptığı şeydir!

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

Bunun kimliğini doldurmanız gerekecek template task adresinde bulunan betikte utils/loggers/clearml/hpo.py ve sonra sadece çalıştırın. Şunu değiştirebilirsiniz: task.execute_locally() için task.execute() bunu bir ClearML kuyruğuna koymak ve bunun yerine uzak bir aracının ü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ş)

Yerel olarak HPO çalıştırmak gerçekten kullanışlıdır, ancak deneylerimizi bunun yerine uzak bir makinede çalıştırmak istersek ne olur? Belki de yerinde çok güçlü bir GPU makinesine erişiminiz vardır veya bulut GPU'larını kullanmak için bir 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, işlenmemiş değişiklikler vb.). Yani bir ClearML aracısı tam olarak şunu yapar: Gelen görevler için bir kuyruğu dinler ve bir tane bulduğunda, ortamı yeniden oluşturur ve yine de deney yöneticisine skalerler, grafikler vb. raporlarken çalıştırır.

Sadece şunu çalıştırarak herhangi bir makineyi (bir bulut VM'si, yerel bir GPU makinesi, kendi dizüstü bilgisayarınız...) basitçe 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

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

🪄 Deneye sağ tıklayarak deneyi klonlayın

🎯 Hiperparametreleri istediğiniz gibi düzenleyin

⏳ Görevi sağ tıklayarak kuyruklardan herhangi birine ekleyin

Kullanıcı arayüzünden bir görev sıraya alın

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, aracının üzerinde çalışmaya başlaması için bir sıraya konulacaktır!

YOLOv5 eğitim komut dosyasını uzaktan çalıştırmak için, clearml kaydedici örneklendikten sonra training.py komut dosyasına bu satırı eklemeniz yeterlidir:

# ...
# 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ırdığınızda, python komut dosyasını o satıra kadar çalıştıracak, ardından kodu paketleyip sıraya gönderecektir!

Otomatik ölçeklendirme çalışanları

ClearML ayrıca otomatik ölçekleyiciler ile birlikte gelir! Bu araç, seçtiğiniz bulutta (AWS, GCP, Azure) yeni uzak makineleri otomatik olarak başlatır ve kuyrukta algılanan deneyler olduğunda bunları sizin için ClearML aracılarına dönüştürür. Görevler işlendikten sonra, otomatik ölçekleyici uzak makineleri otomatik olarak kapatır ve ödeme yapmayı bırakırsınız!

Otomatik ölçekleyicilere başlama videosuna aşağıdan göz atın.

Videoyu izleyin

Daha Fazla Bilgi

ClearML'in Ultralytics modelleriyle entegrasyonu hakkında daha fazla bilgi için ClearML entegrasyon kılavuzumuza göz atın ve MLOps iş akışınızı diğer deney izleme araçlarıyla nasıl geliştirebileceğinizi keşfedin.



📅 1 yıl önce oluşturuldu ✏️ 4 ay önce güncellendi

Yorumlar