MiniKF और Kale के साथ Notebook से Kubeflow पाइपलाइन तक

1. परिचय

Kubeflow, Kubernetes के लिए एक मशीन लर्निंग टूलकिट है. इस प्रोजेक्ट का मकसद, Kubernetes पर मशीन लर्निंग (एमएल) के डिप्लॉयमेंट को डिप्लॉय करने के लिए किया गया है. ये वर्कफ़्लो आसान, पोर्टेबल, और बढ़ाने लायक हैं. इसका मकसद, एमएल के लिए सबसे बेहतर ओपन सोर्स सिस्टम को अलग-अलग इन्फ़्रास्ट्रक्चर के लिए आसान तरीके से डिप्लॉय करना है.

Kubeflow का डिप्लॉयमेंट कैसा दिखता है?

Kubeflow डिप्लॉयमेंट:

  • पोर्टेबल - यह किसी भी Kubernetes क्लस्टर पर काम करता है, चाहे वह Google Cloud Platform (GCP), परिसर में या सेवा देने वाली अलग-अलग कंपनियों के बीच हो.
  • बड़े स्तर पर इस्तेमाल किए जा सकते हैं - इसमें उतार-चढ़ाव वाले संसाधनों का इस्तेमाल किया जा सकता है. साथ ही, यह सिर्फ़ Kubernetes क्लस्टर के लिए तय संसाधनों की संख्या से सीमित है.
  • आसानी से मैनेज और कम किया जा सकता है - इसे सर्विस वर्कर के साथ बेहतर बनाया गया है, ताकि वे ऑफ़लाइन या हल्की क्वालिटी वाले नेटवर्क पर काम कर सकें.

यह अलग-अलग तरह की कई माइक्रोसेवाओं को एक ही इकाई के तौर पर व्यवस्थित करने और उन्हें अलग-अलग जगहों पर डिप्लॉय करने का एक तरीका है. फिर चाहे वह लैपटॉप हो या क्लाउड.

यह कोडलैब आपको MiniKF का इस्तेमाल करके, Kubeflow डिप्लॉयमेंट बनाने का तरीका बताएगा. साथ ही, Jupyter Notebook के अंदर Kubeflow Pipelines वर्कफ़्लो चलाना है.

आपको क्या बनाना होगा

इस कोडलैब में, किसी भी सीएलआई कमांड या SDK टूल का इस्तेमाल किए बिना, Kubeflow Pipelines के साथ डेटा साइंस की एक जटिल पाइपलाइन बनाई जा सकती है. आपको Kubernetes या Docker के बारे में जानकारी होने की ज़रूरत नहीं है. काम पूरा होने पर, आपके इन्फ़्रास्ट्रक्चर में ये चीज़ें शामिल होंगी:

  • MiniKF (मिनी क्यूबफ़्लो) वीएम जो अपने-आप इंस्टॉल होता है:
  • Kubernetes (मिनीक्यूब का इस्तेमाल करके)
  • Kubeflow
  • Kale एक ऐसा टूल है जो सामान्य कामों के लिए इस्तेमाल होने वाले Jupyter Notebooks को Kubeflow Pipelines के वर्कफ़्लो में बदल देता है ( GitHub)
  • डेटा के अलग-अलग वर्शन बनाने और उसे फिर से बनाने के लिए Arrikto Rok

आपको इनके बारे में जानकारी मिलेगी

  • MiniKF के साथ Kubeflow इंस्टॉल करने का तरीका
  • किसी सीएलआई कमांड या SDK टूल का इस्तेमाल किए बिना, अपनी Jupyter Notebooks को Kubeflow Pipelines में बदलें
  • नोटबुक में एक बटन पर क्लिक करके, Kubeflow Pipelines कैसे चलाएं
  • नोटबुक में और पाइपलाइन के हर चरण में, डेटा का अपने-आप वर्शन बनाने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

यह एक बेहतर कोडलैब है, जो Kubeflow पर फ़ोकस करता है. इस प्लैटफ़ॉर्म के बारे में ज़्यादा जानने और इसके बारे में जानने के लिए, Kubeflow के बारे में जानकारी वाला दस्तावेज़ देखें. ऐसे कॉन्सेप्ट और कोड ब्लॉक कर दिए जाते हैं जो काम के नहीं होते. साथ ही, उन्हें कॉपी करके चिपकाने के लिए उपलब्ध कराया जाता है.

2. एनवायरमेंट को सेट अप करना

अपना GCP प्रोजेक्ट आईडी और क्लस्टर का नाम सेट करें

