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

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

द्वारा Dataology: Study of Data in Computer Science7m2024/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) डेविट बुनियात्यान, एक्टिवलूप, माउंटेन व्यू, सीए, यूएसए।

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

4. डीप लेक सिस्टम अवलोकन

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

4.1 अंतर्ग्रहण

4.1.1 एक्सट्रैक्ट। कभी-कभी मेटाडेटा पहले से ही रिलेशनल डेटाबेस में मौजूद हो सकता है। हमने इसके अतिरिक्त Airbyte[3] [22] का उपयोग करके एक ETL डेस्टिनेशन कनेक्टर बनाया। यह फ्रेमवर्क SQL/NoSQL डेटाबेस, डेटा लेक या डेटा वेयरहाउस सहित किसी भी समर्थित डेटा स्रोत में प्लग इन करने और डेटा को डीप लेक में सिंक्रोनाइज़ करने की अनुमति देता है। कनेक्टर प्रोटोकॉल डेटा को कॉलमर फ़ॉर्मेट में बदल देता है।


4.1.2 रूपांतरण। डेटा प्रोसेसिंग वर्कफ़्लो को महत्वपूर्ण रूप से तेज़ करने और उपयोगकर्ताओं को चंक लेआउट के बारे में चिंता से मुक्त करने के लिए, डीप लेक समानांतर में पायथन रूपांतरणों को निष्पादित करने का विकल्प प्रदान करता है। रूपांतरण एक डेटासेट लेता है, पहले आयाम में नमूना-वार पुनरावृति करता है, और एक नया डेटासेट आउटपुट करता है। एक उपयोगकर्ता परिभाषित पायथन फ़ंक्शन दो आवश्यक तर्कों 𝑠𝑎𝑚𝑝𝑙𝑒_𝑖𝑛, 𝑠𝑎𝑚𝑝𝑙𝑒_𝑜𝑢𝑡 की अपेक्षा करता है और इसे @𝑑𝑒𝑒𝑝𝑙𝑎𝑘𝑒.𝑐𝑜𝑚𝑝𝑢𝑡𝑒 से सजाया जाता है। एक एकल 𝑠𝑎𝑚𝑝𝑙𝑒_𝑖𝑛 गतिशील रूप से कई 𝑠𝑎𝑚𝑝𝑙𝑒_𝑜𝑢𝑡𝑠 बना सकता है। यह एक-से-एक और एक-से-कई दोनों तरह के रूपांतरणों को सक्षम बनाता है। नया डेटासेट बनाए बिना भी रूपांतरण को उसी स्थान पर लागू किया जा सकता है।


चित्र 4: खाली से लेकर भौतिक दृश्य तक विकसित डीप लेक डेटासेट का संस्करण इतिहास


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

4.2 संस्करण नियंत्रण

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


कमिट : डेटासेट की वर्तमान स्थिति का एक अपरिवर्तनीय स्नैपशॉट बनाता है।


चेकआउट : किसी मौजूदा शाखा/कमिट की जांच करता है या यदि कोई शाखा मौजूद नहीं है तो नई शाखा बनाता है।


Diff : डेटासेट के 2 संस्करणों के बीच अंतर की तुलना करता है।


मर्ज : डेटासेट के दो अलग-अलग संस्करणों को मर्ज करता है, उपयोगकर्ता द्वारा परिभाषित नीति के अनुसार संघर्षों को हल करता है।

4.3 टेंसर का विज़ुअलाइज़ेशन

