paint-brush
Deep Lake, Derin Öğrenmeye Yönelik Bir Göl Evi: Tensör Depolama Formatıile@dataology
101 okumalar

Deep Lake, Derin Öğrenmeye Yönelik Bir Göl Evi: Tensör Depolama Formatı

Çok uzun; Okumak

Araştırmacılar, derin öğrenme çerçeveleri için karmaşık veri depolamayı ve akışı optimize eden, derin öğrenme için açık kaynaklı bir göl evi olan Deep Lake'i tanıtıyor.
featured image - Deep Lake, Derin Öğrenmeye Yönelik Bir Göl Evi: Tensör Depolama Formatı
Dataology: Study of Data in Computer Science HackerNoon profile picture
0-item

Yazarlar:

(1) Sasun Hambardzumyan, Activeloop, Mountain View, CA, ABD;

(2) Abhinav Tuli, Activeloop, Mountain View, CA, ABD;

(3) Levon Ghukasyan, Activeloop, Mountain View, CA, ABD;

(4) Fariz Rahman, Activeloop, Mountain View, CA, ABD;.

(5) Hrant Topchyan, Activeloop, Mountain View, CA, ABD;

(6) David Isayan, Activeloop, Mountain View, CA, ABD;

(7) Mark McQuade, Activeloop, Mountain View, CA, ABD;

(8) Mikayel Harutyunyan, Activeloop, Mountain View, CA, ABD;

(9) Tatevik Hakobyan, Activeloop, Mountain View, CA, ABD;

(10) Ivo Stranic, Activeloop, Mountain View, CA, ABD;

(11) Davit Buniatyan, Activeloop, Mountain View, CA, ABD.

Bağlantı Tablosu

3. TENSÖR DEPOLAMA FORMATI

Deep Lake veri kümeleri, Şekil 3'te gösterildiği gibi tensörlerin sütun olduğu sütunlu depolama mimarisini takip eder. Her tensör, veri örneklerini içeren ikili lekelerden oluşan bir yığın topluluğudur. Her tensörle ilişkili bir indeks haritası, belirli bir örnek indeksi için o yığın içindeki numunenin doğru yığınını ve dizinini bulmaya yardımcı olur.

3.1 Veri Kümesi

Veri kümesindeki bir örnek, paralel tensörler boyunca indekslenen tek bir satırı temsil eder. Belge depolama formatının aksine, örnek öğeler mantıksal olarak bağımsızdır; bu, performanslı sorguları çalıştırmak veya seçilen tensörleri ağ üzerinden GPU eğitim örneklerine aktarmak için örneklere kısmi erişim sağlar. Birden fazla tensör gruplandırılabilir. Gruplar sözdizimsel iç içe yerleştirmeyi uygular ve tensörlerin birbirleriyle nasıl ilişkili olduğunu tanımlar. Sözdizimsel iç içe yerleştirme, hiyerarşik bellek düzeni için format karmaşıklığını ortadan kaldırır. Veri kümesinin şemasındaki değişiklikler de, veri kümesi içerik değişikliklerine benzer şekilde sürüm kontrolüyle zaman içinde izlenir.

3.2 Tensörler

Tensörler yazılır ve yerinde eklenebilir veya değiştirilebilir. Bir dizine veya bir dizi diziye varsayılan erişim, verileri NumPy dizileri olarak döndürür [55]. Tensörler, Parquet'te [79] veya Arrow'da [13] serilerde görüldüğü gibi 1 boyutlu verileri depolamak yerine, tipik olarak birinci boyutun indeks veya parti boyutuna karşılık geldiği n boyutlu verileri barındırabilir. Tensörler, Zarr [52] gibi diğer statik olarak parçalanmış dizi formatlarının aksine, düzensiz tensörler olarak da adlandırılan dinamik şekilli diziler içerebilir.

3.3 Türler

