HP Tuning के साथ Notebook से Kubeflow पाइपलाइन तक: डेटा साइंस का सफ़र

1. परिचय

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

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

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

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

Kubeflow आपको कई जगहों पर जोड़ी जाने वाली माइक्रोसेवाओं को एक ही यूनिट के रूप में व्यवस्थित करने और उन्हें अलग-अलग जगहों पर डिप्लॉय करने की सुविधा देता है, जैसे कि लैपटॉप, कंपनी की इमारत या क्लाउड.

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

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

इस कोडलैब में, किसी सीएलआई कमांड या 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 प्रोजेक्ट बनाने या मौजूदा GCP प्रोजेक्ट को कॉन्फ़िगर करने के लिए, नीचे दिया गया तरीका अपनाएं. अगर आपको किसी मौजूदा GCP प्रोजेक्ट का इस्तेमाल करना है, तो पक्का करें कि प्रोजेक्ट नीचे दी गई ज़रूरी शर्तों को पूरा करता हो. सबसे पहले, GCP कंसोल में रिसॉर्स मैनेजर खोलें.

नया प्रोजेक्ट बनाएं या कोई मौजूदा प्रोजेक्ट चुनें:

99b103929d928576.png

इन ज़रूरी शर्तों को देखें:

  • पक्का करें कि आपके पास प्रोजेक्ट के मालिक की भूमिका हो.
  • पक्का करें कि आपके प्रोजेक्ट के लिए बिलिंग चालू हो.
  • अगर आपने GCP फ़्री टियर या 300 डॉलर के क्रेडिट के साथ 12 महीने की ट्रायल अवधि का इस्तेमाल किया है, तो ध्यान रखें कि MiniKF का डिफ़ॉल्ट GCP इंस्टॉलेशन नहीं चलाया जा सकता. इसकी वजह यह है कि फ़्री टियर में ज़रूरत के मुताबिक संसाधन नहीं मिलते. आपको पैसे देकर लिए जाने वाले खाते पर अपग्रेड करना होगा.

GCP प्रोजेक्ट को सेट अप करने में ज़्यादा मदद पाने के लिए, GCP दस्तावेज़ देखें.

GCP प्रोजेक्ट सेट अप करने के बाद, MiniKF इंस्टॉल करने के लिए सीधे निर्देशों पर जाएं.

पहले से तय किया गया अपना GCP प्रोजेक्ट खोलें

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

3fdc4329995406a0.png

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

e8952c0b96067dea.png

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

fe25c1925487142.png

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

MiniKF के साथ कोई कंप्यूट इंस्टेंस बनाना

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

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

d6b423c1911ea85a.png

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

7d07439db939b61c.png

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

7d5f7d17a80a1930.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 में लॉग इन करने के बाद, हैमबर्गर आइकॉन पर क्लिक करके बाईं ओर का मेन्यू खोलें. Snapshots पर क्लिक करें. इसके बाद, MiniKF का उपयोगकर्ता नाम और पासवर्ड इस्तेमाल करके, Rok में लॉग इन करें.

16171f35a935a9af.png

80aad6ba5d298a7e.png

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

4. अपनी नोटबुक के अंदर से पाइपलाइन चलाएं

इस सेक्शन में, कुत्ते की नस्ल की पहचान का उदाहरण चलाया जाएगा. यह Udacity AI Nanoडिग्री में मौजूद एक प्रोजेक्ट है. कुत्ते की इमेज दिए जाने पर, आखिरी मॉडल में कुत्ते की नस्ल का अनुमान लगाया जाएगा.

अपने Kubeflow क्लस्टर में नोटबुक सर्वर बनाएं

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

60825e935fd0f39b.png

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

f9303c0a182e47f5.png

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

a2343f30bc9522ab.png

पक्का करें कि आपने नीचे दी गई Docker इमेज चुनी हो (ध्यान दें कि इमेज टैग अलग हो सकता है):

gcr.io/arrikto/jupyter-kale:f20978e

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

8544d9b05826b316.png

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

28c024bcc55cc70a.png

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

52f1f8234988ceaa.png

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

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

ab9ac96f1a1f0d09.png

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

cd data/
git clone https://github.com/kubeflow-kale/kale

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

साइडबार में, data/kale/examples/dog-breed-classification/ फ़ोल्डर पर जाएं और नोटबुक dog-breed.ipynb खोलें.

2bc436465522f65b.png

कुत्ते की नस्ल की पहचान करने के उदाहरण के एमएल कोड के बारे में जानें