अपना प्रोजेक्ट आईडी ढूंढने के लिए, GCP कंसोल के होम पैनल पर जाएं. यह सबसे ऊपर बाईं ओर मौजूद हैमबर्गर मेन्यू में मौजूद है. अगर स्क्रीन खाली है, तो डैशबोर्ड बनाने के लिए प्रॉम्प्ट में 'हां' पर क्लिक करें.

जीसीपी कंसोल खोलें

3fdc4329995406a0.png

अगर प्रोजेक्ट पहले से नहीं चुना गया है, तो प्रोजेक्ट चुनें पर क्लिक करें:

e8952c0b96067dea.png

और अपना प्रोजेक्ट चुनें. आपके पास सिर्फ़ एक होना चाहिए:

fe25c1925487142.png

3. MiniKF इंस्टॉल करें

कंप्यूट इंस्टेंस बनाना

GCP Marketplace में, "मिनीकेएफ़" खोजें.

Arikto की MiniKF वर्चुअल मशीन चुनें.

d6b423c1911ea85a.png

Compute Engine पर लॉन्च करें बटन पर क्लिक करें और अपना प्रोजेक्ट चुनें.

b5eeba43053db4bd.png

कॉन्फ़िगर और विंडो डिप्लॉय करें, अपने MiniKF इंस्टेंस के लिए कोई नाम चुनें और डिफ़ॉल्ट विकल्प रहने दें. फिर डिप्लॉय करें बटन पर क्लिक करें.

dc401e2bb5a884d9.png

MiniKF Compute इंस्टेंस के चालू होने का इंतज़ार करें.

5228086caadc44c6.png

MiniKF में लॉग इन करें

MiniKF वीएम चालू होने पर, एसएसएच बटन पर क्लिक करके कनेक्ट करें और लॉगिन करें. minikf निर्देश चलाने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. इससे Minikube, Kubeflow, और Rok का डिप्लॉयमेंट शुरू हो जाएगा. इस प्रोसेस को पूरा होने में कुछ मिनट लगेंगे.

774e83c3e96cf7b3.png

Kubeflow में लॉग इन करें

इंस्टॉल करने की प्रोसेस पूरी होने और सभी पॉड तैयार हो जाने के बाद, MiniKF के डैशबोर्ड पर जाएं. MiniKF उपयोगकर्ता नाम और पासवर्ड का इस्तेमाल करके Kubeflow में लॉग इन करें.

251b0bcdbf6d3c71.png

9d49d899bb0b5bd1.png

Chrome के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:

6258e0f09e46a6c2.png

Firefox के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:

8cff90ce2f0670bd.png

Safari के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:

1c6fd768d71c0a92.png

Rok में लॉग इन करें

Kubeflow में लॉग इन करने के बाद, हैमबर्गर आइकॉन पर क्लिक करके बाईं ओर का मेन्यू खोलें. स्नैपशॉट स्टोर पर जाएँ और MiniKF उपयोगकर्ता नाम और पासवर्ड का इस्तेमाल करके Rok में लॉग इन करें.

a683198ac4ba900d.png

80aad6ba5d298a7e.png

बधाई हो! आपने GCP पर MiniKF को डिप्लॉय कर लिया है! अब आपके पास Notebooks बनाने, अपना एमएल कोड लिखने, और Kubeflow Pipelines चलाने का विकल्प है. डेटा का नया वर्शन बनाने और उसे फिर से बनाने के लिए, Rok का इस्तेमाल करें.

4. अपनी Notebook के अंदर से एक पाइपलाइन चलाएं

इस सेक्शन में, आपको टाइटैनिक का उदाहरण देखने को मिलेगा. यह Kaggle प्रतियोगिता है, जो यह अनुमान लगाती है कि टाइटैनिक जहाज़ के मलबे से कौनसे यात्री बचे.

Notebook सर्वर बनाना

Kubeflow सेंट्रल डैशबोर्ड पर Notebook Servers लिंक पर जाएं.

4115cac8d8474d73.png

New Server पर क्लिक करें.

f9303c0a182e47f5.png

अपने Notebook सर्वर के लिए कोई नाम तय करें.

a2343f30bc9522ab.png

पक्का करें कि आपने यह इमेज चुनी हो:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

5 जीबी साइज़ का नया और खाली डेटा वॉल्यूम जोड़ें और इसे data नाम दें.

8544d9b05826b316.png

नोटबुक सर्वर बनाने के लिए, लॉन्च करें पर क्लिक करें.

28c024bcc55cc70a.png

Notebook सर्वर उपलब्ध होने पर, उससे कनेक्ट करने के लिए कनेक्ट करें पर क्लिक करें.

2f06041475f45d3.png

डेटा और नोटबुक को डाउनलोड करें

JupyterLab लैंडिंग पेज एक नए टैब में खुलेगा. JupyterLab में एक नया टर्मिनल बनाएं.

