paint-brush
डीप लेक, डीप लर्निंग के लिए एक लेकहाउस: टेंसर स्टोरेज फॉर्मेटद्वारा@dataology
155 रीडिंग

डीप लेक, डीप लर्निंग के लिए एक लेकहाउस: टेंसर स्टोरेज फॉर्मेट

द्वारा Dataology: Study of Data in Computer Science5m2024/06/05
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

शोधकर्ताओं ने डीप लेक (Deep Lake) नामक डीप लर्निंग के लिए एक ओपन-सोर्स लेकहाउस प्रस्तुत किया है, जो डीप लर्निंग फ्रेमवर्क के लिए जटिल डेटा स्टोरेज और स्ट्रीमिंग को अनुकूलित करता है।
featured image - डीप लेक, डीप लर्निंग के लिए एक लेकहाउस: टेंसर स्टोरेज फॉर्मेट
Dataology: Study of Data in Computer Science HackerNoon profile picture
0-item

लेखक:

(1) सासुन हंबारडज़ुम्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(2) अभिनव तुली, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(3) लेवोन घुकास्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(4) फ़रीज़ रहमान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;.

(5) ह्रांट टॉपच्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(6) डेविड इसयान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(7) मार्क मैकक्वाडे, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(8) मिकायेल हरुट्युनयन, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(9) टेटेविक हाकोब्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(10) इवो स्ट्रानिक, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए;

(11) डेविट बुनियात्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए।

लिंक की तालिका

3. टेन्सर स्टोरेज प्रारूप

डीप लेक डेटासेट कॉलमर स्टोरेज आर्किटेक्चर का पालन करते हैं, जिसमें टेंसर कॉलम के रूप में होते हैं, जैसा कि चित्र 3 में दिखाया गया है। प्रत्येक टेंसर चंक्स का एक संग्रह है - बाइनरी ब्लॉब्स जिसमें डेटा सैंपल होते हैं। प्रत्येक टेंसर से जुड़ा एक इंडेक्स मैप किसी दिए गए सैंपल इंडेक्स के लिए उस चंक के भीतर सैंपल के सही चंक और इंडेक्स को खोजने में मदद करता है।

3.1 डेटासेट

डेटासेट में एक नमूना समानांतर टेंसर में अनुक्रमित एकल पंक्ति का प्रतिनिधित्व करता है। दस्तावेज़ संग्रहण प्रारूप के विपरीत, नमूना तत्व तार्किक रूप से स्वतंत्र होते हैं, जो प्रदर्शन क्वेरी चलाने या नेटवर्क पर चयनित टेंसर को GPU प्रशिक्षण उदाहरणों में स्ट्रीम करने के लिए नमूनों तक आंशिक पहुँच को सक्षम बनाता है। कई टेंसर को समूहीकृत किया जा सकता है। समूह वाक्यविन्यास नेस्टिंग को लागू करते हैं और परिभाषित करते हैं कि टेंसर एक दूसरे से कैसे संबंधित हैं। वाक्यविन्यास नेस्टिंग पदानुक्रमित मेमोरी लेआउट के लिए प्रारूप जटिलता से बचता है। डेटासेट की स्कीमा में परिवर्तन भी समय के साथ संस्करण नियंत्रण के साथ ट्रैक किए जाते हैं, डेटासेट सामग्री परिवर्तनों के समान।

3.2 टेंसर

टेंसर टाइप किए जाते हैं और उन्हें इन-प्लेस जोड़ा या संशोधित किया जा सकता है। इंडेक्स या इंडेक्स के सेट तक डिफ़ॉल्ट पहुँच डेटा को NumPy सरणियों [55] के रूप में लौटाती है। पार्केट [79] में देखे गए 1-डी डेटा या एरो [13] में श्रृंखला को संग्रहीत करने के बजाय, टेंसर एन-आयामी डेटा को समायोजित कर सकते हैं, जहाँ आमतौर पर पहला आयाम इंडेक्स या बैच आयाम से मेल खाता है। टेंसर में गतिशील रूप से आकार की सरणियाँ हो सकती हैं, जिन्हें रैग्ड टेंसर भी कहा जाता है, जो कि ज़ार [52] जैसे अन्य स्थिर रूप से खंडित सरणी प्रारूपों के विपरीत है।

3.3 प्रकार