कुछ समय के लिए, डेटासेट डाउनलोड करने वाले सेल चलाएं, क्योंकि आपने रिपॉज़िटरी में ऐसे कुछ छोटे डेटासेट इस्तेमाल किए हैं जिन्हें आपने अभी-अभी क्लोन किया है. अगर आप घर से इस उदाहरण को अपनी रफ़्तार से चला रहे हैं, तो आप चाहें, तो डेटासेट डाउनलोड करें.

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

5e2b97ab2512f139.png

आम तौर पर, इस Notebook को Kubeflow पाइपलाइन के तौर पर चलाने के लिए, आपको एक नई Docker इमेज बनानी चाहिए, ताकि इंस्टॉल की गई नई लाइब्रेरी को शामिल किया जा सके. अच्छी बात यह है कि रोक और केल यह पक्का करते हैं कि डेवलपमेंट के दौरान जो भी लाइब्रेरी इंस्टॉल की जाएंगी, वे आपकी पाइपलाइन में लग जाएं. Rok की स्नैपशॉटिंग टेक्नोलॉजी और Kale, इन स्नैपशॉट वॉल्यूम को पाइपलाइन चरणों में माउंट कर रहे हैं.

जो लाइब्रेरी मौजूद नहीं है उसे इंस्टॉल करने के लिए, अगला सेल चलाएं:

c483da77943a6f01.png

रीस्टार्ट करें आइकॉन पर क्लिक करके, notebook कर्नेल को रीस्टार्ट करें:

376b5203209c2c91.png

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

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

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

7b96241f2ab6c389.png

केल डिप्लॉयमेंट पैनल में स्लाइडर पर क्लिक करके केल को चालू करें:

804cfbf9d76b7e23.png

Notebook में हर सेल की डिपेंडेंसी के बारे में जानें. देखें कि किस तरह एक से ज़्यादा नोटबुक सेल किसी एक पाइपलाइन चरण का हिस्सा हो सकती हैं, जैसा कि सेल की बाईं ओर कलर बार से दिखाया जाता है. यह भी देखें कि पाइपलाइन का चरण, पिछले चरणों पर कैसे निर्भर कर सकता है, जैसा कि सेल के ऊपर लेबल पर निर्भर करता है. उदाहरण के लिए, नीचे दी गई इमेज में ऐसी कई सेल दिखाई गई हैं जो एक ही पाइपलाइन चरण का हिस्सा हैं. इन सभी का लाल रंग एक जैसा होता है और ये पाइपलाइन के पिछले चरण पर निर्भर करते हैं.

fcd0fb351cdfb359.png

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

18f2f6f0e12393d5.png

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

de1b88af76df1a9a.png

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

e0b467e2e7034b5d.png

Kubeflow Pipelines का यूज़र इंटरफ़ेस (यूआई), नए टैब में खुलता है. रन खत्म होने का इंतज़ार करें.

21a9d54a57f3e20c.png

39e6fa39516d2773.png

बधाई हो! आपने अभी-अभी Kubeflow Pipelines में अपनी notebook से शुरू होने वाली पूरी पाइपलाइन चलाई है!

5. हाइपर पैरामीटर ट्यूनिंग के साथ लर्निंग ट्रांसफ़र करना

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

cnn-from-scratch चरण के लॉग पर एक नज़र डालें. (Kubeflow Pipelines यूज़र इंटरफ़ेस (यूआई) पर ग्राफ़ में दिए गए चरण पर क्लिक करें, फिर लॉग टैब पर क्लिक करें.) इसी चरण में आपने कॉन्वोलूशनल न्यूरल नेटवर्क (सीएनएन) को शुरुआत से ट्रेनिंग दी है. ध्यान दें कि ट्रेन किए गए मॉडल की सटीक जानकारी बहुत कम है. यही वजह है कि इस चरण को पूरा होने में ज़्यादा समय लगा.

62bf0835e9896c67.png

cnn-vgg16 चरण के लॉग देखें. इस चरण में, आपने विज़ुअल जियोमेट्री ग्रुप (वीजीजी) की तरफ़ से ट्रेन किए गए न्यूरल नेटवर्क यानी कि पहले से ट्रेन किए गए VGG-16 मॉडल पर ट्रांसफ़र लर्निंग का इस्तेमाल किया. पिछले मॉडल की तुलना में, एआई का इस्तेमाल करने पर मिलने वाली संख्या काफ़ी ज़्यादा है. हालांकि, हम अब भी बेहतर परफ़ॉर्म कर सकते हैं.

2b45072da65e20ae.png

