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 कैसे चलाएं
- नोटबुक में और पाइपलाइन के हर चरण में, डेटा का अपने-आप वर्शन बनाने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- एक चालू GCP प्रोजेक्ट जिसका मालिकाना हक आपके पास हो
यह एक बेहतर कोडलैब है, जो Kubeflow पर फ़ोकस करता है. इस प्लैटफ़ॉर्म के बारे में ज़्यादा जानने और इसके बारे में जानने के लिए, Kubeflow के बारे में जानकारी वाला दस्तावेज़ देखें. ऐसे कॉन्सेप्ट और कोड ब्लॉक कर दिए जाते हैं जो काम के नहीं होते. साथ ही, उन्हें कॉपी करके चिपकाने के लिए उपलब्ध कराया जाता है.
2. एनवायरमेंट को सेट अप करना
अपना GCP प्रोजेक्ट आईडी और क्लस्टर का नाम सेट करें
अपना प्रोजेक्ट आईडी ढूंढने के लिए, GCP कंसोल के होम पैनल पर जाएं. यह सबसे ऊपर बाईं ओर मौजूद हैमबर्गर मेन्यू में मौजूद है. अगर स्क्रीन खाली है, तो डैशबोर्ड बनाने के लिए प्रॉम्प्ट में 'हां' पर क्लिक करें.
अगर प्रोजेक्ट पहले से नहीं चुना गया है, तो प्रोजेक्ट चुनें पर क्लिक करें:
और अपना प्रोजेक्ट चुनें. आपके पास सिर्फ़ एक होना चाहिए:
3. MiniKF इंस्टॉल करें
कंप्यूट इंस्टेंस बनाना
GCP Marketplace में, "मिनीकेएफ़" खोजें.
Arikto की MiniKF वर्चुअल मशीन चुनें.
Compute Engine पर लॉन्च करें बटन पर क्लिक करें और अपना प्रोजेक्ट चुनें.
कॉन्फ़िगर और विंडो डिप्लॉय करें, अपने MiniKF इंस्टेंस के लिए कोई नाम चुनें और डिफ़ॉल्ट विकल्प रहने दें. फिर डिप्लॉय करें बटन पर क्लिक करें.
MiniKF Compute इंस्टेंस के चालू होने का इंतज़ार करें.
MiniKF में लॉग इन करें
MiniKF वीएम चालू होने पर, एसएसएच बटन पर क्लिक करके कनेक्ट करें और लॉगिन करें. minikf
निर्देश चलाने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. इससे Minikube, Kubeflow, और Rok का डिप्लॉयमेंट शुरू हो जाएगा. इस प्रोसेस को पूरा होने में कुछ मिनट लगेंगे.
Kubeflow में लॉग इन करें
इंस्टॉल करने की प्रोसेस पूरी होने और सभी पॉड तैयार हो जाने के बाद, MiniKF के डैशबोर्ड पर जाएं. MiniKF उपयोगकर्ता नाम और पासवर्ड का इस्तेमाल करके Kubeflow में लॉग इन करें.
Chrome के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:
Firefox के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:
Safari के उपयोगकर्ताओं को यह स्क्रीन दिखेगी:
Rok में लॉग इन करें
Kubeflow में लॉग इन करने के बाद, हैमबर्गर आइकॉन पर क्लिक करके बाईं ओर का मेन्यू खोलें. स्नैपशॉट स्टोर पर जाएँ और MiniKF उपयोगकर्ता नाम और पासवर्ड का इस्तेमाल करके Rok में लॉग इन करें.
बधाई हो! आपने GCP पर MiniKF को डिप्लॉय कर लिया है! अब आपके पास Notebooks बनाने, अपना एमएल कोड लिखने, और Kubeflow Pipelines चलाने का विकल्प है. डेटा का नया वर्शन बनाने और उसे फिर से बनाने के लिए, Rok का इस्तेमाल करें.
4. अपनी Notebook के अंदर से एक पाइपलाइन चलाएं
इस सेक्शन में, आपको टाइटैनिक का उदाहरण देखने को मिलेगा. यह Kaggle प्रतियोगिता है, जो यह अनुमान लगाती है कि टाइटैनिक जहाज़ के मलबे से कौनसे यात्री बचे.
Notebook सर्वर बनाना
Kubeflow सेंट्रल डैशबोर्ड पर Notebook Servers लिंक पर जाएं.
New Server पर क्लिक करें.
अपने Notebook सर्वर के लिए कोई नाम तय करें.
पक्का करें कि आपने यह इमेज चुनी हो:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
5 जीबी साइज़ का नया और खाली डेटा वॉल्यूम जोड़ें और इसे data नाम दें.
नोटबुक सर्वर बनाने के लिए, लॉन्च करें पर क्लिक करें.
Notebook सर्वर उपलब्ध होने पर, उससे कनेक्ट करने के लिए कनेक्ट करें पर क्लिक करें.
डेटा और नोटबुक को डाउनलोड करें
JupyterLab लैंडिंग पेज एक नए टैब में खुलेगा. JupyterLab में एक नया टर्मिनल बनाएं.
टर्मिनल विंडो में, इन कमांड को चलाकर 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
खोलें.
टाइटैनिक चैलेंज का एमएल कोड एक्सप्लोर करें
नोटबुक को सिलसिलेवार तरीके से चलाएं. ध्यान दें कि कोड काम नहीं करता, क्योंकि लाइब्रेरी मौजूद नहीं है.
Terminal पर वापस जाएं और उस लाइब्रेरी को इंस्टॉल करें जो मौजूद नहीं है.
pip3 install --user seaborn
रीफ़्रेश करें आइकॉन पर क्लिक करके, notebook कर्नेल को रीस्टार्ट करें.
सही लाइब्रेरी इंस्टॉल करके सेल को फिर से चलाएं और उसे सफल होते हुए देखें.
अपनी नोटबुक को Kubeflow पाइपलाइन में बदलें
बाएं पैनल में मौजूद Kubeflow आइकॉन पर क्लिक करके केल को चालू करें.
हर सेल डिपेंडेंसी के बारे में जानें. देखें कि किसी पाइपलाइन चरण में कई सेल किस तरह शामिल हो सकती हैं. साथ ही, देखें कि पाइपलाइन का चरण पिछले चरणों पर किस तरह निर्भर हो सकता है.
कंपाइल करें और चलाएं बटन पर क्लिक करें.
स्नैपशॉट की प्रोग्रेस देखें.
पाइपलाइन रन की प्रोग्रेस देखें.
Kubeflow Pipelines यूज़र इंटरफ़ेस (यूआई) पर जाने और दौड़ की जानकारी देखने के लिए, लिंक पर क्लिक करें.
इसके पूरा होने का इंतज़ार करें.
बधाई हो! आपने अभी-अभी अपनी नोटबुक से शुरू होने वाली पूरी तरह से Kubeflow पाइपलाइन चलाया है!
5. वॉल्यूम स्नैपशॉट के साथ फिर से बनाने की क्षमता
नतीजों की जांच करें
दूसरे से आखिरी पाइपलाइन चरण के नतीजे के लॉग देखें. ध्यान दें कि सभी अनुमान लगाने वाले टूल ने 100% स्कोर दिखाया है. एक अनुभवी डेटा साइंटिस्ट को तुरंत यह संदिग्ध लग सकता है. यह इस बात का अच्छा संकेत है कि हमारे मॉडल एक जैसे नहीं हैं. ये मॉडल, ट्रेनिंग डेटा सेट से ज़्यादा बेहतर काम कर रहे हैं. ऐसा मॉडल के इस्तेमाल किए गए डेटा से जुड़ी किसी समस्या की वजह से हो सकता है.
पिछली स्थिति फिर से जनरेट करना
अच्छी बात यह है कि Rok, डेटा के अलग-अलग वर्शन बनाने और पूरे एनवायरमेंट को दोबारा बनाने का ध्यान रखता है. ऐसा इसलिए, क्योंकि आपने कंपाइल करें और चलाएं बटन पर क्लिक किया था. इस तरह, आपके पास अपने डेटा और कोड के लिए एक टाइम मशीन होती है. आइए, किसी मॉडल को ट्रेनिंग देने से पहले, पाइपलाइन की स्थिति को फिर से शुरू करें और देखें कि क्या चल रहा है. रैंडमफ़ॉरेस्ट चरण पर एक नज़र डालें, फिर आर्टफ़ैक्ट पर क्लिक करें.
मार्कडाउन में दिया गया तरीका अपनाएं. जैसे, इससे जुड़े लिंक पर क्लिक करके, Rok के यूज़र इंटरफ़ेस (यूआई) में स्नैपशॉट देखें.
Rok के यूआरएल को कॉपी करें.
Notebook के सर्वर लिंक पर जाएं.
New Server पर क्लिक करें.
उस Rok यूआरएल को चिपकाएं जिसे आपने पहले कॉपी किया था और ऑटोमैटिक भरें बटन पर क्लिक करें.
अपनी नोटबुक को कोई नाम दें.
पक्का करें कि आपने यह इमेज चुनी हो:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
नोटबुक सर्वर बनाने के लिए, लॉन्च करें पर क्लिक करें.
Notebook सर्वर उपलब्ध होने पर, उससे कनेक्ट करने के लिए कनेक्ट करें पर क्लिक करें.
ध्यान दें कि नोटबुक, उस पाइपलाइन चरण के सटीक सेल में खुलती है जिसे आपने जोड़ा है.
बैकग्राउंड में, केल ने सभी लाइब्रेरी को इंपोर्ट करके और पिछले चरणों से वैरिएबल लोड करके, Notebook का स्टेटस फिर से शुरू कर दिया है.
पहले की स्थिति को डीबग करें
इस सेल में प्रिंट करने का निर्देश जोड़ें:
print(acc_random_forest)
किसी भी रैंडम फ़ॉरेस्ट को फिर से ट्रेनिंग देने के लिए Shift + Return दबाकर, ऐक्टिव सेल को चलाएं और स्कोर को प्रिंट करें. यह 100 है.
अब यह देखने का समय है कि क्या ट्रेनिंग डेटा में कुछ अजीब है या नहीं. इस समस्या को देखने और उसे ठीक करने के लिए, पिछले सेल को चुनकर और प्लस आइकॉन (+) पर क्लिक करके, रैंडम फ़ॉरेस्ट मार्कडाउन के ऊपर वाला सेल जोड़ें.
ट्रेनिंग सेट प्रिंट करने के लिए, इस टेक्स्ट को जोड़ें और सेल एक्ज़ीक्यूट करें.
train_df
ओह! ट्रेनिंग लेबल वाले कॉलम ("बचे हुए") को गलती से इनपुट सुविधाओं के तौर पर शामिल कर लिया गया है! मॉडल ने "बचे हुए" पर फ़ोकस करना सीख लिया है इनपुट इस्तेमाल न करें. इससे इनपुट खराब हो रहा है. यह कॉलम, मॉडल के लक्ष्य से एग्ज़ैक्ट मैच करता है. अनुमान लगाने के दौरान, यह कॉलम मौजूद नहीं होता. इसलिए, इसे ट्रेनिंग डेटासेट से हटाना होगा, ताकि मॉडल अन्य सुविधाओं से सीख सके.
गड़बड़ी ठीक करना
इस कॉलम को हटाने के लिए, सेल में बदलाव करके यह कमांड जोड़ें:
train_df.drop('Survived', axis=1, inplace=True) train_df
Kale को चालू करें और पक्का करें कि बचे हुए लेबल को हटाने वाला सेल, featureEngineering पाइपलाइन के चरण का हिस्सा हो (इसका आउटलाइन रंग एक जैसा होना चाहिए).
कंपाइल करके चलाएं बटन पर क्लिक करके, पाइपलाइन को फिर से चलाएं.
Kubeflow Pipelines यूज़र इंटरफ़ेस (यूआई) पर जाने और दौड़ की जानकारी देखने के लिए, लिंक पर क्लिक करें.
नतीजे चरण पूरे होने तक इंतज़ार करें और आखिरी नतीजे देखने के लिए लॉग देखें. अब आपके पास सटीक अनुमान लगाने वाले स्कोर हैं!
6. व्यवस्थित करें
MiniKF वीएम को बंद करें
GCP कंसोल में डिप्लॉयमेंट मैनेजर पर जाएं और minikf-1
के डिप्लॉयमेंट को मिटाएं.
7. बधाई हो
बधाई हो, आपने Kubeflow (MiniKF), Kale, और Rok का इस्तेमाल करके एंड-टू-एंड डेटा साइंस वर्कफ़्लो चला लिया है!
आगे क्या होगा?
Kubeflow कम्यूनिटी में शामिल हों:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- मंगलवार को समुदाय कॉल