Htype, veri türü (NumPy [55]'te görüldüğü gibi dtype), şekil, boyut sayısı veya sıkıştırma gibi bir tensördeki örneklere ilişkin beklentileri tanımlar. Yazılan tensörler, derin öğrenme çerçeveleriyle etkileşimi basitleştirir ve akıl sağlığı kontrollerine ve verimli bellek düzenine olanak tanır. Genel bir tensör tipinden miras alarak görüntü, video, ses, bbox, dicom ve diğerleri gibi türleri oluşturabiliriz. Örneğin, görüntü htype'li bir tensör, kendisine eklenen örneklerin uint8 olarak dtype'e ve şekil uzunluğu 3'e (yani genişlik, yükseklik ve kanal sayısı) sahip olmasını bekleyecektir. Görüntü dizilerinin tensörlerde (dizi[görüntü]) saklanmasını destekleyen, uzaktan depolanan görüntülere referans veren ve bir görüntü tensörünün (bağlantı[görüntü]) düzenli davranışını koruyan meta türlerine izin veren htypes kavramını daha da genişletiyoruz. olası çapraz format desteği.


Şekil 3: Her bir numunenin (satır), dinamik olarak boyutlandırılmış parçalara sahip bir dizi sütunlu tensörde nasıl depolandığı

3.4 Bellek Düzeni

Deep Lake veri kümesi, JSON biçiminde bir kaynak dosyası ve tensör başına klasörler içerir. Bir tensör; parçalar, parça kodlayıcı, döşeme kodlayıcı ve tensör meta verilerini içerir. Tensörler isteğe bağlı olarak gizlenebilir. Örneğin, görüntülerin alt örneklenmiş versiyonlarını korumak veya hızlı sorgular için şekil bilgilerini korumak için gizli tensörler kullanılabilir.


Tensörler depolama düzeyinde parçalar halinde depolanır. Statik olarak (çıkarılan) şekillendirilmiş yığınlama, yığın haritası tablosunun korunmasını önlerken, tensörün belirtilmesi sırasında önemli miktarda kullanıcı yüküne, özel sıkıştırma kullanım sınırlamalarına, dinamik olarak şekillendirilmiş tensörler için yeterince kullanılmayan depolamaya ve işlem sonrası verimsizliklere neden olur. Deep Lake parçaları, sınırlı sayıda örneğe uyacak şekilde parça boyutunun alt ve üst sınırına göre oluşturulur. Bu, karışık şekilli örnekleri barındırırken akış için en uygun aralıktaki yığın boyutlarını etkinleştirirken, tensör başına örnek dizini parça kimliği eşlemesine kadar koruyan sıkıştırılmış bir dizin haritasına sahip olma zorunluluğuyla birlikte gelir. Bu makalede benimsenen yaklaşımın, dosya sistemi sayfa haritası ile hesaplama tanımlı haritasız dizi depolama sistemi arasında optimize edilmiş bir değiş-tokuş olduğu düşünülebilir. Pratik nedenlerden dolayı, tek bir parça kodlayıcı, 1PB tensör verisi başına 150 MB parça kodlayıcıyı korurken milyarlarca görüntüye ölçeklendirilebilir. Parça kodlayıcının parçalanmasıyla daha fazla ölçeklendirme yapılabilir. Parçalar bayt aralıkları, örneklerin şekilleri ve örnek verilerin kendisi gibi başlık bilgilerini içerir. Bir numunenin üst sınır parça boyutundan daha büyük olması durumunda (büyük havadan veya mikroskopi görüntülerinde olduğu gibi), numune uzamsal boyutlar boyunca parçalar halinde döşenir. Döşemenin tek istisnası videolardır. Dizinlere etkili çerçeve eşleme, yalnızca anahtar kare sıkıştırmasını açma ve akış sırasında aralığa dayalı istekler nedeniyle videolar korunur.

3.5 Erişim Modelleri

Tensör depolama formatı, sıralı ve rastgele erişim de dahil olmak üzere derin öğrenme eğitimi ve çıkarımı için optimize edilmiştir. Sıralı erişim, tarama sorgularını çalıştırmak, tensörleri diğer tensörlere dönüştürmek veya çıkarımı çalıştırmak için kullanılır. Rastgele erişim kullanım durumları, aynı görüntüye etiket yazan birden fazla açıklayıcıyı veya veri kümesiyle birlikte geriye dönük tahminleri saklayan modelleri içerir. Katı mod devre dışı bırakılırken, bir tensörün sınır dışı endeksleri atanabilir, böylece seyrek tensörler barındırılabilir. Ancak zaman içinde rastgele atama, verimsiz bir şekilde depolanan veri parçaları üretecektir. Veri düzenini düzeltmek için, veri düzenini optimize etmek amacıyla anında yeniden parçalama algoritması uyguluyoruz. Deep Lake'in temel erişim modellerinden biri, makine öğrenimi modellerinin eğitimi için karışık akış erişimidir. Parçaları eğitim sürecine aktarırken rastgele veya özel sipariş erişimi gerektirir. Bu, yığınların içindeki alt öğelere erişim için aralık tabanlı isteklerin dahil edilmesi, sırayı belirlemek için eğitimden önce karmaşık sorguların çalıştırılması ve getirilen ve kullanılmayan veriler için bir arabellek önbelleğinin muhafaza edilmesiyle gerçekleştirilir. Bu, karıştırma algoritmasını [50] çalıştırmak için ayrı bir hesaplama kümesine sahip olmayı önler.


Her tensörün kendi parçaları vardır ve varsayılan parça boyutu 8 MB'tır. Bireysel veri noktaları (resim, etiket, açıklama vb.) yığın boyutundan küçük olduğunda, tek bir yığın birden fazla dizinden gelen verilerden oluşur. Tersine, bireysel veri noktaları yığın boyutundan daha büyük olduğunda, veriler birden çok parçaya bölünür (döşeme). Parçalama mantığının istisnaları video verileridir.


Deep Lake formatı, GPU işleme verimini en üst düzeye çıkarmak için optimize edilmiştir. Derin öğrenme çerçevesinin beklenen düzeninde CPU ön getirme, sıkıştırma açma veya kod çözme, dönüşümler ve GPU bellek aktarımını içerir.

3.6 Depolama Sağlayıcıları

Deep Lake, AWS S3 [1], Google Cloud Storage (GCS) [3] gibi nesne depoları, POSIX uyumlu dosya sistemleri veya yerel bellek içi depolama dahil olmak üzere herhangi bir depolama sağlayıcısına takılabilir. Ayrıca, çeşitli depolama sağlayıcılarını, örneğin uzak S3 depolamanın En Son Kullanılan (LRU) önbelleğini yerel bellek içi verilerle birlikte zincirleyerek bellek önbelleğe almayı oluşturur.