Htype एक टेंसर में नमूनों पर अपेक्षाओं को परिभाषित करता है जैसे डेटा प्रकार (dtype जैसा कि NumPy [55] में देखा गया है), आकार, आयामों की संख्या या संपीड़न। टाइप किए गए टेंसर डीप लर्निंग फ्रेमवर्क के साथ बातचीत को सीधा बनाते हैं और समझदारी की जाँच और कुशल मेमोरी लेआउट को सक्षम करते हैं। एक सामान्य टेंसर htype से विरासत में प्राप्त करके, हम छवि, वीडियो, ऑडियो, bbox, dicom और अन्य जैसे प्रकारों का निर्माण कर सकते हैं। उदाहरण के लिए, इमेज htype वाला एक टेंसर यह अपेक्षा करेगा कि इसमें जोड़े जा रहे नमूनों का dtype uint8 और आकार की लंबाई 3 (यानी चौड़ाई, ऊँचाई और चैनलों की संख्या) हो। हम htypes की धारणा को और विस्तारित करते हैं जो मेटा प्रकारों की अनुमति देते हैं जो टेंसर (अनुक्रम [छवि]) में छवि अनुक्रमों को संग्रहीत करने का समर्थन करते हैं


चित्र 3: प्रत्येक नमूना (पंक्ति) को गतिशील आकार वाले खंडों के साथ स्तंभाकार टेंसर के एक सेट में कैसे संग्रहीत किया जाता है

3.4 मेमोरी लेआउट

डीप लेक डेटासेट में JSON प्रारूप में एक प्रोवेंस फ़ाइल और प्रति टेंसर फ़ोल्डर होते हैं। टेंसर में चंक, चंक एनकोडर, टाइल एनकोडर और टेंसर मेटाडेटा होते हैं। टेंसर को वैकल्पिक रूप से छिपाया जा सकता है। उदाहरण के लिए, छिपे हुए टेंसर का उपयोग छवियों के डाउन-सैंपल किए गए संस्करणों को बनाए रखने या तेज़ क्वेरी के लिए आकार की जानकारी को संरक्षित करने के लिए किया जा सकता है।


टेंसर को स्टोरेज स्तर पर चंक में संग्रहित किया जाता है। जबकि स्थिर रूप से (अनुमानित) आकार वाली चंकिंग चंक मैप टेबल को बनाए रखने से बचती है, यह टेंसर के विनिर्देशन, कस्टम संपीड़न उपयोग सीमाओं, गतिशील रूप से आकार वाले टेंसर के लिए कम उपयोग किए गए स्टोरेज और पोस्ट-प्रोसेसिंग अक्षमताओं के दौरान महत्वपूर्ण उपयोगकर्ता ओवरहेड पेश करती है। सीमित संख्या में नमूनों को फिट करने के लिए चंक आकार की निचली और ऊपरी सीमा के आधार पर डीप लेक चंक का निर्माण किया जाता है। यह एक संपीड़ित इंडेक्स मैप होने के ट्रेड-ऑफ के साथ आता है जो मिश्रित-आकार के नमूनों को समायोजित करते हुए स्ट्रीमिंग के लिए इष्टतम सीमा में चंक आकार को सक्षम करते हुए प्रति टेंसर चंक आईडी मैपिंग के लिए सैंपल इंडेक्स को संरक्षित करता है। कोई इस पेपर में अपनाए गए दृष्टिकोण को फ़ाइल सिस्टम पेज मैप और कंप्यूट-डिफ़ाइंड मैप-लेस एरे स्टोरेज सिस्टम के बीच एक अनुकूलित ट्रेड-ऑफ के रूप में मान सकता है। व्यावहारिक कारणों से, एक सिंगल चंक एनकोडर को प्रति 1PB टेंसर डेटा पर 150MB चंक एनकोडर बनाए रखते हुए अरबों छवियों तक बढ़ाया जा सकता है। चंक एनकोडर को विभाजित करके आगे की स्केलिंग शुरू की जा सकती है। चंक में हेडर जानकारी होती है जैसे बाइट रेंज, नमूनों के आकार और नमूना डेटा। यदि कोई नमूना ऊपरी सीमा वाले चंक आकार से बड़ा है, जो कि बड़े हवाई या माइक्रोस्कोपी चित्रों के मामले में होता है, तो नमूने को स्थानिक आयामों में चंक में टाइल किया जाता है। टाइलिंग का एकमात्र अपवाद वीडियो है। वीडियो को इंडेक्स में कुशल फ़्रेम मैपिंग, की-फ़्रेम-ओनली डिकंप्रेशन और स्ट्रीमिंग के दौरान रेंज-आधारित अनुरोधों के कारण संरक्षित किया जाता है।

