paint-brush
Veri Yükleyici Ortamına Genel Bakış: Özet ve Girişile@serialization

Veri Yükleyici Ortamına Genel Bakış: Özet ve Giriş

Çok uzun; Okumak

Bu makalede araştırmacılar, kütüphaneleri işlevsellik, kullanılabilirlik ve performans açısından karşılaştırarak veri yükleyicilerin makine öğrenimi eğitimini iyileştirmenin anahtarı olduğunu vurguluyor.
featured image - Veri Yükleyici Ortamına Genel Bakış: Özet ve Giriş
The Serialization Publication HackerNoon profile picture
0-item

Yazarlar:

(1) Iason Ofeidis, Elektrik Mühendisliği Bölümü ve Yale Ağ Bilimi Enstitüsü, Yale Üniversitesi, New Haven {Eşit katkı};

(2) Diego Kiedanski, Elektrik Mühendisliği Bölümü ve Yale Ağ Bilimi Enstitüsü, Yale Üniversitesi, New Haven {Eşit katkı};

(3) Leandros Tassiulas Levon Ghukasyan, Activeloop, Mountain View, CA, ABD, Elektrik Mühendisliği Bölümü ve Yale Ağ Bilimi Enstitüsü, Yale Üniversitesi, New Haven.

Bağlantı Tablosu

SOYUT

Makine öğrenimi modellerini eğitirken verileri depolamadan GPU'lara taşımaktan sorumlu olan veri yükleyiciler, eğitim işlerinin performansını büyük ölçüde artırmanın anahtarına sahip olabilir. Son gelişmeler, yalnızca eğitim süresini önemli ölçüde azaltarak değil, aynı zamanda S3 gibi uzak depolamadan veri yükleme gibi yeni özellikler sunarak da umut vaat ediyor. Bu yazıda, veri yükleyiciyi Derin Öğrenme (DL) iş akışında ayrı bir bileşen olarak ayıran ve yapısını ve özelliklerini ana hatlarıyla açıklayan ilk kişi biziz. Son olarak, mevcut farklı veri yükleme kitaplıklarının kapsamlı bir karşılaştırmasını, bunların işlevsellik, kullanılabilirlik ve performans açısından değiş tokuşlarını ve bunlardan elde edilen içgörüleri sunuyoruz.

1. GİRİŞ

(Derin) bir makine öğrenimi modelinin eğitimi, bir veri kümesini, bir modeli ve gerçek sorunlarda bir veya daha fazla GPU'yu içeren donanımı gerektirir.


Bir modeli eğitmek için gereken toplam hesaplama süresini azaltmak her zaman ilgimizi çeker. Bu, birkaç nedenden dolayı arzu edilir: diğer şeylerin yanı sıra daha düşük maliyetler, yinelenmesi daha kolay ve daha küçük ekipler için daha erişilebilir.


ML işlem hattının ana bileşenleri ile çalışma süresi arasındaki ilişki genellikle açıktır: daha büyük bir veri kümesi daha uzun sürer, daha büyük bir model daha uzun sürer ve daha hızlı bir GPU, toplam çalışma süresini azaltır. Bulmacada sıklıkla gözden kaçırılan anahtar parçalardan biri, tüm bu parçalar arasındaki yapıştırıcıdır: veri yükleyici. Veri yükleyici, verileri kalıcı depolama alanından (RAM, disk veya ağ) yüklemek, gerekli dönüşümleri uygulamak ve dönüştürülen verileri modelin alabilmesi için uygun cihaza göndermekle sorumludur.


Çoğu geliştirici, ilgili makine öğrenimi çerçevesindeki (Pytorch, Tensorflow, Jax) varsayılan veri yükleyicinin uygulamaları için zaten optimize edildiğini ve genellikle üçüncü taraf veri yükleyicilerine güvenmediğini varsayar. İlginç bir şekilde, veri yükleyicilerin makine öğrenimi boru hatlarının en önemli darboğazlarından biri olabileceği yakın zamanda gösterilmiştir(Mohan ve diğerleri, 2020). Sonuç olarak, veri yükleyici performansını optimize etmeye ve geliştirmeye adanmış birçok yeni kütüphane ve araştırma projesi gördük.


Örneğin, MIT'deki bir araştırma ekibi tarafından geliştirilen yeni bir açık kaynak kütüphanesi olan FFCV (Leclerc ve diğerleri, 2022), varsayılan PyTorch veri yükleyicisini kullanarak ImageNet'i eğitmeyi başardı. Bu tür kazanımlar, Amazon Web Services (AWS) ve Google Cloud Platform (GPC) gibi hizmet olarak altyapıya (IaaS) bağımlı olan şirketlerin ve araştırma ekiplerinin operasyonel maliyetlerini önemli ölçüde azaltabilir.


