paint-brush
Veri Yükleyici Ortamına Genel Bakış: Veri Yükleyicilerile@serialization
146 okumalar

Veri Yükleyici Ortamına Genel Bakış: Veri Yükleyiciler

Ç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ış: Veri Yükleyiciler
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

2. VERİ YÜKLEYİCİLER

Derin Öğrenme modelinin eğitilmesi sürecinde, veri kümesinin modele girdi olarak aktarılmadan önce bellekten okunması ve önceden işlenmesi gerekir. Bu işlem, verilerin bir kerede belleğe yüklenmesini gerektirir. Çoğu durumda ve özellikle büyük veri kümelerinde, sistemde mevcut olan miktarın sınırlı olması nedeniyle bir bellek sıkıntısı ortaya çıkar ve bu da sistemin yanıt süresini bozar. Bu darboğaz genellikle derin öğrenme kitaplıklarında veri yükleyici adı verilen bir cihaz kullanılarak giderilir. Bu yapı, veri yükleme süresini ve bellek yükünü mümkün olduğunca azaltmak için paralel işleme, önceden getirme, toplu işleme ve diğer tekniklerden yararlanarak veri kümesi üzerinde yineleme yapmanın bir yolunu sağlar (Paszke ve diğerleri, 2019).


Bir veri yükleyicinin temel amacı, modele beslenecek bir grup örnek oluşturmak amacıyla veri örneklerinin bir depolama konumundan, eğitim için işlem birimleriyle aynı yerde bulunan belleğe aktarılmasından sorumlu eylemleri gerçekleştirmektir. Bu eylemler, depolama sisteminin bant genişliği ve özellikle de G/Ç performansı tarafından sınırlanır. Bu nedenle, sistemin donanım özelliklerine, ona hizmet eden dosya sistemine ve bilgi işlem birimleriyle olan bağlantının verimine bağlı olarak, eğitimin tamamlanması için gereken toplam süre üzerinde çok büyük bir etkiye sahip olabilir.


Dataloader bileşeninin aşağıdaki spesifikasyonu temel olarak PyTorch'a (torch.DataLoader() (PyTorch Core Team)) odaklanırken, TensorFlow muadili (tf.Dataset() (Abadi ve diğerleri, 2015)) aynı olmasa da, büyük benzerlikler taşıyor.


Bir veri yükleyici kullanıldığında, giriş için veri kümesi sağlamanın yanı sıra, kullanıcı kendi ihtiyaçlarına ve kaynaklarına göre uyarlanmış bir dizi hiper parametreyi yapılandırma seçeneğine sahiptir. Tüm veri yükleyicilerde bulunan ortak bir özellik, daha önce de belirtildiği gibi, dahili model parametrelerini güncellemeden önce kullanılacak numune sayısını tanımlayan parti boyutudur. Bu parametre doğası gereği stokastik gradyan inişindeki "mini parti" kavramıyla bağlantılıdır (Hinton ve diğerleri, 2012) ve bu nedenle daha iyi eğitim sonuçları elde etmek gerektiğinde genellikle ince ayar yapılan ilk parametrelerden biridir. .


İkinci olarak kullanıcı, veri kümesinden numune alma ve bunları bir topluluğa ekleme stratejisini belirleyen örnekleme yaklaşımını tanımlayabilir. Bu, belirli kriterlere göre örneklerin seçilmesinin yanı sıra bir olasılık dağılımını da içerebilir. Bu adımda, örneklerin her veri seti yinelemesinden önce yeniden düzenlenebildiği karıştırma seçeneği mevcuttur; amaç genellikle eğitim modelinin genelleştirilmesini geliştirmektir. Diğer bir parametre ise, eğitim modeline girdi olarak beslenecek tek bir öğe oluşturmak için esas olarak bir grup içindeki tüm bireysel örnekleri birbirine bağlama sürecini belirten (vektörleri bir tensöre istiflemeyi düşünün) harmanlama/doldurma işlevidir. . Ayrıca veri yükleyici, getirilen veri örneklerini otomatik olarak sabitlenmiş (sayfa kilitli) bellekte depolayacak şekilde yapılandırılabilir, böylece CUDA özellikli cihazlara daha hızlı veri aktarımı sağlanır.


Veri yükleyiciler, amacı bu veri aktarım sürecini optimize etmek olan çalışanlar adı verilen bir bileşenle birlikte gelir. Çalışanlar, veri yüklemeyi eş zamanlı olmayan bir şekilde gerçekleştirmekten sorumlu alt süreçler olarak tanımlanmaktadır. Bir veri yükleyici örneğini oluştururken kullanıcı, oluşturulacak ve bu işlemin kontrolünde olacak işçi sayısını belirleme seçeneğine sahiptir. Çalışan sayısı sıfıra eşitse hiçbir alt süreç oluşturulmaz, bu da veri alımının aynı süreçte eşzamanlı olarak gerçekleştiği ve dolayısıyla bilgi işlem birimlerinin (GPU) veri yüklemeyi beklemesi gerektiği anlamına gelir. tamamlanacak (PyTorch Çekirdek Ekibi). Tersine, çalışan sayısına eşit alt süreçler oluşturulacak ve bu da hesaplama kodunun veri yükleme ile engellenmesini önleyecektir. Bu, gelecekteki partilerin ihtiyaç duyulduğunda hazır olması için önceden getirilmesiyle gerçekleştirilir.