Ultralytics YOLO27:
Get Started

ClearML Entegrasyonu#

ClearML MLOps experiment tracking platform

ClearML Hakkında#

ClearML, makine öğrenimi iş akışlarını kolaylaştırmak ve mühendislik için harcanan zamanı azaltmak üzere geliştirilmiş bir açık kaynak MLOps platformudur.

  • 🔨 Her YOLOv5 eğitim çalıştırmasını deney yöneticisinde izle.
  • 🔧 Entegre ClearML veri sürümleme aracı ile özel eğitim verilerini sürümle ve bunlara eriş.
  • 🔦 ClearML Agent'ı kullanarak YOLOv5 çalıştırmalarını uzaktan eğit ve izle.
  • 🔬 ClearML hiperparametre optimizasyonu ile en iyi mAP değerini bul.
  • 🔭 ClearML Serving'i kullanarak birkaç komutla eğitilmiş YOLOv5 modelini bir API'ye dönüştür.

Bu araçları ihtiyacın kadar kullan — yalnızca deney yöneticisiyle başlayabilir veya hepsini bir araya getirerek eksiksiz bir işlem hattı oluşturabilirsin.

🦾 Kurulum#

ClearML'ın deneylerini ve verilerini izleyebilmesi için bir sunucuyla iletişim kurması gerekir. İki seçeneğin var:

Ardından clearml Python paketini yükle ve SDK'yı sunucuna bağla:

pip install clearml

Settings → Workspace → Create new credentials bölümünden (ClearML kullanıcı arayüzünün sağ üst köşesinde) kimlik bilgileri oluştur, ardından şunu çalıştır:

clearml-init

İstemleri takip et. Hepsi bu — kurulum tamamlandı.

🚀 ClearML ile YOLOv5 Eğitimi#

Deney izlemeyi etkinleştirmek için henüz yüklemediysen ClearML pip paketini yükle:

pip install clearml

Bu işlem, YOLOv5 eğitim betiğiyle entegrasyonu etkinleştirir. Bundan sonraki her eğitim çalıştırması, ClearML deney yöneticisi tarafından kaydedilip saklanır.

Proje ve görev adlarını özelleştirmek için train.py komutuna --project ve --name değerlerini ilet. Varsayılanlar YOLOv5 ve Training değerleridir. ClearML, / ifadesini alt proje ayıracı olarak kullanır; bu nedenle özel proje adlarında / kullanmaktan kaçın.

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

Ya da özel adlarla:

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