Veri yükleyicilerin sunduğu bir diğer umut verici özellik ise uzaktan depolanan verileri yükleme yeteneğidir; örneğin bir S3 kovasından. Bunun birçok pratik avantajı vardır: veri kümesini yerel olarak kurma süresi ortadan kalkar, bilgi işlem makinesinde gerekli disk kapasitesi azalır ve ekip üyelerinin aynı veri kümesinin farklı sürümlerini kullanma riski azalır. Eğitim sırasında veri akışının sağlanmasının doğal dezavantajı, genellikle ağ aktarım hızlarının disk G/Ç'sinden daha yavaş olması ve bunun sonucunda modelin eğitilmesinin daha uzun sürmesi gerektiğidir. İlginç bir şekilde, Hub (Team, 2022a) ve Deep Lake (Hambardzumyan ve diğerleri, 2022) gibi bazı kütüphanelerin, bazı senaryolar için verileri yerel olarak okuyan varsayılan Pytorch veri yükleyicisinden ağ üzerinden daha iyi performans elde ettiğini gözlemledik. Bunun mümkün olmasının nedeni, veri yükleyicinin gerekli verileri GPU'nun ihtiyaç duymasından önce önceden getirmeyi başarmasıdır. Bölüm 5'te daha kapsamlı bir tartışma sunacağız.


Tüm kitaplıklar uzaktan yüklemeyi desteklemez ve destekleyenlerin de aynı uzak depolama hizmetleriyle entegre olması gerekmez. Veri yükleyicileri uygulayan mevcut kütüphanelerin sayısı arttığından, mevcut en son teknolojiyi aydınlatmak, hangi sorunların halihazırda çözülmüş göründüğünü ve gelecekte iyileştirme için en umut verici alanları keşfetmek için kapsamlı bir kıyaslama oluşturmaya başladık. araştırma.


Bu noktada, deneylerimizin (Kumar & Sivathanu, 2020), (Mohan et al., 2020) gibi diğer çalışmalardan belirli bir farkının, küçük ve orta ölçekli iş istasyonlarında çalışan işlere odaklanmamız olduğunu belirtmek gerekir. sınırlı kapasite (GPU, RAM, SSD). Bunların, bütçenin büyük ölçekli kümelerin kullanımına izin vermediği sektördeki çoğu kişi ve küçük ekip için mevcut olan donanımı yansıtması daha olasıdır.

1.1 Katkılar

Katkılarımızı şu şekilde özetleyebiliriz:


• Açık Kaynak Kodu: Pytorch'taki[1] en popüler veri yükleme kitaplıklarını karşılaştıran bir açık kaynak karşılaştırması oluşturduk. Proje topluluğa açık kalacak ve böylece ilgi arttıkça yeni kütüphaneler ve veri kümeleri eklenebilecek. Ayrıca, bu belgede karşılaştırılan kütüphanelerden herhangi birinde yapılacak büyük güncellemelerin ardından, bu kıyaslamalarda elde edilen sayısal sonuçları da güncellemeyi bekliyoruz.


• Uzaktan Eğitimin Uygulanabilirliği: Makul koşullar altında halka açık bir internet bağlantısı üzerinden veri akışı kullanarak bir makine öğrenimi modeli eğitmenin mümkün olduğunu gösteriyoruz. Özellikle veriyi sunan bilişimin etkisine dikkat çekiyoruz. Veri kümesinin indirme sonrasında yerel olarak önbelleğe alındığını varsaymadığımız için sonucumuz (Mohan ve diğerleri, 2020) sonucundan farklıdır.


• Hız için Hiperparametre Optimizasyonu: Geleneksel hiperparametre yaklaşımları, eğitilen modelin genel doğruluğunu artırmayı amaçlar. Bu yazıda, toplam çalışma süresinin bir göstergesi olarak hız (zaman içinde işlenen örnekler) için de nasıl optimizasyon yapabileceğimizi gösteriyoruz. Bu optimizasyon donanıma bağlıdır, dolayısıyla uzun süren işlerden önce bunu gerçekleştirmek mantıklıdır. Bu süreç, eşdeğer doğruluk süresi ölçümlerinden en azından bir kat daha hızlı olmalıdır.



[1] Github Deposu: https://github.com/smartnets/dataloaderbenchmarks