स्नोफ्लेक और डस्क का उपयोग करके मशीन लर्निंग पाइपलाइन बनाना
इस पोस्ट में, मैं कुछ उपकरण साझा करना चाहता हूं जिन्हें मैं हाल ही में खोज रहा हूं और आपको दिखाता हूं कि मैं उनका उपयोग कैसे करता हूं और उन्होंने मेरे वर्कफ़्लो की दक्षता में सुधार करने में कैसे मदद की। मैं जिन दो के बारे में विशेष रूप से बात करूंगा वे स्नोफ्लेक और डस्क हैं। दो बहुत अलग उपकरण लेकिन वे जो विशेष रूप से एमएल जीवनचक्र के हिस्से के रूप में एक दूसरे के पूरक हैं।
By डैनियल फोली, आँकड़े वाला वैज्ञानिक
परिचय
हाल ही में मैं एक डेटा वैज्ञानिक के रूप में अपने वर्कफ़्लो को बेहतर बनाने के बेहतर तरीके खोजने का प्रयास कर रहा हूँ। मैं अपनी नौकरी के दौरान अपने समय का एक अच्छा हिस्सा मॉडलिंग और ईटीएल बनाने में बिताता हूं। इसका मतलब यह है कि बड़े डेटासेट को विश्वसनीय और कुशलतापूर्वक संभालने के लिए मुझे अधिक से अधिक टूल पर भरोसा करने की आवश्यकता है। मुझे तुरंत एहसास हुआ कि इन डेटासेट में हेरफेर करने के लिए पांडा का उपयोग करना हमेशा एक अच्छा तरीका नहीं होता है और इसने मुझे अन्य विकल्पों पर गौर करने के लिए प्रेरित किया।
इस पोस्ट में, मैं कुछ उपकरण साझा करना चाहता हूं जिन्हें मैं हाल ही में खोज रहा हूं और आपको दिखाता हूं कि मैं उनका उपयोग कैसे करता हूं और उन्होंने मेरे वर्कफ़्लो की दक्षता में सुधार करने में कैसे मदद की। मैं जिन दो के बारे में विशेष रूप से बात करूंगा वे स्नोफ्लेक और डस्क हैं। दो बहुत अलग उपकरण लेकिन वे जो विशेष रूप से एमएल जीवनचक्र के हिस्से के रूप में एक दूसरे के पूरक हैं। मेरी आशा है कि इस पोस्ट को पढ़ने के बाद आपको यह अच्छी तरह से समझ में आ जाएगा कि स्नोफ्लेक और डस्क क्या हैं, उनका प्रभावी ढंग से कैसे उपयोग किया जा सकता है और आप अपने स्वयं के उपयोग के मामलों के साथ आगे बढ़ने में सक्षम होंगे।
अधिक विशेष रूप से, मैं आपको दिखाना चाहता हूं कि आप मशीन लर्निंग कार्य के लिए प्रशिक्षण डेटा उत्पन्न करने के लिए स्नोफ्लेक और पायथन का उपयोग करके ईटीएल पाइपलाइन कैसे बना सकते हैं। फिर मैं डस्क और का परिचय देना चाहता हूं शनि बादल और आपको दिखाएगा कि आप एमएल प्रशिक्षण प्रक्रिया को वास्तव में तेज़ करने के लिए क्लाउड में समानांतर प्रसंस्करण का लाभ कैसे उठा सकते हैं ताकि आप एक डेटा वैज्ञानिक के रूप में अपनी उत्पादकता बढ़ा सकें।
स्नोफ्लेक और पायथन में ईटीएल का निर्माण
इससे पहले कि हम कोडिंग में उतरें, मैं बेहतर ढंग से संक्षेप में बता दूं कि स्नोफ्लेक क्या है। यह एक ऐसा प्रश्न है जो मैंने हाल ही में तब पूछा था जब मेरी टीम ने इसका उपयोग शुरू करने का निर्णय लिया था। उच्च स्तर पर, यह क्लाउड में एक डेटा वेयरहाउस है। कुछ देर तक इसके साथ खेलने के बाद मुझे एहसास हुआ कि यह कितना शक्तिशाली था। मुझे लगता है कि मेरे लिए सबसे उपयोगी सुविधाओं में से एक वर्चुअल वेयरहाउस है जिसका आप उपयोग कर सकते हैं। एक वर्चुअल वेयरहाउस आपको समान डेटा तक पहुंच प्रदान करता है लेकिन अन्य वर्चुअल वेयरहाउस से पूरी तरह से स्वतंत्र होता है इसलिए गणना संसाधनों को टीमों के बीच साझा नहीं किया जाता है। यह बहुत उपयोगी साबित हुआ है क्योंकि यह दिन भर में अन्य उपयोगकर्ताओं द्वारा क्वेरी निष्पादित करने के कारण होने वाली प्रदर्शन समस्याओं की किसी भी संभावना को दूर करता है। इसके परिणामस्वरूप निराशा कम हुई और प्रश्नों के इंतजार में समय बर्बाद हुआ।
चूँकि हम स्नोफ्लेक का उपयोग करने जा रहे हैं, मैं संक्षेप में बताऊंगा कि आप इसे कैसे स्थापित कर सकते हैं और स्वयं इसके साथ प्रयोग शुरू कर सकते हैं। हमें निम्नलिखित कार्य करने की आवश्यकता है:
- एक स्नोफ्लेक खाता स्थापित करें
- स्नोफ्लेक में हमारा डेटा प्राप्त करें
- SQL और स्नोफ्लेक UI का उपयोग करके हमारी क्वेरीज़ लिखें और उनका परीक्षण करें
- एक पायथन क्लास लिखें जो मॉडलिंग के लिए हमारा अंतिम डेटासेट तैयार करने के लिए हमारे प्रश्नों को निष्पादित कर सके
एक खाता स्थापित करना उतना ही आसान है जितना कि नि:शुल्क परीक्षण के लिए साइन अप करना वेबसाइट . एक बार जब आप ऐसा कर लें तो आप स्नोएसक्यूएल सीएलआई डाउनलोड कर सकते हैं यहाँ उत्पन्न करें. इससे स्नोफ्लेक में डेटा जोड़ना आसान हो जाएगा। इन चरणों का पालन करने के बाद हम अपने क्रेडेंशियल्स और कमांड लाइन का उपयोग करके स्नोफ्लेक से जुड़ने का प्रयास कर सकते हैं।
snowsql -a <account_name> -u <user_name>
जब आप स्नोफ्लेक यूआई में लॉग इन करते हैं तो आप यूआरएल में अपने खाते का नाम पा सकते हैं। इसे कुछ इस तरह दिखना चाहिए: xxxxx.europe-west2.gcp. ठीक है, चलिए अगले चरण पर आगे बढ़ें और अपना डेटा स्नोफ्लेक में प्राप्त करें। यहां कुछ चरण हैं जिनका हमें पालन करने की आवश्यकता है अर्थात्:
- हमारा वर्चुअल वेयरहाउस बनाएं
- एक डेटाबेस बनाएँ
- हमारी तालिकाएँ परिभाषित करें और बनाएँ
- हमारी CSV फ़ाइलों के लिए एक स्टेजिंग तालिका बनाएँ
- डेटा को हमारी तालिकाओं में कॉपी करना
सौभाग्य से यह बहुत कठिन नहीं है और हम इसे पूरी तरह से स्नोस्क्ल सीएलआई का उपयोग करके कर सकते हैं। इस प्रोजेक्ट के लिए, मैं अपनी इच्छा से छोटे डेटासेट का उपयोग करूंगा, लेकिन दुर्भाग्य से, मैं अपनी कंपनी के किसी भी डेटा का उपयोग नहीं कर सकता और बड़े उपयुक्त डेटासेट को ऑनलाइन ढूंढना काफी मुश्किल हो सकता है। हालाँकि मुझे डनहुम्बी से कुछ लेन-देन डेटा मिला जो मुफ़्त में उपलब्ध है Kaggle. केवल शुरुआत के लिए, मैं इस डेटा का उपयोग करके एक बहुत बड़ा सिंथेटिक डेटासेट बनाता हूं ताकि यह जांचा जा सके कि स्केलेरन की तुलना में डैस्क चुनौती को कितनी अच्छी तरह संभालता है।
सबसे पहले, हमें स्नोफ्लेक यूआई में निम्नलिखित कमांड का उपयोग करके एक वर्चुअल वेयरहाउस और एक डेटाबेस स्थापित करने की आवश्यकता है।
बनाना or की जगह वेयरहाउस एनालिटिक्स_व्हा साथ में
गोदाम_आकार = "X-छोटा"
ऑटो_सस्पेंड = 180
स्वत: पुनः प्रारंभ = सत्य
प्रारंभ में_निलंबित = सत्य;
बनाना or की जगह डेटाबेस डनहुम्बी;
हमारे डेटा में 6 सीएसवी हैं जिन्हें हम 6 तालिकाओं में परिवर्तित करेंगे। मैं डेटासेट पर अधिक समय खर्च नहीं करूंगा क्योंकि यह पोस्ट डेटा की व्याख्या करने के बजाय स्नोफ्लेक और डस्क का उपयोग करने के बारे में अधिक है।
नीचे वे कमांड हैं जिनका उपयोग हम अपनी तालिकाएँ बनाने के लिए कर सकते हैं। आपको पहले से यह जानना होगा कि आप किस कॉलम और डेटा प्रकार के साथ काम करेंगे।
create or replace table campaign_desc ( description string, campaign number,
start_day number,
end_day number ); create or replace table campaign_table ( description string, Household_key number, campaign number ); create or replace table coupon ( COUPON_UPC number, product_id number, campaign number ); create or replace table coupon_redempt ( household_key number, day number, coupon_upc number, campaign number ); create or replace table transactions ( household_key number, BASKET_ID number, day number, product_id number, quantity number, sales_value number, store_id number, retail_disc decimal, trans_time number, week_no number, coupon_disc decimal, coupon_match_disc decimal ); create or replace table demographic_data ( age_dec string, marital_status_code string, income_desc string, homeowner_desc string, hh_comp_desc string, household_size_desc string, kid_category_desc string, Household_key number);
अब जब हमने अपनी तालिकाएँ बना ली हैं, तो हम यह सोचना शुरू कर सकते हैं कि उनमें डेटा कैसे प्राप्त किया जाए। इसके लिए हमें अपनी CSV फाइलों को स्टेज करना होगा। यह मूल रूप से सिर्फ एक मध्यस्थ कदम है इसलिए स्नोफ्लेक सीधे हमारे मंच से फाइलों को हमारी टेबल में लोड कर सकता है। हम उपयोग कर सकते हैं डाल स्थानीय फ़ाइलों को हमारे चरण में रखने का आदेश और फिर इसमें कॉपी करें कमांड स्नोफ्लेक को यह निर्देश देने के लिए कि यह डेटा कहाँ रखा जाए।
use database dunnhumby; create or replace stage dunnhumby_stage; PUT file://campaigns_table.csv @dunnhumby.public.dunnhumby_stage; PUT file://campaigns_desc.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon_d=redempt.csv @dunnhumby.public.dunnhumby_stage; PUT file://transaction_data.csv @dunnhumby.public.dunnhumby_stage; PUT file://demographics.csv @dunnhumby.public.dunnhumby_stage;
त्वरित जांच के रूप में, आप यह जांचने के लिए यह कमांड चला सकते हैं कि स्टेजिंग क्षेत्र में क्या है।
ls @dunnhumby.public.dunnhumby_stage;
अब हमें नीचे दिए गए प्रश्नों का उपयोग करके डेटा को अपनी टेबल में कॉपी करना होगा। स्नोफ्लेक में लॉग इन करने के बाद आप इन्हें या तो स्नोफ्लेक यूआई में या कमांड लाइन में निष्पादित कर सकते हैं।
copy into campaign_table from @dunnhumby.public.dunnhumby_stage/campaigns_table.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into campaign_desc from @dunnhumby.public.dunnhumby_stage/campaign_desc.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon from @dunnhumby.public.dunnhumby_stage/coupon.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon_redempt from @dunnhumby.public.dunnhumby_stage/coupon_redempt.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into transactions from @dunnhumby.public.dunnhumby_stage/transaction_data.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into demographic_data from @dunnhumby.public.dunnhumby_stage/demographics.csv.gz file_format = ( type = csv skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’);
ठीक है, बहुत अच्छा, सौभाग्य से हमारा डेटा पहले प्रयास में हमारी तालिकाओं में है। ओह, काश यह इतना सरल होता, तो इस पूरी प्रक्रिया को सही करने में मुझे कुछ प्रयास करने पड़े (चीजों की गलत वर्तनी से सावधान रहें)। उम्मीद है, आप इसका अनुसरण कर सकेंगे और आगे बढ़ने में सक्षम होंगे। हम दिलचस्प चीजों के करीब पहुंच रहे हैं लेकिन उपरोक्त चरण प्रक्रिया का एक महत्वपूर्ण हिस्सा हैं इसलिए सुनिश्चित करें कि आप इनमें से प्रत्येक चरण को समझते हैं।
SQL में हमारी पाइपलाइन लिखना
इस अगले चरण में, हम अपने लक्ष्य, अपनी विशेषताओं को उत्पन्न करने के लिए प्रश्न लिखेंगे और फिर अंत में एक प्रशिक्षण डेटा सेट तैयार करेंगे। मॉडलिंग के लिए डेटासेट बनाने का एक तरीका इस डेटा को मेमोरी में पढ़ना और नई सुविधाएँ बनाने और सभी डेटा फ़्रेमों को एक साथ जोड़ने के लिए पांडा का उपयोग करना है। यह आमतौर पर वही दृष्टिकोण है जो आप कागल और अन्य ऑनलाइन ट्यूटोरियल में देखते हैं। इसके साथ समस्या यह है कि यह बहुत कुशल नहीं है, खासकर जब आप किसी उचित आकार के डेटासेट के साथ काम कर रहे हों। इस कारण से, स्नोफ्लेक जैसी किसी चीज़ को भारी सामान उठाने के लिए आउटसोर्स करना एक बेहतर विचार है जो बड़े पैमाने पर डेटासेट को बहुत अच्छी तरह से संभालता है और संभवतः आपका काफी समय बचाएगा। मैं यहां हमारे डेटासेट की विशिष्टताओं में गोता लगाने में ज्यादा समय बर्बाद नहीं करूंगा क्योंकि मैं जो दिखाने की कोशिश कर रहा हूं उसके लिए यह वास्तव में महत्वपूर्ण नहीं है। हालाँकि, सामान्य तौर पर, आप मॉडलिंग शुरू करने से पहले अपने डेटा को खोजने और समझने में काफी समय बिताना चाहेंगे। इन प्रश्नों का लक्ष्य डेटा को प्रीप्रोसेस करना और कुछ सरल सुविधाएँ बनाना होगा जिन्हें हम बाद में अपने मॉडलों में उपयोग कर सकते हैं।
लक्ष्य परिभाषा
जाहिर है, पर्यवेक्षित मशीन लर्निंग का एक महत्वपूर्ण घटक भविष्यवाणी करने के लिए उचित लक्ष्य को परिभाषित करना है। हमारे उपयोग के मामले में, हम यह गणना करके मंथन की भविष्यवाणी करेंगे कि उपयोगकर्ता कटऑफ सप्ताह के बाद दो सप्ताह के भीतर दूसरी यात्रा करता है या नहीं। 2 सप्ताह का चुनाव काफी मनमाना है और यह उस विशिष्ट समस्या पर निर्भर करेगा जिसे हम हल करने का प्रयास कर रहे हैं लेकिन आइए मान लें कि यह इस परियोजना के लिए ठीक है। सामान्य तौर पर, आप मंथन की उपयुक्त परिभाषा पर पहुंचने के लिए विज़िट के बीच अंतराल में वितरण को समझने के लिए अपने ग्राहकों का सावधानीपूर्वक विश्लेषण करना चाहेंगे।
यहां मुख्य विचार यह है कि प्रत्येक तालिका के लिए हम चाहते हैं कि प्रत्येक घरेलू_कुंजी में एक पंक्ति हो जिसमें हमारी प्रत्येक सुविधा के लिए मान हों।
अभियान सुविधाएँ
लेन-देन सुविधाएँ
नीचे हम औसत, अधिकतम और मानक विचलन जैसे समग्र आंकड़ों के आधार पर कुछ सरल मीट्रिक बनाते हैं।
जनसांख्यिकीय विशेषताएं
इस डेटासेट में बहुत सारा डेटा गायब है इसलिए मैंने यहां इंप्यूटेशन का उपयोग करने का निर्णय लिया। गायब डेटा को हटाने से लेकर उन्नत प्रतिरूपण विधियों तक, गायब डेटा के लिए बहुत सारी तकनीकें मौजूद हैं। मैंने यहां अपने लिए जीवन को आसान बना लिया है और लुप्त मूल्यों को मोड से बदल दिया है। मैं आवश्यक रूप से इस दृष्टिकोण को सामान्य रूप से अपनाने की अनुशंसा नहीं करूंगा क्योंकि यह समझना कि यह डेटा गायब क्यों है, इससे कैसे निपटना है यह तय करने में वास्तव में महत्वपूर्ण है, लेकिन इस उदाहरण के प्रयोजनों के लिए, मैं आगे बढ़ूंगा और आसान दृष्टिकोण अपनाऊंगा। हम पहले अपनी प्रत्येक सुविधा के लिए मोड की गणना करते हैं और फिर डेटा गायब होने पर प्रत्येक पंक्ति को मोड से बदलने के लिए कोलेसे का उपयोग करते हैं।
प्रशिक्षण जानकारी
अंत में, हम अपनी मुख्य तालिकाओं को एक साथ जोड़कर अपने प्रशिक्षण डेटा के लिए एक क्वेरी बनाते हैं और हमारे लक्ष्य, हमारे अभियान, लेनदेन और जनसांख्यिकीय विशेषताओं वाली एक तालिका के साथ समाप्त होते हैं जिसका उपयोग हम एक मॉडल बनाने के लिए कर सकते हैं।
संक्षेप में कहें तो, स्नोफ्लेक की विशेषताओं और बारीकियों के बारे में अधिक जानने में रुचि रखने वालों के लिए मैं निम्नलिखित पुस्तक की सिफारिश करूंगा: स्नोफ्लेक कुकबुक. मैंने इस पुस्तक को पढ़ना शुरू कर दिया है और यह स्नोफ्लेक का उपयोग करने के बारे में वास्तव में उपयोगी जानकारी से भरी है और इसमें मेरे द्वारा दिए गए विवरण से कहीं अधिक विस्तार से बताया गया है।
ईटीएल के लिए पायथन कोड
इस ईटीएल के लिए हमें जिस अंतिम चीज़ की आवश्यकता है, वह इसे निष्पादित करने के लिए एक स्क्रिप्ट लिखना है। अब, यह वास्तव में केवल तभी आवश्यक है जब आप नियमित रूप से इस तरह ईटीएल चलाने की योजना बनाते हैं लेकिन यह अच्छा अभ्यास है और जरूरत पड़ने पर ईटीएल चलाना बहुत आसान हो जाता है।
आइए हमारे EtlTraining वर्ग के मुख्य घटकों पर संक्षेप में चर्चा करें। हमारी कक्षा एक इनपुट लेती है जो कटऑफ सप्ताह है। यह हमारे डेटासेट में डेटा को परिभाषित करने के तरीके के कारण है, लेकिन आमतौर पर, यह एक दिनांक प्रारूप में होगा जो उस कटऑफ तिथि से मेल खाता है जिसे हम प्रशिक्षण डेटा उत्पन्न करने के लिए चुनना चाहते हैं।
हम अपने प्रश्नों की एक सूची आरंभ करते हैं ताकि हम इनके माध्यम से आसानी से लूप कर सकें और उन्हें निष्पादित कर सकें। हम अपने मापदंडों से युक्त एक शब्दकोश भी बनाते हैं जिसे हम अपने स्नोफ्लेक कनेक्शन में पास करते हैं। यहां हम पर्यावरण चर का उपयोग करते हैं जिसे हम सैटर्न क्लाउड में सेट करते हैं। यहाँ यह कैसे करना है इस पर एक मार्गदर्शिका है। स्नोफ्लेक से कनेक्ट करना बहुत मुश्किल नहीं है, हमें बस स्नोफ्लेक कनेक्टर का उपयोग करना है और हमारे क्रेडेंशियल्स के शब्दकोश में पास करना है। हम इसे स्नोफ्लेक कनेक्ट विधि में लागू करते हैं और इस कनेक्शन को एक विशेषता के रूप में वापस करते हैं।
इन क्वेरीज़ को चलाना थोड़ा आसान बनाने के लिए मैं प्रत्येक क्वेरी को ml_query_pipeline.py फ़ाइल में एक पायथन स्ट्रिंग वेरिएबल के रूप में सहेजता हूँ। Execute_etl विधि बिल्कुल वही करती है जो वह टिन पर कहती है। हम प्रत्येक क्वेरी के माध्यम से लूप करते हैं, इसे प्रारूपित करते हैं, इसे निष्पादित करते हैं और स्नोफ्लेक कनेक्शन को बंद करके समाप्त करते हैं।
इस ETL को चलाने के लिए हम बस नीचे दिए गए कमांड को टर्मिनल में टाइप कर सकते हैं। (जहाँ ml_pipeline उपरोक्त स्क्रिप्ट का नाम है।)
python -m ml_pipeline -w 102 -j ‘train’
संक्षेप में कहें तो, आप शायद नियमित अंतराल पर इस तरह ईटीएल चलाना चाहेंगे। उदाहरण के लिए, यदि आप दैनिक भविष्यवाणियां करना चाहते हैं तो आपको अपने मॉडल को पास करने के लिए प्रत्येक दिन इस तरह का एक डेटासेट तैयार करना होगा ताकि आप पहचान सकें कि आपके कौन से ग्राहक मंथन की संभावना रखते हैं। मैं यहां इसके बारे में विस्तार से नहीं बताऊंगा लेकिन अपने काम में, हम अपने ईटीएल को व्यवस्थित करने के लिए एयरफ्लो का उपयोग करते हैं, इसलिए यदि आप रुचि रखते हैं तो मैं इसे जांचने की सलाह दूंगा। दरअसल, मैंने हाल ही में एक किताब खरीदी है'अपाचे एयरफ़्लो के साथ डेटा पाइपलाइन' जो मुझे लगता है कि बहुत अच्छा है और वास्तव में एयरफ्लो का उपयोग करने के बारे में कुछ ठोस उदाहरण और सलाह देता है।
डस्क और मॉडलिंग
अब जब हमने अपनी डेटा पाइपलाइन बना ली है, तो हम मॉडलिंग के बारे में सोचना शुरू कर सकते हैं। इस पोस्ट के लिए मेरा दूसरा मुख्य लक्ष्य एमएल विकास प्रक्रिया के हिस्से के रूप में डैस्क का उपयोग करने के फायदों को उजागर करना और आप लोगों को यह दिखाना है कि इसका उपयोग करना कितना आसान है।
प्रोजेक्ट के इस भाग के लिए, मैंने भी उपयोग किया शनि बादल जो वास्तव में एक अच्छा टूल है जो मुझे हाल ही में मिला जो हमें क्लाउड में कंप्यूटरों के समूह में डैस्क की शक्ति का उपयोग करने की अनुमति देता है। मेरे लिए सैटर्न का उपयोग करने का मुख्य लाभ यह है कि अपने काम को साझा करना वास्तव में आसान है, जब भी आपको इसकी आवश्यकता हो तो अपनी गणना को बढ़ाना बहुत आसान है और इसमें एक निःशुल्क स्तर का विकल्प है। सामान्य तौर पर मॉडल विकास डस्क के लिए वास्तव में एक अच्छा उपयोग मामला है क्योंकि हम आम तौर पर विभिन्न मॉडलों के एक समूह को प्रशिक्षित करना चाहते हैं और देखना चाहते हैं कि सबसे अच्छा क्या काम करता है। हम इसे जितनी तेजी से कर सकें उतना बेहतर होगा क्योंकि हमारे पास मॉडल विकास के अन्य महत्वपूर्ण पहलुओं पर ध्यान केंद्रित करने के लिए अधिक समय होगा। स्नोफ्लेक के समान आपको बस साइन अप करना होगा यहाँ उत्पन्न करें और आप बहुत जल्दी ज्यूपिटर लैब का एक उदाहरण तैयार कर सकते हैं और स्वयं इसका प्रयोग शुरू कर सकते हैं।
अब, मुझे इस बिंदु पर एहसास हुआ कि मैंने कुछ बार डस्क का उल्लेख किया है लेकिन वास्तव में कभी नहीं बताया कि यह क्या है। तो आइए मैं आपको डस्क का एक उच्च-स्तरीय अवलोकन देने के लिए थोड़ा समय लेता हूं और मुझे क्यों लगता है कि यह अद्भुत है। बहुत सरलता से कहें तो, Dashk एक पायथन लाइब्रेरी है जो आपको बहुत बड़े डेटासेट पर प्रक्रिया करने और संचालन करने की अनुमति देने के लिए समानांतर कंप्यूटिंग का लाभ उठाती है। और, सबसे अच्छी बात यह है कि, यदि आप पहले से ही पायथन से परिचित हैं, तो डस्क बहुत सीधा होना चाहिए क्योंकि वाक्यविन्यास बहुत समान है।
नीचे दिया गया ग्राफ़ Dashk के मुख्य घटकों पर प्रकाश डालता है।
स्रोत: डस्क दस्तावेज़ीकरण
संग्रह हमें कार्यों का एक ग्राफ़ बनाने की अनुमति देते हैं जिन्हें बाद में कई कंप्यूटरों पर निष्पादित किया जा सकता है। इनमें से कुछ डेटा संरचनाएं शायद बहुत परिचित लगती हैं जैसे कि ऐरे और डेटा फ़्रेम और वे उसी के समान हैं जो आपको पायथन में मिलेगा लेकिन कुछ महत्वपूर्ण अंतरों के साथ। उदाहरण के लिए, आप डस्क डेटा फ्रेम को पांडा डेटा फ्रेम के एक समूह के रूप में सोच सकते हैं जो इस तरह से बनाया गया है जो हमें समानांतर में संचालन करने की अनुमति देता है।
संग्रह से आगे बढ़ते हुए हमारे पास शेड्यूलर है। एक बार जब हम कार्य ग्राफ़ बना लेते हैं तो शेड्यूलर हमारे लिए बाकी काम संभाल लेता है। यह वर्कफ़्लो का प्रबंधन करता है और इन कार्यों को या तो एक मशीन पर भेजता है या उन्हें क्लस्टर में वितरित करता है। उम्मीद है, इससे आपको डैस्क कैसे काम करता है इसका संक्षिप्त विवरण मिल गया होगा। अधिक जानकारी के लिए, मेरा सुझाव है कि इसकी जाँच करें दस्तावेज़ीकरण या यह किताब. इस विषय पर गहराई से विचार करने के लिए दोनों बहुत अच्छे संसाधन हैं।
मॉडलिंग के लिए पायथन कोड
मॉडलिंग करते समय, मेरे पास जाने-माने एल्गोरिदम की एक छोटी संख्या होती है जिसे मैं हमेशा पहले आज़माउंगा। यह आम तौर पर मुझे एक अच्छा विचार देगा कि मेरे पास विशिष्ट समस्या के अनुकूल क्या हो सकता है। ये मॉडल हैं लॉजिस्टिक रिग्रेशन, रैंडम फॉरेस्ट और ग्रेडिएंटबूस्टिंग। मेरे अनुभव में, सारणीबद्ध डेटा के साथ काम करते समय ये एल्गोरिदम आमतौर पर आपको बहुत अच्छे परिणाम देंगे। नीचे हम इन 3 मॉडलों का उपयोग करके एक स्केलेर मॉडलिंग पाइपलाइन बनाते हैं। हमारे द्वारा यहां उपयोग किए जाने वाले सटीक मॉडल वास्तव में महत्वपूर्ण नहीं हैं क्योंकि पाइपलाइन को किसी भी स्केलेर वर्गीकरण मॉडल के लिए काम करना चाहिए, यह सिर्फ मेरी प्राथमिकता है।
बिना किसी देरी के, आइए कोड के बारे में जानें। सौभाग्य से हमने अपनी अधिकांश प्रीप्रोसेसिंग स्नोफ्लेक को आउटसोर्स कर दी है, इसलिए हमें यहां अपने प्रशिक्षण डेटा के साथ बहुत अधिक गड़बड़ नहीं करनी पड़ेगी, लेकिन हम स्केलेर पाइपलाइनों का उपयोग करके कुछ अतिरिक्त कदम जोड़ देंगे।
नीचे दिया गया पहला कोड स्निपेट स्केलेरन का उपयोग करते समय पाइपलाइन दिखाता है। ध्यान दें कि हमारा डेटासेट एक सादा पुराना पांडा डेटा फ्रेम है और हमारे प्रीप्रोसेसिंग चरण स्केलेरन विधियों का उपयोग करके किए जाते हैं। यहां कुछ भी असाधारण नहीं चल रहा है। हम अपने स्नोफ्लेक ईटीएल द्वारा निर्मित तालिका से अपना डेटा पढ़ रहे हैं और इसे स्केलेर पाइपलाइन में भेज रहे हैं। सामान्य मॉडलिंग चरण यहां लागू होते हैं। हम डेटासेट को ट्रेन और परीक्षण में विभाजित करते हैं और कुछ प्रीप्रोसेसिंग करते हैं, अर्थात् माध्यिका का उपयोग करके लापता मानों को आरोपित करते हैं, डेटा को स्केल करते हैं और हमारे श्रेणीबद्ध डेटा को वन-हॉट एनकोड करते हैं। मैं स्केलेर पाइपलाइनों का बहुत बड़ा प्रशंसक हूं और आजकल जब भी मैं मॉडल विकसित करता हूं तो मूल रूप से उनका उपयोग करता हूं, वे वास्तव में स्वच्छ और संक्षिप्त कोड की सुविधा प्रदान करते हैं।
यह पाइपलाइन लगभग 2 मिलियन पंक्तियों वाले डेटासेट पर कैसा प्रदर्शन करती है? खैर, इस मॉडल को बिना किसी हाइपरपैरामीटर ट्यूनिंग के चलाने में लगभग 34 मिनट लगते हैं। आउच, थोड़ा धीमा। आप कल्पना कर सकते हैं कि यदि हम किसी भी प्रकार की हाइपरपैरामीटर ट्यूनिंग करना चाहें तो इसमें कितना अधिक समय लगेगा। ठीक है, इसलिए यह आदर्श नहीं है, लेकिन आइए देखें कि डैस्क इस चुनौती को कैसे संभालता है।
डस्क एमएल पायथन कोड
यहां हमारा लक्ष्य यह देखना है कि क्या हम उपरोक्त स्केलेरन पाइपलाइन को हरा सकते हैं, स्पॉइलर अलर्ट, हम निश्चित रूप से कर सकते हैं। डैस्क के बारे में अच्छी बात यह है कि जब आप पहले से ही अजगर से परिचित हैं तो प्रवेश की बाधा काफी कम है। हम केवल कुछ बदलावों के साथ इस पाइपलाइन को Dashk में चालू कर सकते हैं।
पहला बदलाव जो आप शायद नोटिस करेंगे वह यह है कि हमारे पास कुछ अलग आयात हैं। इस पाइपलाइन और पिछली पाइपलाइन के बीच एक महत्वपूर्ण अंतर यह है कि हम अपने मॉडल को प्रशिक्षित करने के लिए पांडा डेटा फ्रेम के बजाय डस्क डेटा फ्रेम का उपयोग करेंगे। आप डैस्क डेटा फ्रेम को पांडा डेटा फ्रेम के एक समूह के रूप में सोच सकते हैं जहां हम एक ही समय में प्रत्येक पर गणना कर सकते हैं। यह डस्क की समानता का मूल है और यही इस पाइपलाइन के लिए प्रशिक्षण समय को कम करने वाला है।
ध्यान दें हम उपयोग करते हैं @ dask.delayed हमारे लिए एक सज्जाकार के रूप में लोड_ट्रेनिंग_डेटा समारोह। यह डस्क को हमारे लिए इस फ़ंक्शन को समानांतर करने का निर्देश देता है।
हम डैस्क से कुछ प्रीप्रोसेसिंग और पाइपलाइन तरीकों को भी आयात करने जा रहे हैं और सबसे महत्वपूर्ण बात यह है कि हमें सैटर्नक्लस्टर को आयात करने की आवश्यकता होगी जो हमें अपने मॉडलों के प्रशिक्षण के लिए एक क्लस्टर बनाने की अनुमति देगा। इस कोड के साथ एक और महत्वपूर्ण अंतर यह है कि हम इसका उपयोग करते हैं अंधेरा.रहना हमारे ट्रेन परीक्षण विभाजन के बाद। इस बिंदु से पहले, डस्क के आलसी मूल्यांकन के कारण वास्तव में हमारे किसी भी कार्य की गणना नहीं की गई है। एक बार जब हम पर्सिस्ट विधि का उपयोग करते हैं, तो हम डस्क को अपना डेटा श्रमिकों को भेजने और इस बिंदु तक हमारे द्वारा बनाए गए कार्यों को निष्पादित करने और इन ऑब्जेक्ट्स को क्लस्टर पर छोड़ने के लिए कह रहे हैं।
अंत में, हम विलंबित पद्धति का उपयोग करके अपने मॉडलों को प्रशिक्षित करते हैं। फिर, यह हमें आलसी तरीके से अपनी पाइपलाइन बनाने में सक्षम बनाता है। जब तक हम इस कोड तक नहीं पहुँचते, पाइपलाइन निष्पादित नहीं होती:
fit_pipelines = dask.compute(*pipelines_)
इस बार इस पाइपलाइन को ठीक उसी डेटासेट पर चलाने में हमें केवल 10 मिनट का समय लगा। यह 3.4 के कारक की गति है, बहुत जर्जर नहीं। अब, यदि हम चाहें, तो हम शनि में एक बटन के स्पर्श से अपने कंप्यूटिंग संसाधनों को बढ़ाकर इसे और भी तेज़ कर सकते हैं।
हमारी पाइपलाइन तैनात करना
मैंने पहले उल्लेख किया था कि आप शायद एयरफ़्लो जैसी किसी चीज़ का उपयोग करके इस तरह की पाइपलाइन को नियमित रूप से चलाना चाहेंगे। ऐसा ही होता है कि यदि आप एयरफ्लो के लिए सब कुछ स्थापित करने की प्रारंभिक परेशानी नहीं चाहते हैं तो सैटर्न क्लाउड जॉब्स के साथ एक सरल विकल्प प्रदान करता है। नौकरियां हमें अपने कोड को पैकेज करने और उसे नियमित अंतराल पर या आवश्यकतानुसार चलाने की अनुमति देती हैं। आपको बस किसी मौजूदा प्रोजेक्ट पर जाना है और क्रिएट जॉब पर क्लिक करना है। एक बार जब हम ऐसा करते हैं, तो यह निम्नलिखित जैसा दिखना चाहिए:
स्रोत: शनि ग्रह
यहां से, हमें बस यह सुनिश्चित करना है कि ऊपर हमारी पायथन फ़ाइलें छवि में निर्देशिका में हैं और हम ऊपर अपना पायथन कमांड दर्ज कर सकते हैं
python -m ml_pipeline -w 102 -j 'train'
यदि हम चाहें तो ईटीएल को दैनिक आधार पर चलाने के लिए हम क्रॉन सिंटैक्स का उपयोग करके एक शेड्यूल भी सेट कर सकते हैं। रुचि रखने वालों के लिए, यहां एक है ट्यूटोरियल यह सभी बारीकियों में जाता है।
निष्कर्ष और निष्कर्ष
खैर, हम इस बिंदु पर अपने प्रोजेक्ट के अंत तक पहुँच चुके हैं। अब जाहिर तौर पर मैंने एमएल विकास चक्र के कुछ प्रमुख हिस्सों को छोड़ दिया है जैसे कि हाइपरपैरामीटर ट्यूनिंग और हमारे मॉडल को तैनात करना, लेकिन शायद मैं इसे किसी और दिन के लिए छोड़ दूंगा। क्या मुझे लगता है कि आपको डस्क आज़माना चाहिए? मैं किसी भी तरह से कोई विशेषज्ञ नहीं हूं, लेकिन अब तक मैंने जो देखा है, उससे यह निश्चित रूप से वास्तव में उपयोगी लगता है और मैं इसके साथ और अधिक प्रयोग करने और एक डेटा वैज्ञानिक के रूप में इसे अपने दैनिक कार्य में शामिल करने के लिए और अधिक अवसर खोजने के लिए बहुत उत्साहित हूं। उम्मीद है, आपको यह उपयोगी लगा होगा और आप भी स्नोफ्लेक और डस्क के कुछ फायदे देख सकेंगे और आप स्वयं उनके साथ प्रयोग करना शुरू कर देंगे।
उपयुक्त संसाधन चुनें
- अपाचे एयरफ़्लो के साथ डेटा पाइपलाइन
- स्नोफ्लेक कुकबुक
- पायथन और डस्क के साथ स्केल पर डेटा साइंस
- कौरसेरा: डेटा साइंस के लिए एसक्यूएल
मेरी कुछ अन्य पोस्टें आपको दिलचस्प लग सकती हैं
आइए एक स्ट्रीमिंग डेटा पाइपलाइन बनाएं
समय श्रृंखला पूर्वानुमान के लिए एक बायेसियन दृष्टिकोण
नोट: इस पोस्ट के कुछ लिंक सहबद्ध लिंक हैं।
जैव: डैनियल फोली एक पूर्व अर्थशास्त्री से डेटा वैज्ञानिक बने मोबाइल गेमिंग उद्योग में कार्यरत हैं।
मूल। अनुमति के साथ पुनर्प्रकाशित।
संबंधित:
स्रोत: https://www.kdnuggets.com/2021/07/building-machine-learning-pipelines-snowflake-dask.html
- "
- &
- 102
- 2021
- पहुँच
- लेखा
- अतिरिक्त
- लाभ
- सलाह
- सहबद्ध
- एल्गोरिदम
- सब
- वीरांगना
- अपाचे
- क्षेत्र
- चारों ओर
- स्वत:
- BEST
- बिट
- निर्माण
- इमारत
- गुच्छा
- अभियान
- मामलों
- के कारण होता
- चुनौती
- परिवर्तन
- जाँच
- वर्गीकरण
- करीब
- बादल
- कोड
- कोडन
- अंग
- गणना करना
- कंप्यूटर्स
- कंप्यूटिंग
- Coursera
- बनाना
- साख
- ग्राहक
- तिथि
- डेटा विज्ञान
- आँकड़े वाला वैज्ञानिक
- डेटा सेट
- डाटा गोदाम
- डाटाबेस
- दिन
- सौदा
- ध्यान लगा के पढ़ना या सीखना
- जनसांख्यिकीय
- विस्तार
- विकसित करना
- विकास
- डीआईडी
- निदेशक
- दक्षता
- इंजीनियर्स
- वातावरण
- प्रयोग
- विशेषताएं
- अंत में
- अंत
- प्रथम
- फोकस
- का पालन करें
- प्रारूप
- मुक्त
- पूर्ण
- समारोह
- जुआ
- गेमिंग उद्योग
- सामान्य जानकारी
- अच्छा
- GPUs
- महान
- गाइड
- यहाँ उत्पन्न करें
- हाई
- हाइलाइट
- कैसे
- How To
- HTTPS
- विशाल
- विचार
- पहचान करना
- की छवि
- बढ़ना
- उद्योग
- पता
- करें-
- मुद्दों
- IT
- काम
- नौकरियां
- में शामिल होने
- छलांग
- कुंजी
- बड़ा
- जानें
- सीख रहा हूँ
- स्तर
- पुस्तकालय
- लाइन
- लिंक्डइन
- सूची
- भार
- स्थानीय
- लंबा
- यंत्र अधिगम
- मेट्रिक्स
- दस लाख
- ML
- मोबाइल
- मोबाइल गेमिंग
- आदर्श
- चाल
- यानी
- नई सुविधाएँ
- ऑफर
- ऑनलाइन
- संचालन
- विकल्प
- अन्य
- प्रदर्शन
- बहुत सारे
- पोस्ट
- बिजली
- भविष्यवाणियों
- प्रस्तुत
- उत्पादकता
- परियोजना
- सार्वजनिक
- अजगर
- पढ़ना
- को कम करने
- प्रतीपगमन
- उपयुक्त संसाधन चुनें
- बाकी
- परिणाम
- रन
- दौड़ना
- स्केल
- स्केलिंग
- विज्ञान
- वैज्ञानिकों
- कई
- सेट
- की स्थापना
- Share
- साझा
- सरल
- छोटा
- So
- हल
- गति
- बिताना
- खर्च
- स्पिन
- विभाजित
- एसक्यूएल
- ट्रेनिंग
- प्रारंभ
- शुरू
- आँकड़े
- कहानियों
- स्ट्रीमिंग
- लक्ष्य
- परीक्षण
- विचारधारा
- पहर
- ऊपर का
- स्पर्श
- प्रशिक्षण
- ट्रांजेक्शन
- लेनदेन
- परीक्षण
- ट्यूटोरियल
- ui
- us
- उपयोगकर्ताओं
- वास्तविक
- गोदाम
- सप्ताह
- एचएमबी क्या है?
- अंदर
- काम
- श्रमिकों
- वर्कफ़्लो
- कार्य
- लिख रहे हैं
- X
- साल