डेटा विज़ुअलाइज़ेशन ML वर्कफ़्लो का एक महत्वपूर्ण हिस्सा है, खासकर जब डेटा को विश्लेषणात्मक रूप से पार्स करना कठिन होता है। तेज़ और निर्बाध विज़ुअलाइज़ेशन तेज़ डेटा संग्रह, एनोटेशन, गुणवत्ता निरीक्षण और प्रशिक्षण पुनरावृत्तियों की अनुमति देता है। डीप लेक विज़ुअलाइज़र इंजन सीधे स्रोत से बड़े पैमाने पर डेटा को विज़ुअलाइज़ करने के लिए एक वेब इंटरफ़ेस प्रदान करता है। यह विज़ुअलाइज़ेशन के लिए सबसे अच्छा लेआउट निर्धारित करने के लिए टेंसर के htype पर विचार करता है। प्राथमिक टेंसर, जैसे कि छवि, वीडियो और ऑडियो पहले प्रदर्शित होते हैं, जबकि द्वितीयक डेटा और एनोटेशन, जैसे कि टेक्स्ट, class_label, bbox और binary_mask ओवरले होते हैं। विज़ुअलाइज़र डेटा का अनुक्रमिक दृश्य प्रदान करने के लिए अनुक्रम जैसी मेटा प्रकार की जानकारी पर भी विचार करता है, जहाँ अनुक्रमों को चलाया जा सकता है और पूरे डेटा को प्राप्त किए बिना अनुक्रम की विशिष्ट स्थिति पर जा सकते हैं, जो वीडियो या ऑडियो उपयोग के मामलों के लिए प्रासंगिक है। विज़ुअलाइज़र एमएल वर्कफ़्लो में महत्वपूर्ण आवश्यकताओं को संबोधित करता है, जिससे उपयोगकर्ता डेटा को समझ सकते हैं और उसका निवारण कर सकते हैं, इसके विकास को दर्शा सकते हैं, पूर्वानुमानों की तुलना जमीनी सच्चाई से कर सकते हैं या छवियों के कई अनुक्रमों (जैसे, कैमरा छवियां और असमानता मानचित्र) को एक साथ प्रदर्शित कर सकते हैं।

4.4 टेंसर क्वेरी लैंग्वेज

डेटासेट को क्वेरी करना और संतुलित करना डीप लर्निंग वर्कफ़्लो को प्रशिक्षित करने का एक सामान्य चरण है। आमतौर पर, यह डेटासेट को उप-चयन करने के लिए नमूनाकरण रणनीतियों या अलग प्री-प्रोसेसिंग चरणों का उपयोग करके डेटा लोडर के अंदर प्राप्त किया जाता है। दूसरी ओर, पारंपरिक डेटा झीलें बाहरी विश्लेषणात्मक क्वेरी इंजन [66] से जुड़ती हैं और डेटाफ़्रेम को डेटा विज्ञान वर्कफ़्लो में स्ट्रीम करती हैं। प्रारूप और विशिष्ट डेटा तक तेज़ पहुँच के बीच के अंतर को हल करने के लिए, हम C++ में कार्यान्वित एक एम्बेडेड SQL जैसा क्वेरी इंजन प्रदान करते हैं जिसे Tensor Query Language (TQL) कहा जाता है। एक उदाहरण क्वेरी चित्र 5 में दिखाई गई है। जबकि Tensor Query Language को डिज़ाइन करने के लिए Hyrise [37] से SQL पार्सर का विस्तार किया गया है


चित्र 5: एक उदाहरण क्वेरी जो क्रॉप की गई छवियों को बाउंडिंग बॉक्स के अनुसार व्यवस्थित करती है, पूर्वानुमान त्रुटि को उपयोगकर्ता-परिभाषित फ़ंक्शन IOU (इंटरसेक्शन ओवर यूनियन) पर मापा जाता है।


क्वेरी के निष्पादन को बाहरी टेंसर कंप्यूटेशन फ्रेमवर्क जैसे कि PyTorch [58] या XLA [64] को सौंपा जा सकता है और अंतर्निहित त्वरित हार्डवेयर का कुशलतापूर्वक उपयोग किया जा सकता है। मानक SQL सुविधाओं के अलावा, TQL संख्यात्मक गणना को भी लागू करता है। नई क्वेरी भाषा को लागू करने के दो मुख्य कारण हैं। सबसे पहले, पारंपरिक SQL बहुआयामी सरणी संचालन जैसे कि छवि पिक्सेल के माध्य की गणना या किसी विशिष्ट आयाम पर सरणियों को प्रोजेक्ट करने का समर्थन नहीं करता है। TQL पायथन/NumPy-शैली अनुक्रमण, सरणियों की स्लाइसिंग और सरणियों के साथ काम करने के लिए सुविधा कार्यों का एक बड़ा सेट प्रदान करके इसे हल करता है, जिनमें से कई NumPy में समर्थित सामान्य संचालन हैं। दूसरा, TQL डीप लेक की अन्य सुविधाओं जैसे कि संस्करण नियंत्रण, स्ट्रीमिंग इंजन और विज़ुअलाइज़ेशन के साथ क्वेरी के गहन एकीकरण को सक्षम बनाता है। उदाहरण के लिए, TQL विशिष्ट संस्करणों पर या संभावित रूप से डेटासेट के कई संस्करणों में डेटा क्वेरी करने की अनुमति देता है। TQL क्वेरी परिणाम के विज़ुअलाइज़ेशन को अनुकूलित करने या फ़िल्टर की गई स्ट्रीमिंग के लिए डेटा लोडर के साथ सहज एकीकरण के लिए विशिष्ट निर्देशों का भी समर्थन करता है। एम्बेडेड क्वेरी इंजन क्लाइंट के साथ रिमोट कंप्यूट इंस्टेंस पर मॉडल को प्रशिक्षित करते समय या वेब असेंबली पर संकलित इन-ब्राउज़र के दौरान चलता है। TQL मल्टी-डायमेंशनल कॉलम के शीर्ष पर संख्यात्मक गणनाओं के साथ SQL का विस्तार करता है। यह डेटासेट के दृश्य बनाता है, जिन्हें विज़ुअलाइज़ किया जा सकता है या डीप लर्निंग फ्रेमवर्क में सीधे स्ट्रीम किया जा सकता है। हालाँकि, क्वेरी दृश्य विरल हो सकते हैं, जो स्ट्रीमिंग प्रदर्शन को प्रभावित कर सकते हैं।