3.5 पहुँच पैटर्न

टेंसर स्टोरेज प्रारूप को डीप लर्निंग प्रशिक्षण और अनुमान के लिए अनुकूलित किया गया है, जिसमें अनुक्रमिक और यादृच्छिक पहुँच शामिल है। अनुक्रमिक पहुँच का उपयोग स्कैन क्वेरी चलाने, टेंसर को अन्य टेंसर में बदलने या अनुमान चलाने के लिए किया जाता है। रैंडम एक्सेस उपयोग के मामलों में एक ही छवि या मॉडल पर लेबल लिखने वाले कई एनोटेटर शामिल हैं जो डेटासेट के साथ-साथ पूर्वानुमानों को संग्रहीत करते हैं। जब सख्त मोड अक्षम होता है, तो टेंसर के आउट-ऑफ-द-बाउंड इंडेक्स असाइन किए जा सकते हैं, इस प्रकार विरल टेंसर को समायोजित किया जा सकता है। हालाँकि, समय के साथ यादृच्छिक असाइनमेंट अकुशल रूप से संग्रहीत डेटा चंक का उत्पादन करेगा। डेटा लेआउट को ठीक करने के लिए, हम डेटा लेआउट को अनुकूलित करने के लिए ऑन-द-फ्लाई री-चंकिंग एल्गोरिदम को लागू करते हैं। डीप लेक के प्रमुख एक्सेस पैटर्न में से एक मशीन लर्निंग मॉडल को प्रशिक्षित करने के लिए शफल स्ट्रीम एक्सेस है। प्रशिक्षण प्रक्रिया में चंक को स्ट्रीम करते समय इसे रैंडम या कस्टम ऑर्डर एक्सेस की आवश्यकता होती है। यह चंक के अंदर उप-तत्वों तक पहुँचने के लिए रेंज-आधारित अनुरोधों को शामिल करके, क्रम निर्धारित करने के लिए प्रशिक्षण से पहले जटिल क्वेरी चलाकर और प्राप्त और अप्रयुक्त डेटा का बफर कैश बनाए रखने के द्वारा प्राप्त किया जाता है। इससे शफलिंग एल्गोरिदम चलाने के लिए एक अलग कंप्यूट क्लस्टर होने से बचा जाता है [50]।


प्रत्येक टेंसर के अपने स्वयं के खंड होते हैं, और डिफ़ॉल्ट खंड का आकार 8MB होता है। जब व्यक्तिगत डेटा बिंदु (छवि, लेबल, एनोटेशन, आदि) खंड के आकार से छोटे होते हैं, तो एक एकल खंड में कई सूचकांकों से डेटा होता है। इसके विपरीत, जब व्यक्तिगत डेटा बिंदु खंड के आकार से बड़े होते हैं, तो डेटा को कई खंडों (टाइलिंग) में विभाजित किया जाता है। चंकिंग लॉजिक के अपवाद वीडियो डेटा हैं।


डीप लेक प्रारूप GPU प्रसंस्करण के लिए थ्रूपुट को अधिकतम करने के लिए अनुकूलित है। इसमें डीप लर्निंग फ्रेमवर्क के अपेक्षित लेआउट में CPU प्री-फ़ेचिंग, डीकंप्रेसन या डिकोडिंग, ट्रांसफ़ॉर्मेशन और GPU मेमोरी ट्रांसफ़र शामिल हैं।

3.6 भंडारण प्रदाता

डीप लेक को किसी भी स्टोरेज प्रदाता में प्लग किया जा सकता है, जिसमें AWS S3 [1], Google क्लाउड स्टोरेज (GCS) [3], POSIX संगत फ़ाइल सिस्टम या स्थानीय इन-मेमोरी स्टोरेज जैसे ऑब्जेक्ट स्टोरेज शामिल हैं। इसके अलावा, यह विभिन्न स्टोरेज प्रदाताओं को एक साथ जोड़कर मेमोरी कैशिंग का निर्माण करता है, उदाहरण के लिए - स्थानीय इन-मेमोरी डेटा के साथ रिमोट S3 स्टोरेज का कम से कम हाल ही में उपयोग किया गया (LRU) कैश।


यह पेपर CC 4.0 लाइसेंस के अंतर्गत arxiv पर उपलब्ध है।