Sorunsuz makine öğrenimi entegrasyonu, deney takibi ve daha fazlasıyla gelişmiş bir Ultrlaytics YOLOv5 deneyimi için ClearML ile ortaklığımızı keşfedin.
Ultralytics olarak, YOLOv5 gibi harika açık kaynak 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 diğer girişimlerle ticari ortaklıklar kuruyoruz. 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.
Makine Öğreniminin benimsenmesini hızlandırma misyonuyla ClearML , Makine Öğrenimini piyasadaki tüm Yazılım ve Donanım ürünlerine sorunsuz bir şekilde entegre eder.
Bu entegrasyon, bir kişiyi eğitmeyi daha da kolaylaştırır YOLOv5 modelini oluşturun ve otomatik olarak izlemek için ClearML deney yöneticisini kullanın. Veri girişi olarak kolayca bir ClearML veri seti sürüm kimliği belirleyebilirsiniz ve modelinizi eğitmek için otomatik olarak kullanılacaktır.
Bu araçlardan kaçını kullanmak istediğiniz size kalmış, deney yöneticisine bağlı kalabilir veya hepsini etkileyici bir boru hattına zincirleyebilirsiniz.
Deneylerinizi ve verilerinizi takip etmek için ClearML 'un 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ğildir!
Ve işte! Başlamaya hazırsınız...
ClearML deney takibini etkinleştirmek için ClearML pip paketini yüklemeniz yeterlidir.
pip kurulumu 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: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache
Bu yakalayacak:
Hiç de fena 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_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 fazla şey var, bu yüzden nasıl yapılacağını öğrenmek için okumaya devam edin!
Verilerinizi kodunuzdan ayrı olarak sürümlendirmek genellikle iyi bir fikirdir ve en son sürümü edinmeyi de kolaylaştırır. Bu havuz, 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!
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 kendinizinkini kullanmaktan çekinmeyin.
Ardından, ⚠️copy ilgili YAML dosyasını folder⚠️ veri kümesinin kök dizinine ekleyin. Bu YAML dosyaları ClearML 'un veri kümesini düzgün bir şekilde kullanmak için ihtiyaç duyacağı bilgileri içerir. Elbette bunu kendiniz de yapabilirsiniz, sadece örnek YAML'lerin yapısını takip edin.
Temel olarak şu anahtarlara ihtiyacımız var: path, train, test, val, nc, names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE!
|_ LICENSE
|_ README.txt
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 .
clearml-data sync komutu aslında kısaltılmış bir komuttur. Bu komutları birbiri ardına da çalıştırabilirsiniz:
# Temel almak istiyorsanız isteğe bağlı olarak --parent ekleyin
# bu sürüm başka bir veri seti sürümünde, böylece yinelenen dosyalar yüklenmez!
clearml-data create --name coco128 --project YOLOv5/p>
clearml-data add --files .
clearml-veri kapat
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:// --weights yolov5s.pt --cache
Artık deneylerimiz ve veri sürümümüz olduğuna göre, üzerine ne 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, esasen onu klonlayacağız ve hiperparametrelerini değiştireceğiz.
Bu şablon görevin kimliğini utils/loggers/clearml/hpo.py adresinde bulunan komut dosyasına girmeniz ve ardından çalıştırmanız gerekir. Görevi 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'yı kullanmak için önce onu yükleyin, aksi takdirde optimize ediciyi sadece RandomSearch olarak değiştirebilirsiniz pip install optuna python utils/loggers/clearml/hpo.py
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ını kullanmak için biraz bütçeniz vardır. İşte bu noktada ClearML Agent devreye giriyor.
Temsilcinin 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 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 [--docker]
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
Şimdi yukarıda açıkladığımız gibi bir görevi klonlayabilir veya task.execute_remotely() ekleyerek mevcut komut dosyanızı işaretleyebilirsiniz ve yürütüldüğünde, aracının üzerinde çalışmaya başlaması için bir kuyruğa 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!
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! Otomatik ölçekleyicilerin başlangıç videosuna aşağıdan göz atın.
Herhangi bir sorunuz var mı? Topluluğumuza katılın ve sorunuzu bugün bırakın!
Makine öğreniminin geleceği ile yolculuğunuza başlayın