4.5 भौतिकीकरण

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

4.6 स्ट्रीमिंग डेटालोडर

जैसे-जैसे डेटासेट बड़े होते जाते हैं, दूरस्थ रूप से वितरित स्टोरेज से नेटवर्क पर स्टोर करना और ट्रांसफर करना अपरिहार्य हो जाता है। डेटा स्ट्रीमिंग सभी डेटा को स्थानीय मशीन पर कॉपी किए जाने की प्रतीक्षा किए बिना प्रशिक्षण मॉडल को सक्षम बनाता है। स्ट्रीमिंग डेटालोडर प्रशिक्षण मॉडल को डेटा प्राप्त करना, डीकंप्रेस करना, ट्रांसफ़ॉर्मेशन लागू करना, कॉलेशन और डेटा हैंडओवर सुनिश्चित करता है। डीप लर्निंग डेटालोडर आमतौर पर सिंक्रोनस कंप्यूटेशन से बचने के लिए समानांतर चलने वाली प्रक्रियाओं को फ़ेचिंग और ट्रांसफ़ॉर्मेशन सौंपते हैं। फिर डेटा को इंटर-प्रोसेस कम्युनिकेशन (IPC) के माध्यम से मुख्य कार्यकर्ता को स्थानांतरित किया जाता है जो मेमोरी कॉपी ओवरहेड पेश करता है या कुछ विश्वसनीयता मुद्दों के साथ साझा मेमोरी का उपयोग करता है। इसके विपरीत, डीप लेक डेटालोडर वैश्विक इंटरप्रेटर लॉक से बचने के लिए C++ में प्रति प्रक्रिया अत्यधिक समानांतर फ़ेचिंग और इन-प्लेस डीकंप्रेसिंग को सौंपता है। फिर, यह इन-मेमोरी पॉइंटर को उपयोगकर्ता-परिभाषित ट्रांसफ़ॉर्मेशन फ़ंक्शन में पास करता है और डीप लर्निंग नेटिव मेमोरी लेआउट में प्रशिक्षण लूप में उन्हें उजागर करने से पहले कॉलेट करता है। जब यह केवल नेटिव लाइब्रेरी रूटीन कॉल का उपयोग करता है और तदनुसार पायथन ग्लोबल इंटरप्रेटर लॉक (GIL) जारी करता है, तो ट्रांसफ़ॉर्मेशन समानांतर रूप से निष्पादित होता है। परिणामस्वरूप, हमें मिलता है:


प्रदर्शन : डीप लर्निंग मॉडल को डेटा इतनी तेजी से पहुंचाना कि या तो GPU का पूर्ण उपयोग हो जाए या कंप्यूट द्वारा बाधा उत्पन्न हो।


स्मार्ट शेड्यूलर : सीपीयू-गहन नौकरियों की प्राथमिकता और कम-गहन नौकरियों की प्राथमिकता के बीच गतिशील रूप से अंतर करना।


• कुशल संसाधन आवंटन : मेमोरी ओवरफिलिंग के कारण प्रशिक्षण प्रक्रिया को बाधित होने से बचाने के लिए मेमोरी खपत की भविष्यवाणी करना।


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


[3] स्रोत कोड उपलब्ध: https://github.com/activeloopai/airbyte शाखा @feature/connector/deeplake पर