2482011174f7bc75.png

टर्मिनल विंडो में, इन कमांड को चलाकर data फ़ोल्डर पर जाएं. इसके बाद, notebook और वह डेटा डाउनलोड करें जिसका इस्तेमाल लैब के बाकी बचे कामों के लिए किया जाएगा.

cd data/
git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples

इस रिपॉज़िटरी में डेटा और व्याख्या किए गए Notebooks के साथ चुने गए उदाहरणों की सीरीज़ शामिल है. साइडबार में, data/examples/titanic-ml-dataset/ फ़ोल्डर पर जाएं और नोटबुक titanic_dataset_ml.ipynb खोलें.

c85baf68b36c63b2.png

टाइटैनिक चैलेंज का एमएल कोड एक्सप्लोर करें

नोटबुक को सिलसिलेवार तरीके से चलाएं. ध्यान दें कि कोड काम नहीं करता, क्योंकि लाइब्रेरी मौजूद नहीं है.

bf2451fd7407e334.png

Terminal पर वापस जाएं और उस लाइब्रेरी को इंस्टॉल करें जो मौजूद नहीं है.

pip3 install --user seaborn

d90593b21425dd12.png

रीफ़्रेश करें आइकॉन पर क्लिक करके, notebook कर्नेल को रीस्टार्ट करें.

a21f5f563b36ce4d.png

सही लाइब्रेरी इंस्टॉल करके सेल को फिर से चलाएं और उसे सफल होते हुए देखें.

अपनी नोटबुक को Kubeflow पाइपलाइन में बदलें

बाएं पैनल में मौजूद Kubeflow आइकॉन पर क्लिक करके केल को चालू करें.

3f4f9c93b187b105.png

हर सेल डिपेंडेंसी के बारे में जानें. देखें कि किसी पाइपलाइन चरण में कई सेल किस तरह शामिल हो सकती हैं. साथ ही, देखें कि पाइपलाइन का चरण पिछले चरणों पर किस तरह निर्भर हो सकता है.

15cca32444c1f12e.png

कंपाइल करें और चलाएं बटन पर क्लिक करें.

bde5cef34f00e258.png

स्नैपशॉट की प्रोग्रेस देखें.

9408f46abb2493f5.png

पाइपलाइन रन की प्रोग्रेस देखें.

9edbde68032f5e4b.png

Kubeflow Pipelines यूज़र इंटरफ़ेस (यूआई) पर जाने और दौड़ की जानकारी देखने के लिए, लिंक पर क्लिक करें.

a81646a22584e1b9.png

इसके पूरा होने का इंतज़ार करें.

44bee7dc0d24ec21.png

d377b6d574a4970.png

बधाई हो! आपने अभी-अभी अपनी नोटबुक से शुरू होने वाली पूरी तरह से Kubeflow पाइपलाइन चलाया है!

5. वॉल्यूम स्नैपशॉट के साथ फिर से बनाने की क्षमता

नतीजों की जांच करें

दूसरे से आखिरी पाइपलाइन चरण के नतीजे के लॉग देखें. ध्यान दें कि सभी अनुमान लगाने वाले टूल ने 100% स्कोर दिखाया है. एक अनुभवी डेटा साइंटिस्ट को तुरंत यह संदिग्ध लग सकता है. यह इस बात का अच्छा संकेत है कि हमारे मॉडल एक जैसे नहीं हैं. ये मॉडल, ट्रेनिंग डेटा सेट से ज़्यादा बेहतर काम कर रहे हैं. ऐसा मॉडल के इस्तेमाल किए गए डेटा से जुड़ी किसी समस्या की वजह से हो सकता है.

2a594032c2dd6ff6.png

पिछली स्थिति फिर से जनरेट करना

अच्छी बात यह है कि Rok, डेटा के अलग-अलग वर्शन बनाने और पूरे एनवायरमेंट को दोबारा बनाने का ध्यान रखता है. ऐसा इसलिए, क्योंकि आपने कंपाइल करें और चलाएं बटन पर क्लिक किया था. इस तरह, आपके पास अपने डेटा और कोड के लिए एक टाइम मशीन होती है. आइए, किसी मॉडल को ट्रेनिंग देने से पहले, पाइपलाइन की स्थिति को फिर से शुरू करें और देखें कि क्या चल रहा है. रैंडमफ़ॉरेस्ट चरण पर एक नज़र डालें, फिर आर्टफ़ैक्ट पर क्लिक करें.

4f25ca4560711b23.png

मार्कडाउन में दिया गया तरीका अपनाएं. जैसे, इससे जुड़े लिंक पर क्लिक करके, Rok के यूज़र इंटरफ़ेस (यूआई) में स्नैपशॉट देखें.