Her çalıştırma şunları kaydeder:

  • Kaynak kodu ve commit edilmemiş değişiklikler
  • Yüklü paketler
  • Hiperparametreler
  • Model kontrol noktaları (her n epoch'ta kaydetmek için --save-period n kullan)
  • Konsol çıktısı
  • Skalerler (mAP_0.5, mAP_0.5:0.95, kesinlik, duyarlılık, kayıplar, öğrenme hızları)
  • Makine bilgileri, çalışma süresi ve oluşturulma tarihi
  • Etiket korelogramı ve karışıklık matrisi gibi oluşturulan grafikler
  • Epoch başına sınırlayıcı kutuları içeren görüntüler
  • Epoch başına mozaik görselleştirmeleri
  • Epoch başına doğrulama görüntüleri

Her şey ClearML kullanıcı arayüzünde görünür; böylece eğitimi tek bir yerden izleyebilirsin. En iyi performans gösteren modele göre sıralamak için özel sütunlar (örneğin, mAP_0.5) ekle veya birden fazla deneyi seçerek yan yana karşılaştır.

Hiperparametre optimizasyonu ve uzaktan yürütme hakkında bilgi edinmek için okumaya devam et.

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

Verileri koddan ayrı olarak sürümlemek, en son sürümü kolayca almanı sağlar ve tamamen tekrarlanabilir sonuçlar elde edilmesini garanti eder. Bu depo bir veri kümesi sürüm kimliğini kabul eder, eksikse verileri otomatik olarak getirir ve hangi deneyde hangi verilerin kullanıldığını her zaman görebilmen için kimliği görev parametresi olarak kaydeder.

Veri Kümeni Hazırla#

YOLOv5 deposu, YAML yapılandırma dosyaları aracılığıyla birçok veri kümesini destekler. Varsayılan olarak veri kümeleri, deponun kök dizinine göre ../datasets klasörüne indirilir. coco128 dosyasını indirdikten sonra klasör yapısı şöyle görünür:

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

Bu yapıyı koruduğun sürece her veri kümesini kullanabilirsin.

Ardından, veri kümesinin YAML dosyasını veri kümesinin kök klasörüne kopyala — ClearML, veri kümesini doğru şekilde kullanmak için bu dosyayı okur. Örnek düzeni izleyerek kendi YAML dosyanı yazabilir, dosyanın path, train, test, val, nc ve names tanımlarını içerdiğinden emin olabilirsin.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Veri Kümeni Yükle#

Veri kümesini sürümlenmiş bir ClearML veri kümesi olarak kaydetmek için kök klasörüne geç ve şunu çalıştır:

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync, aşağıdaki komut dizisinin kısa yazımıdır; bu komutları açıkça da çalıştırabilirsin:

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

ClearML Veri Kümesiyle Eğitim#

Veri kümesini kaydettikten sonra eğitim komutunu kimliğiyle bu veri kümesine yönlendir:

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

👀 Hiperparametre Optimizasyonu#

Deneyler ve veriler sürümlendikten sonra bunların üzerine yeni çalışmalar kurabilirsin. İzlenen her deney tüm ortamı — kodu, yüklü paketleri ve yapılandırmayı — kaydettiğinden çalıştırmalar tamamen tekrarlanabilir. ClearML, bir deneyi klonlamana, parametrelerini değiştirmeni ve otomatik olarak yeniden çalıştırmanı sağlar; hiperparametre optimizasyonunun (HPO) temeli budur.

HPO'yu yerel olarak çalıştırmak için birlikte gelen betiği kullan. Önce deney yöneticisinde bir eğitim görevinin bulunduğundan emin ol — betik bu görevi klonlar ve hiperparametrelerini değiştirir.

utils/loggers/clearml/hpo.py içindeki şablon görev kimliğini gir, ardından şunu çalıştır:

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Denemeleri bunun yerine uzak agent'larda çalıştırmak için optimizer.start_locally() yerine optimizer.start() kullan ve HyperParameterOptimizer çağrısındaki execution_queue değerini agent'larının dinlediği kuyruğa ayarla.

YOLOv5 ölçümlerini gösteren ClearML HPO panosu

🤯 Uzaktan Yürütme (İleri Düzey)#

HPO'yu yerel olarak çalıştırmak kullanışlıdır ancak deneyleri çoğunlukla şirket içi GPU makinesi veya bulut sunucusu gibi daha güçlü donanımlarda çalıştırmak istersin. ClearML Agent tam da bu iş için kullanılır:

İzlenen her deney, başka bir makinede yeniden üretilmesi için gereken her şeyi (yüklü paketler, commit edilmemiş değişiklikler ve yapılandırma) içerir. ClearML agent'ı bir kuyruğu dinler, gelen görevleri alır, ortamı yeniden oluşturur, işi çalıştırır ve skalerleri ve grafikleri deney yöneticisine aktarır.

Şu komutla herhangi bir makineyi — bulut VM'si, yerel GPU bilgisayarı veya dizüstü bilgisayar — ClearML agent'ına dönüştür:

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Klonlama, Düzenleme ve Kuyruğa Ekleme#

Bir agent çalışırken, ona doğrudan kullanıcı arayüzünden iş atayabilirsin:

  • 🪄 Bir deneye sağ tıklayıp klonla.
  • 🎯 Hiperparametrelerini düzenle.
  • ⏳ Klonlanan göreve sağ tıkla ve hedef kuyruğa ekle.

Görevi Uzaktan Yürütme#

ClearML logger başlatıldıktan sonra task.execute_remotely() ekleyerek çalışan bir betiği programatik olarak uzaktan yürütülmek üzere işaretleyebilirsin. Vurgulanan satırı train.py dosyasına ekle:

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir=save_dir, weights=weights, opt=opt, hyp=hyp, logger=LOGGER)
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ BU SATIRI EKLE
    # ...
    # Özel veri kümesi Artifact bağlantısını işle
    data_dict = loggers.remote_dataset
# ...

Bu değişiklikten sonra eğitim betiği bu satıra kadar çalışır, kodu paketler ve kuyruğa gönderir.

Otomatik Ölçeklenen Çalışanlar#

ClearML, kuyrukta bekleyen deneyler olduğunda AWS, GCP veya Azure'da uzak makineler başlatan, bu makineleri ClearML agent'larına dönüştüren ve işler tamamlandığında kapatan otomatik ölçekleyicilerle birlikte gelir — böylece yalnızca gerçekten çalışan işlem kaynakları için ödeme yaparsın.

Aşağıdaki başlangıç videosunu izle:

Videoyu izle

Daha Fazla Bilgi#

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

Sık Sorulan Sorular#

  • Hayır. app.clear.ml adresindeki ücretsiz barındırılan hizmet, clearml-init işleminden sonra kutudan çıktığı gibi çalışır. Kendi sunucunu barındırmak isteğe bağlıdır ve verilerin ağından çıkamayacağı durumlarda genellikle tercih edilir.

  • YOLOv5, clearml paketi içe aktarılabilir olduğunda entegrasyonu etkinleştirir. Bu nedenle, bir çalıştırma için izlemeyi devre dışı bırakmak üzere paketi pip uninstall clearml komutuyla kaldır.

  • Veri kümesini clearml-data sync ile kaydet, ardından veri argümanı olarak kimliğini ilet: python train.py --data clearml://YOUR_DATASET_ID --weights yolov5s.pt. Kimlik görev üzerinde kaydedilir; böylece her deney tam olarak hangi verileri kullandığını bilir.

  • Evet. Her makinede bir clearml-agent daemon başlat, ardından kullanıcı arayüzünden klonlanmış deneyleri sıraya ekle veya iyileştiricinin denemeleri sıraya göndermesi için utils/loggers/clearml/hpo.py dosyasını düzenleyerek execution_queue ayarlanmış halde optimizer.start() çağrısı yap.

Katkıda Bulunanlar

Yorumlar