अब cnn-resnet50 चरण के लॉग पर एक नज़र डालें. इस चरण में, आपने पहले से ट्रेन किए गए ResNet-50 मॉडल पर ट्रांसफ़र लर्निंग का इस्तेमाल किया. ज़्यादा सटीक होता है. इसलिए, कोडलैब के इस मॉड्यूल के बाकी हिस्से के लिए इसी मॉडल का इस्तेमाल किया जाएगा.

a1dc84ea48a87820.png

हाइपर पैरामीटर ट्यूनिंग

अपने Kubeflow यूज़र इंटरफ़ेस (यूआई) में notebook सर्वर पर वापस जाएं और dog-breed-katib.ipynb नाम की notebook खोलें (पाथ data/kale/examples/dog-breed-classification/ पर). इस नोटबुक में, आपको कैटिब का इस्तेमाल करके ResNet-50 मॉडल पर हाइपर पैरामीटर ट्यूनिंग के कुछ एक्सपेरिमेंट चलाने हैं. ध्यान दें कि आपके पास notebook की शुरुआत में एक सेल है. इसमें पैरामीटर के बारे में बताया गया है:

87b9f6c98dc1823e.png

नोटबुक के बाएं पैनल में, हाइपर पैरामीटर ट्यूनिंग चलाने के लिए, HP के साथ कैटिफ़ के साथ ट्यूनिंग चालू करें:

a518eba74d341139.png

इसके बाद, कैटिब को कॉन्फ़िगर करने के लिए कैटिब जॉब सेट अप करें पर क्लिक करें:

f4e34fff6a93aa60.png

हर पैरामीटर के लिए खोज स्पेस तय करें और लक्ष्य तय करें:

cfc6b7bcdc685a02.png

कंपाइल और रन कैटिब जॉब बटन पर क्लिक करें:

f9c1ab0a6a3c5e8d.png

Katib एक्सपेरिमेंट की प्रोग्रेस को देखें:

f3514011876564db.png

Katib प्रयोग देखने के लिए व्यू पर क्लिक करें:

ab2f5a5edd48e8dc.png

Kubeflow Pipelines (KFP) में कौनसे बदलाव चलाए गए हैं, यह देखने के लिए हो गया पर क्लिक करें:

410a843b6f044a4b.png

Katib के एक्सपेरिमेंट पेज में, आपको नए ट्रायल दिखेंगे:

a511dca519580133.png

और KFP यूज़र इंटरफ़ेस (यूआई) में आपको नए रन दिखेंगे:

43dd34ee2b75018d.png

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

केटिब, Kubeflow का कॉम्पोनेंट है, जो सामान्य हाइपर पैरामीटर ट्यूनिंग जॉब को चलाने के लिए इस्तेमाल किया जाता है. कातिब को इस बात की कोई जानकारी नहीं है कि वह असल में किस तरह के जॉब कर रही है (जिसे कैटिब कठिन शब्दावली में ट्रायल कहा जाता है). केल को सिर्फ़ सर्च स्पेस, ऑप्टिमाइज़ेशन एल्गोरिदम, और लक्ष्य की चिंता है. Katib, ट्रायल के रूप में आसान जॉब (यानी, Pods) को चलाने में मदद करता है, लेकिन Kale ने Kubeflow Pipelines में पाइपलाइन चलाने के लिए एक शिम लागू किया. इसके बाद, वह पाइपलाइन से चल रही मेट्रिक को इकट्ठा करता है.

Katib एक्सपेरिमेंट के तौर पर शुरू किया जा रहा है. इसलिए, आपको Katib यूज़र इंटरफ़ेस (यूआई) में ज़्यादा ट्रायल दिखेंगे:

3e854d3d4bb766c.png

और KFP यूज़र इंटरफ़ेस (यूआई) में और ज़्यादा रन:

ffd30dcefa739962.png

Katib एक्सपेरिमेंट पूरा होने के बाद, आपको Catib यूज़र इंटरफ़ेस (यूआई) में सभी ट्रायल दिखेंगे:

9096ae9caa77e42a.png

और KFP यूज़र इंटरफ़ेस (यूआई) में सभी रन:

7acc64dfee4f35a3.png

Notebook पर वापस जाने पर, आपको केल पैनल में Katib एक्सपेरिमेंट के बगल में जानकारी वाला बटन दिखेगा:

95b092180d71dc80.png

इस पर क्लिक करें. इसके बाद, आपको सबसे अच्छा नतीजा और इसे बनाने वाले पैरामीटर दिखेंगे:

3b0ce47e548e5afb.png

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

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

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

7. बधाई हो

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

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

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

आगे पढ़ें