e533bc781da9355a.png

Rok के यूआरएल को कॉपी करें.

d155d19731b5cedd.png

Notebook के सर्वर लिंक पर जाएं.

aafeab01f3ef0863.png

New Server पर क्लिक करें.

f2265a64e8f9d094.png

उस Rok यूआरएल को चिपकाएं जिसे आपने पहले कॉपी किया था और ऑटोमैटिक भरें बटन पर क्लिक करें.

9ba4d4128a3bdeea.png

अपनी नोटबुक को कोई नाम दें.

7685c3bf35fc74b2.png

पक्का करें कि आपने यह इमेज चुनी हो:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

नोटबुक सर्वर बनाने के लिए, लॉन्च करें पर क्लिक करें.

28c024bcc55cc70a.png

Notebook सर्वर उपलब्ध होने पर, उससे कनेक्ट करने के लिए कनेक्ट करें पर क्लिक करें.

34955a64ae316de1.png

ध्यान दें कि नोटबुक, उस पाइपलाइन चरण के सटीक सेल में खुलती है जिसे आपने जोड़ा है.

a1f7c81f349e0364.png

बैकग्राउंड में, केल ने सभी लाइब्रेरी को इंपोर्ट करके और पिछले चरणों से वैरिएबल लोड करके, Notebook का स्टेटस फिर से शुरू कर दिया है.

पहले की स्थिति को डीबग करें

इस सेल में प्रिंट करने का निर्देश जोड़ें:

print(acc_random_forest)

किसी भी रैंडम फ़ॉरेस्ट को फिर से ट्रेनिंग देने के लिए Shift + Return दबाकर, ऐक्टिव सेल को चलाएं और स्कोर को प्रिंट करें. यह 100 है.

e2a8a3b5465fcb5d.png

अब यह देखने का समय है कि क्या ट्रेनिंग डेटा में कुछ अजीब है या नहीं. इस समस्या को देखने और उसे ठीक करने के लिए, पिछले सेल को चुनकर और प्लस आइकॉन (+) पर क्लिक करके, रैंडम फ़ॉरेस्ट मार्कडाउन के ऊपर वाला सेल जोड़ें.

d1077f32dff9620f.png

ट्रेनिंग सेट प्रिंट करने के लिए, इस टेक्स्ट को जोड़ें और सेल एक्ज़ीक्यूट करें.

train_df

2854798ff01aed4e.png

ओह! ट्रेनिंग लेबल वाले कॉलम ("बचे हुए") को गलती से इनपुट सुविधाओं के तौर पर शामिल कर लिया गया है! मॉडल ने "बचे हुए" पर फ़ोकस करना सीख लिया है इनपुट इस्तेमाल न करें. इससे इनपुट खराब हो रहा है. यह कॉलम, मॉडल के लक्ष्य से एग्ज़ैक्ट मैच करता है. अनुमान लगाने के दौरान, यह कॉलम मौजूद नहीं होता. इसलिए, इसे ट्रेनिंग डेटासेट से हटाना होगा, ताकि मॉडल अन्य सुविधाओं से सीख सके.

गड़बड़ी ठीक करना

इस कॉलम को हटाने के लिए, सेल में बदलाव करके यह कमांड जोड़ें:

train_df.drop('Survived', axis=1, inplace=True)
train_df

9e76c16a862b566.png

Kale को चालू करें और पक्का करें कि बचे हुए लेबल को हटाने वाला सेल, featureEngineering पाइपलाइन के चरण का हिस्सा हो (इसका आउटलाइन रंग एक जैसा होना चाहिए).

कंपाइल करके चलाएं बटन पर क्लिक करके, पाइपलाइन को फिर से चलाएं.

Kubeflow Pipelines यूज़र इंटरफ़ेस (यूआई) पर जाने और दौड़ की जानकारी देखने के लिए, लिंक पर क्लिक करें.

नतीजे चरण पूरे होने तक इंतज़ार करें और आखिरी नतीजे देखने के लिए लॉग देखें. अब आपके पास सटीक अनुमान लगाने वाले स्कोर हैं!

8c6a9676b49e5be8.png

6. व्यवस्थित करें

MiniKF वीएम को बंद करें

GCP कंसोल में डिप्लॉयमेंट मैनेजर पर जाएं और minikf-1 के डिप्लॉयमेंट को मिटाएं.

7. बधाई हो

बधाई हो, आपने Kubeflow (MiniKF), Kale, और Rok का इस्तेमाल करके एंड-टू-एंड डेटा साइंस वर्कफ़्लो चला लिया है!

आगे क्या होगा?

Kubeflow कम्यूनिटी में शामिल हों:

आगे पढ़ें