मुख्य सामग्री पर जाएं

मशीन लर्निंग, पाइपलाइन्स, डिप्लॉयमेंट और MLOps ट्यूटोरियल

बुनियादी MLOps और ML पाइपलाइनों के एंड-टू-एंड विकास और डिप्लॉयमेंट के बारे में सीखें।
अपडेट किया गया 24 सित॰ 2026  · 15 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

परिचय

आज के डेटा वैज्ञानिकों के लिए पाइपलाइन्स, डिप्लॉयमेंट और MLOps अत्यंत महत्वपूर्ण अवधारणाएँ हैं। केवल नोटबुक में मॉडल बनाना पर्याप्त नहीं है। पाइपलाइन्स को डिप्लॉय करना और MLOps की श्रेष्ठ प्रक्रियाओं के साथ एंड-टू-एंड प्रक्रियाओं का प्रबंधन करना कई कंपनियों का बढ़ता हुआ फोकस है। यह ट्यूटोरियल पाइपलाइन, CI/DI, API, कंटेनर, Docker, Kubernetes जैसी कई महत्वपूर्ण अवधारणाओं पर चर्चा करता है। आप Python में MLOps फ्रेमवर्क्स और लाइब्रेरीज़ के बारे में भी जानेंगे। अंत में, यह ट्यूटोरियल एक Flask-आधारित ML वेब ऐप्लिकेशन को कंटेनराइज़ करने और उसे Microsoft Azure क्लाउड पर डिप्लॉय करने का एंड-टू-एंड इम्प्लीमेंटेशन दिखाता है।

मुख्य अवधारणाएँ

MLOps

MLOps का अर्थ है मशीन लर्निंग ऑपरेशन्स। MLOps का फोकस मशीन लर्निंग मॉडलों को प्रोडक्शन में डिप्लॉय करने की प्रक्रिया को सुव्यवस्थित करना, और उसके बाद उनका रखरखाव व मॉनिटरिंग करना है। MLOps एक सहयोगात्मक कार्यक्षेत्र है, जिसमें अक्सर डेटा वैज्ञानिक, ML इंजीनियर और DevOps इंजीनियर शामिल होते हैं। MLOps शब्द सॉफ्टवेयर इंजीनियरिंग के दो अलग-अलग क्षेत्रों — मशीन लर्निंग और DevOps — का सम्मिलन है।

MLOps में डेटा पाइपलाइन से लेकर मशीन लर्निंग मॉडल के प्रोडक्शन तक सबकुछ शामिल हो सकता है। कुछ जगहों पर आप देखेंगे कि MLOps का इम्प्लीमेंटेशन केवल मशीन लर्निंग मॉडल के डिप्लॉयमेंट तक सीमित है, लेकिन कई एंटरप्राइज़ ऐसे भी मिलेंगे जहाँ MLOps का इम्प्लीमेंटेशन ML जीवनचक्र के विभिन्न हिस्सों — जैसे Exploratory Data Analysis (EDA), डेटा प्रीप्रोसेसिंग, मॉडल ट्रेनिंग आदि — में फैला होता है।

हालाँकि MLOps एक सेट के रूप में श्रेष्ठ प्रक्रियाओं से शुरू हुआ था, यह धीरे-धीरे ML जीवनचक्र प्रबंधन के लिए एक स्वतंत्र अप्रोच में विकसित हो रहा है। MLOps पूरे जीवनचक्र पर लागू होता है — मॉडल जनरेशन (सॉफ्टवेयर डेवलपमेंट लाइफसाइकल और कंटीन्युअस इंटीग्रेशन/कंटीन्युअस डिलीवरी) के साथ इंटीग्रेशन से लेकर ऑर्केस्ट्रेशन और डिप्लॉयमेंट, स्वास्थ्य, डायग्नोस्टिक्स, गवर्नेंस और बिज़नेस मेट्रिक्स तक।

MLOps
छवि स्रोत

MLOps क्यों?

एंटरप्राइज़ MLOps के माध्यम से कई लक्ष्य हासिल करना चाहते हैं। कुछ सामान्य लक्ष्य हैं:

  • स्वचालन
  • स्केलेबिलिटी
  • पुनरुत्पादनयोग्यता
  • मॉनिटरिंग
  • गवर्नेंस

MLOps बनाम DevOps

DevOps प्रोडक्शन में सॉफ्टवेयर ऐप्लिकेशन डिलीवर करने का एक आवर्तक (इटरेटिव) तरीका है। MLOps उन्हीं सिद्धांतों को अपनाकर मशीन लर्निंग मॉडलों को प्रोडक्शन तक ले जाता है। चाहे DevOps हो या MLOps, अंतिम उद्देश्य सॉफ्टवेयर ऐप्लिकेशनों/ML मॉडलों की उच्च गुणवत्ता और नियंत्रण है।

CI/CD: कंटीन्युअस इंटीग्रेशन, कंटीन्युअस डिलीवरी, और कंटीन्युअस डिप्लॉयमेंट

CI/CD DevOps से व्युत्पन्न एक प्रैक्टिस है और यह मशीन लर्निंग मॉडलों में समस्याओं को निरंतर पहचानने, पुनर्मूल्यांकन करने और स्वतः अपडेट करने की प्रक्रिया को संदर्भित करता है। CI/CD से जुड़ी मुख्य अवधारणाएँ हैं कंटीन्युअस इंटीग्रेशन, कंटीन्युअस डिलीवरी, और कंटीन्युअस डिप्लॉयमेंट। यह मशीन लर्निंग पाइपलाइन (बिल्डिंग, टेस्टिंग और डिप्लॉयिंग) को ऑटोमेट करता है और प्रक्रिया में डेटा वैज्ञानिकों के मैन्युअल हस्तक्षेप की आवश्यकता को काफी कम करता है, जिससे यह कुशल, तेज़ और मानवीय त्रुटि से कम प्रभावित होता है।

CI/CD पाइपलाइन का उदाहरण (ऐप डेवलपर बनाम डेटा साइंटिस्ट)।
CI/CD पाइपलाइन का उदाहरण (ऐप डेवलपर बनाम डेटा साइंटिस्ट)। स्रोत: Microsoft

पाइपलाइन

मशीन लर्निंग पाइपलाइन वह तरीका है जिसके द्वारा एक मशीन लर्निंग मॉडल बनाने के लिए आवश्यक वर्कफ़्लो को नियंत्रित और ऑटोमेट किया जाता है। मशीन लर्निंग पाइपलाइनों में कई क्रमिक चरण होते हैं जो डेटा निष्कर्षण और प्रीप्रोसेसिंग से लेकर मॉडल ट्रेनिंग और डिप्लॉयमेंट तक सबकुछ करते हैं।

मशीन लर्निंग पाइपलाइनें आवर्तक होती हैं क्योंकि प्रत्येक चरण को मॉडल की सटीकता को लगातार बेहतर करने और अंतिम लक्ष्य हासिल करने के लिए दोहराया जाता है।

ML पाइपलाइन का एक उदाहरण O'Reilly
ML पाइपलाइन का एक उदाहरण O'Reilly

पाइपलाइन शब्द का उपयोग सामान्यतः उन स्वतंत्र चरणों के क्रम का वर्णन करने के लिए किया जाता है जिन्हें किसी कार्य को पूरा करने के लिए एक साथ व्यवस्थित किया जाता है। यह कार्य मशीन लर्निंग हो भी सकता है और नहीं भी। मशीन लर्निंग पाइपलाइनें बहुत आम हैं, लेकिन वे अकेली पाइपलाइन्स नहीं हैं। डेटा ऑर्केस्ट्रेशन पाइपलाइन्स एक और उदाहरण हैं। Microsoft docs के अनुसार, तीन परिदृश्य हैं:

मशीन लर्निंग पाइपलाइन

डिप्लॉयमेंट

मशीन लर्निंग मॉडलों (या पाइपलाइनों) का डिप्लॉयमेंट वह प्रक्रिया है जिसके द्वारा मॉडलों को प्रोडक्शन में उपलब्ध कराया जाता है, जहाँ वेब ऐप्लिकेशन, एंटरप्राइज़ सॉफ़्टवेयर (ERP) और API नए डेटा पॉइंट देकर प्रशिक्षित मॉडल का उपभोग कर सकते हैं और प्रीडिक्शन प्राप्त कर सकते हैं।

संक्षेप में, मशीन लर्निंग में डिप्लॉयमेंट वह तरीका है जिसके द्वारा आप किसी मौजूदा प्रोडक्शन वातावरण में मशीन लर्निंग मॉडल को इंटीग्रेट करते हैं ताकि डेटा के आधार पर व्यावहारिक व्यावसायिक निर्णय लिए जा सकें। यह मशीन लर्निंग जीवनचक्र का अंतिम चरण है।

आम तौर पर मशीन लर्निंग मॉडल डिप्लॉयमेंट शब्द का उपयोग पूरी मशीन लर्निंग पाइपलाइन के डिप्लॉयमेंट का वर्णन करने के लिए किया जाता है, जिसमें मॉडल स्वयं पाइपलाइन का केवल एक घटक होता है।

sklearn का उपयोग करके बनाई गई मशीन लर्निंग पाइपलाइन का एक उदाहरण
sklearn का उपयोग करके बनाई गई मशीन लर्निंग पाइपलाइन का एक उदाहरण

जैसा कि आप ऊपर दिए उदाहरण में देख सकते हैं, इस पाइपलाइन में एक Logistic Regression मॉडल है। ट्रेनिंग शुरू होने से पहले पाइपलाइन में कई चरण निष्पादित होने होते हैं, जैसे मिसिंग वैल्यू की इम्प्यूटेशन, वन-हॉट एन्कोडिंग, स्केलिंग, और प्रिंसिपल कंपोनेंट एनालिसिस (PCA)।

एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस (API)

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

एप्लीकेशन प्रोग्रामिंग इंटरफ़ेस (API)

कंटेनर

क्या आपने कभी ऐसी समस्या का सामना किया है कि आपका Python कोड (या कोई और कोड) आपके कंप्यूटर पर ठीक चलता है, लेकिन जब आपका मित्र वही कोड चलाने की कोशिश करता है, तो वह काम नहीं करता? यदि आपका मित्र बिल्कुल वही चरण दोहरा रहा है, तो उसे वही परिणाम मिलना चाहिए, है ना? इसका सरल उत्तर यह है कि आपके मित्र का Python वातावरण आपके वातावरण से अलग है।

एक वातावरण में क्या-क्या शामिल होता है?

Python (या कोई अन्य भाषा जो आपने उपयोग की है) और वह सभी लाइब्रेरी व डिपेंडेंसीज़ जो उस ऐप्लिकेशन को बनाने में उपयोग हुई हैं।

यदि हम किसी तरह ऐसा वातावरण बना सकें जिसे हम अन्य मशीनों (जैसे, आपके मित्र के कंप्यूटर या Microsoft Azure, AWS या GCP जैसे क्लाउड सेवा प्रदाता) पर ट्रांसफ़र कर सकें, तो हम कहीं भी परिणामों को पुनरुत्पादित कर सकते हैं। कंटेनर सॉफ़्टवेयर का वह प्रकार है जो किसी ऐप्लिकेशन और उसकी सभी डिपेंडेंसीज़ को पैकेज करता है ताकि ऐप्लिकेशन एक कंप्यूटिंग वातावरण से दूसरे में विश्वसनीय रूप से चल सके।

डेटा साइंस में कंटेनरों को समझने का सबसे सहज तरीका यह है कि जहाज़ पर लगे कंटेनरों के बारे में सोचें। लक्ष्य यह है कि एक कंटेनर की सामग्री को दूसरे से अलग रखा जाए ताकि वे आपस में न मिलें। डेटा साइंस में कंटेनरों का उपयोग भी इसी उद्देश्य से किया जाता है।

अब जब हम कंटेनरों के पीछे की उपमा समझ गए हैं, तो चलिए अपने ऐप्लिकेशन के लिए पृथक (आइसोलेटेड) वातावरण बनाने के वैकल्पिक विकल्पों पर नज़र डालते हैं। एक सरल विकल्प है कि अपनी प्रत्येक ऐप्लिकेशन के लिए अलग मशीन रखें।

अलग मशीन का उपयोग करना सीधा-सादा है, लेकिन यह कंटेनरों के उपयोग के फ़ायदों पर भारी नहीं पड़ता, क्योंकि प्रत्येक ऐप्लिकेशन के लिए कई मशीनों को बनाए रखना महंगा, रखरखाव के लिहाज़ से जटिल और स्केल करना कठिन है। संक्षेप में, यह कई वास्तविक जीवन परिदृश्यों में व्यावहारिक नहीं है।

पृथक वातावरण बनाने का एक और विकल्प वर्चुअल मशीनें हैं। यहाँ भी कंटेनरों को तरजीह दी जाती है क्योंकि इन्हें कम संसाधनों की आवश्यकता होती है, ये बहुत पोर्टेबल होते हैं और तेज़ी से शुरू किए जा सकते हैं।

वर्चुअल मशीन और कंटेनर
वर्चुअल मशीन और कंटेनर

क्या आप वर्चुअल मशीनों और कंटेनरों के बीच के अंतर पहचान सकते हैं? जब आप कंटेनरों का उपयोग करते हैं, तो आपको गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता नहीं होती। कल्पना कीजिए कि एक वर्चुअल मशीन पर 10 ऐप्लिकेशन चल रहे हैं। इसमें 10 गेस्ट ऑपरेटिंग सिस्टम की आवश्यकता होगी, जबकि कंटेनरों के उपयोग पर इसकी आवश्यकता नहीं होती।

Docker

Docker एक कंपनी है जो ऐसा सॉफ़्टवेयर (जिसे Docker भी कहा जाता है) प्रदान करती है जिससे उपयोगकर्ता कंटेनर बना, चला और प्रबंधित कर सकते हैं। हालाँकि Docker के कंटेनर सबसे सामान्य हैं, LXD और LXC जैसे अन्य कम प्रसिद्ध विकल्प भी कंटेनर समाधान प्रदान करते हैं।

Docker एक ऐसा टूल है जिसे कंटेनरों का उपयोग करके ऐप्लिकेशन बनाना, डिप्लॉय करना और चलाना आसान बनाने के लिए डिज़ाइन किया गया है। कंटेनरों का उपयोग किसी ऐप्लिकेशन को उसकी सभी आवश्यक घटकों, जैसे लाइब्रेरी और अन्य डिपेंडेंसीज़, के साथ पैकेज करने और उसे एक ही पैकेज के रूप में शिप करने के लिए किया जाता है।

कई ऐप्लिकेशनों की होस्टिंग के लिए Docker के साथ वही आर्किटेक्चर
कई ऐप्लिकेशनों की होस्टिंग के लिए Docker के साथ वही आर्किटेक्चर

हाइप से परे

आखिरकार, Docker बस एक फ़ाइल है जिसमें कुछ निर्देशों की पंक्तियाँ होती हैं, जिसे आपके प्रोजेक्ट फ़ोल्डर में "Dockerfile" नाम से सेव किया जाता है।

Docker फ़ाइलों के बारे में सोचने का एक और तरीका यह है कि वे आपकी अपनी रसोई में खोजी गई रेसिपीज़ की तरह हैं। जब आप वे रेसिपीज़ किसी और के साथ साझा करते हैं और वे बिल्कुल वही निर्देशों का पालन करते हैं, तो वे वही डिश बना पाते हैं। इसी तरह, आप अपनी Docker फ़ाइलें अन्य लोगों के साथ साझा कर सकते हैं, जो फिर उन विशेष Docker फ़ाइलों के आधार पर इमेज बना सकते हैं और कंटेनर चला सकते हैं।

Kubernetes

2014 में Google द्वारा विकसित, Kubernetes कंटेनराइज़्ड ऐप्लिकेशनों के प्रबंधन के लिए एक शक्तिशाली, ओपन-सोर्स प्रणाली है। सरल शब्दों में, Kubernetes मशीनों के एक क्लस्टर में कंटेनराइज़्ड ऐप्लिकेशनों को चलाने और समन्वयित करने की प्रणाली है। यह प्लेटफ़ॉर्म कंटेनराइज़्ड ऐप्लिकेशनों के जीवनचक्र को पूरी तरह से मैनेज करने के लिए डिज़ाइन किया गया है।

विशेषताएँ

  • लोड बैलेंसिंग: कंटेनरों के बीच अपने-आप लोड वितरित करता है।
  • स्केलिंग: माँग बदलने पर कंटेनर जोड़कर या हटाकर स्वचालित रूप से ऊपर या नीचे स्केल करता है, जैसे पीक आवर्स, वीकेंड और छुट्टियों के दौरान।
  • स्टोरेज: किसी ऐप्लिकेशन की कई इंस्टैंसेज़ के साथ स्टोरेज को सुसंगत रखता है।

जब आपके पास Docker है तो Kubernetes की आवश्यकता क्यों?

ऐसा परिदृश्य कल्पना करें जहाँ आपको एंटरप्राइज़-स्तरीय ML ऐप्लिकेशन को दिन-रात बदलते वर्कलोड के साथ सपोर्ट करने के लिए, कई मशीनों पर अनेक Docker कंटेनर चलाने हों। जितना सरल यह सुनाई देता है, हाथ से करना यह बहुत काम है।

आपको सही समय पर सही कंटेनर शुरू करने, यह पता लगाने कि वे एक-दूसरे से कैसे बात करेंगे, स्टोरेज संबंधी बातों को संभालने और असफल कंटेनरों या हार्डवेयर से निपटने की आवश्यकता होती है। Kubernetes इसी समस्या का समाधान कर रहा है, बड़ी संख्या में कंटेनरों को सामंजस्य से साथ काम करने देकर और परिचालन बोझ घटाकर।

Google Kubernetes Engine, Google Cloud Platform पर Google के ओपन-सोर्स Kubernetes का एक इम्प्लीमेंटेशन है। GKE के अन्य लोकप्रिय विकल्प हैं Amazon ECS और Microsoft Azure Kubernetes Service।

शब्दों का त्वरित पुनरावलोकन:

  • कंटेनर ऐसा सॉफ़्टवेयर है जो किसी ऐप्लिकेशन और उसकी सभी डिपेंडेंसीज़ को पैकेज करता है ताकि ऐप्लिकेशन एक कंप्यूटिंग वातावरण से दूसरे में विश्वसनीय रूप से चल सके।
  • Docker कंटेनरों को बनाने और प्रबंधित करने के लिए उपयोग होने वाला सॉफ़्टवेयर है।
  • Kubernetes क्लस्टर्ड वातावरण में कंटेनराइज़्ड ऐप्लिकेशनों के प्रबंधन के लिए एक ओपन-सोर्स प्रणाली है।
Docker और Kubernetes डिप्लॉयमेंट
Docker और Kubernetes डिप्लॉयमेंट

Python में MLOps फ्रेमवर्क्स और लाइब्रेरीज़

MLflow

MLflow एक ओपन-सोर्स प्लेटफ़ॉर्म है जो ML जीवनचक्र — एक्सपेरिमेंटेशन, पुनरुत्पादनयोग्यता, डिप्लॉयमेंट और सेंट्रल मॉडल रजिस्ट्री — का प्रबंधन करता है। MLflow फिलहाल MLflow Tracking, MLflow Projects, MLflow Models और Model Registry प्रदान करता है।

Metaflow

Metaflow एक मानव-अनुकूल Python लाइब्रेरी है जो वैज्ञानिकों और इंजीनियरों को वास्तविक जीवन के डेटा साइंस प्रोजेक्ट बनाने और प्रबंधित करने में मदद करती है। Metaflow मूल रूप से Netflix में डेटा वैज्ञानिकों की उत्पादकता बढ़ाने के लिए विकसित किया गया था, जो क्लासिकल स्टैटिस्टिक्स से लेकर अत्याधुनिक डीप लर्निंग तक की विभिन्न परियोजनाओं पर काम करते हैं। Metaflow प्रोटोटाइप से लेकर प्रोडक्शन तक डेटा साइंस प्रोजेक्ट्स को निष्पादित करने के लिए आवश्यक इंफ्रास्ट्रक्चर स्टैक के लिए एक एकीकृत API प्रदान करता है।

Kubeflow

Kubeflow एक ओपन-सोर्स, मशीन लर्निंग प्लेटफ़ॉर्म है, जिसे Kubernetes पर चलने वाले जटिल वर्कफ़्लोज़ को ऑर्केस्ट्रेट करने के लिए मशीन लर्निंग पाइपलाइनों को सक्षम करने हेतु डिज़ाइन किया गया है। Kubeflow, Google की TensorFlow मॉडलों को डिप्लॉय करने की आंतरिक विधि TensorFlow Extended पर आधारित है।

Kedro

Kedro पुनरुत्पादनयोग्य, अनुरक्षित और मॉड्यूलर डेटा साइंस कोड बनाने के लिए एक ओपन-सोर्स Python फ्रेमवर्क है। यह सॉफ्टवेयर इंजीनियरिंग की श्रेष्ठ प्रक्रियाओं से अवधारणाएँ उधार लेता है और उन्हें मशीन लर्निंग कोड पर लागू करता है; लागू अवधारणाओं में मॉड्युलैरिटी, सेपरेशन ऑफ कंसर्न्स और वर्ज़निंग शामिल हैं।

FastAPI

FastAPI Python में RESTful API विकसित करने के लिए एक वेब फ्रेमवर्क है। FastAPI, Pydantic और टाइप हिंट्स पर आधारित है ताकि डेटा को वैलिडेट, सीरियलाइज़ और डी-सीरियलाइज़ किया जा सके, और यह OpenAPI दस्तावेज़ अपने-आप जेनरेट करता है।

ZenML

ZenML एक एक्स्टेंसिबल, ओपन-सोर्स MLOps फ्रेमवर्क है जो प्रोडक्शन-रेडी मशीन लर्निंग पाइपलाइंस बनाने में मदद करता है। डेटा वैज्ञानिकों के लिए बना, इसका सिंटैक्स सरल और लचीला है, यह क्लाउड और टूल-अज्ञेयवादी है, और इसमें ML वर्कफ़्लोज़ के अनुरूप इंटरफ़ेस/एब्स्ट्रैक्शंस हैं।

उदाहरण: एंड-टू-एंड पाइपलाइन विकास, डिप्लॉयमेंट, और MLOps

समस्या सेटअप

एक बीमा कंपनी अस्पताल में भर्ती के समय जनसांख्यिकीय और बुनियादी स्वास्थ्य-जोखिम मेट्रिक्स का उपयोग करके, रोगियों के शुल्क का बेहतर पूर्वानुमान लगाकर अपने कैश फ़्लो पूर्वानुमान में सुधार करना चाहती है।

डेटा स्रोत
डेटा स्रोत

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

  • डिप्लॉयमेंट के लिए एक मशीन लर्निंग पाइपलाइन को ट्रेन और विकसित करना (सरल लीनियर रिग्रेशन मॉडल)।
  • Flask फ्रेमवर्क का उपयोग करके वेब ऐप बनाना। यह प्रशिक्षित ML पाइपलाइन का उपयोग करके नए डेटा पॉइंट्स पर रीयल-टाइम में प्रीडिक्शन जेनरेट करेगा (इस ट्यूटोरियल का फोकस फ्रंट-एंड कोड नहीं है)।
  • Docker इमेज और कंटेनर बनाना।
  • कंटेनर को Azure Container Registry (ACR) पर पब्लिश करना।
  • कंटेनर में वेब ऐप को ACR पर पब्लिश करके डिप्लॉय करना। डिप्लॉय होने के बाद यह सार्वजनिक रूप से उपलब्ध हो जाएगा और एक वेब URL के माध्यम से एक्सेस किया जा सकेगा।

मशीन लर्निंग पाइपलाइन

मैं हमारे वेब ऐप का हिस्सा बनने के लिए उपयोग की जाने वाली मशीन लर्निंग पाइपलाइन को ट्रेन और विकसित करने हेतु Python में PyCaret का उपयोग करूँगा। आप कोई भी फ्रेमवर्क उपयोग कर सकते हैं क्योंकि आगे के चरण इस पर निर्भर नहीं हैं।

# load dataset
from pycaret.datasets import get_data
insurance = get_data('insurance')

# init environment
from pycaret.regression import *
r1 = setup(insurance, target = 'charges', session_id = 123,
           normalize = True,
           polynomial_features = True, trigonometry_features = True,
           feature_interaction=True,
           bin_numeric_features= ['age', 'bmi'])

# train a model
lr = create_model('lr')

# save pipeline/model
save_model(lr, model_name = 'c:/username/pycaret-deployment-azure/deployment_28042020')

जब आप PyCaret में कोई मॉडल सेव करते हैं, तो setup फ़ंक्शन में परिभाषित कॉन्फ़िगरेशन के आधार पर पूरी ट्रांसफ़ॉर्मेशन पाइपलाइन बन जाती है। सभी आपसी निर्भरताएँ अपने-आप ऑर्केस्ट्रेट हो जाती हैं। 'deployment_28042020' वेरिएबल में संग्रहीत पाइपलाइन और मॉडल देखें:

PyCaret में मॉडल

फ़्रंट-एंड वेब ऐप्लिकेशन

यह ट्यूटोरियल Flask ऐप्लिकेशन बनाने पर केंद्रित नहीं है। इसे यहाँ केवल पूर्णता के लिए शामिल किया गया है। अब जब हमारी मशीन लर्निंग पाइपलाइन तैयार है, हमें ऐसा वेब ऐप्लिकेशन चाहिए जो हमारी प्रशिक्षित पाइपलाइन को पढ़ सके ताकि नए डेटा पॉइंट्स की भविष्यवाणी की जा सके। इस ऐप्लिकेशन के दो भाग हैं:

  • फ़्रंट-एंड (HTML का उपयोग करके डिज़ाइन किया गया)
  • बैक-एंड (Flask का उपयोग करके विकसित)

फ़्रंट-एंड कुछ इस प्रकार दिखता है:

फ़्रंट-एंड वेब ऐप्लिकेशन

इस ऐप्लिकेशन का फ़्रंट-एंड वास्तव में कुछ CSS स्टाइलिंग के साथ सरल HTML है। यदि आप कोड देखना चाहते हैं, तो इस रिपो को देखें। अब जब हमारे पास पूरी तरह से कार्यात्मक वेब ऐप्लिकेशन है, तो हम Docker का उपयोग करके ऐप्लिकेशन को कंटेनराइज़ करने की प्रक्रिया शुरू कर सकते हैं।

ऐप्लिकेशन का बैक-एंड

ऐप्लिकेशन का बैक-एंड app.py नामक Python फ़ाइल है। यह Flask फ्रेमवर्क का उपयोग करके बनाया गया है।

from flask import Flask,request, url_for, redirect, render_template, jsonify
from pycaret.regression import *
import pandas as pd
import pickle
import numpy as np

app = Flask(__name__)

model = load_model('deployment_28042020')
cols = ['age', 'sex', 'bmi', 'children', 'smoker', 'region']

@app.route('/')
def home():
    return render_template("home.html")

@app.route('/predict',methods=['POST'])
def predict():
    int_features = [x for x in request.form.values()]
    final = np.array(int_features)
    data_unseen = pd.DataFrame([final], columns = cols)
    prediction = predict_model(model, data=data_unseen, round = 0)
    prediction = int(prediction.Label[0])
    return render_template('home.html',pred='Expected Bill will be {}'.format(prediction))

@app.route('/predict_api',methods=['POST'])
def predict_api():
    data = request.get_json(force=True)
    data_unseen = pd.DataFrame([data])
    prediction = predict_model(model, data=data_unseen)
    output = prediction.Label[0]
    return jsonify(output)

if __name__ == '__main__':
    app.run(debug=True)

Docker कंटेनर

यदि आप Windows का उपयोग कर रहे हैं तो आपको Windows के लिए Docker इंस्टॉल करना होगा। यदि आप Ubuntu का उपयोग कर रहे हैं, तो Docker डिफ़ॉल्ट रूप से आता है और इंस्टॉलेशन की आवश्यकता नहीं है।

अपने ऐप्लिकेशन को कंटेनराइज़ करने का पहला चरण उसी फ़ोल्डर/डायरेक्टरी में Dockerfile लिखना है जहाँ आपका ऐप्लिकेशन है। Dockerfile बस निर्देशों का एक सेट वाली फ़ाइल है। इस प्रोजेक्ट के लिए Dockerfile ऐसा दिखता है:

FROM python:3.7

RUN pip install virtualenv
ENV VIRTUAL_ENV=/venv
RUN virtualenv venv -p python3
ENV PATH="VIRTUAL_ENV/bin:$PATH"

WORKDIR /app
ADD . /app

# install dependencies
RUN pip install -r requirements.txt

# expose port
EXPOSE 5000

# run application
CMD ["python", "app.py"]

Dockerfile केस-सेंसिटिव है और अन्य प्रोजेक्ट फ़ाइलों के साथ प्रोजेक्ट फ़ोल्डर में होना चाहिए। Dockerfile का कोई एक्सटेंशन नहीं होता और इसे किसी भी एडिटर से बनाया जा सकता है। हमने इसे बनाने के लिए Visual Studio Code का उपयोग किया है।

क्लाउड डिप्लॉयमेंट

Dockerfile को सही ढंग से सेटअप करने के बाद हम इस फ़ाइल से Docker इमेज बनाने के लिए कुछ कमांड लिखेंगे, लेकिन पहले हमें उस इमेज को होस्ट करने के लिए एक सेवा चाहिए। इस उदाहरण में, हम अपने ऐप्लिकेशन की होस्टिंग के लिए Microsoft Azure का उपयोग करेंगे।

Azure Container Registry

यदि आपके पास Microsoft Azure खाता नहीं है या आपने पहले इसका उपयोग नहीं किया है, तो आप निःशुल्क साइन अप कर सकते हैं। पहली बार साइन अप करने पर आपको पहले 30 दिनों के लिए निःशुल्क क्रेडिट मिलता है। आप उस क्रेडिट का उपयोग Azure पर वेब ऐप बनाने और डिप्लॉय करने के लिए कर सकते हैं। साइन अप करने के बाद, ये चरण अपनाएँ:

  • https://portal.azure.com पर लॉगिन करें
  • Create a Resource पर क्लिक करें
  • Container Registry खोजें और Create पर क्लिक करें
  • Subscription, Resource group और Registry name चुनें (हमारे मामले में: pycaret.azurecr.io हमारा रजिस्ट्री नाम है)
Azure Container Registry

रजिस्ट्री बन जाने के बाद, पहला चरण कमांड लाइन का उपयोग करके Docker इमेज बनाना है। प्रोजेक्ट फ़ोल्डर पर जाएँ और निम्न कोड चलाएँ:

docker build -t pycaret.azurecr.io/pycaret-insurance:latest .
Docker इमेज बनाएँ
  • pycaret.azurecr.io वह रजिस्ट्री नाम है जो आपको Azure पोर्टल पर संसाधन बनाते समय मिलता है
  • pycaret-insurance इमेज का नाम है और latest टैग है; आप इसे अपनी इच्छानुसार रख सकते हैं

Docker इमेज से कंटेनर चलाएँ

अब जबकि इमेज बन गई है, हम एक कंटेनर लोकली चलाकर ऐप्लिकेशन का परीक्षण करेंगे, इससे पहले कि हम इसे Azure Container Registry पर पुश करें। कंटेनर को लोकली चलाने के लिए, निम्न कोड निष्पादित करें:

docker run -d -p 5000:5000 pycaret.azurecr.io/pycaret-insurance

आप अपने इंटरनेट ब्राउज़र में localhost:5000 पर जाकर ऐप को क्रियान्वित होते हुए देख सकते हैं। यह एक वेब ऐप खोल देगा।

Docker इमेज से कंटेनर चलाएँ

यदि आप यह देख पा रहे हैं, तो इसका अर्थ है कि ऐप्लिकेशन अब आपकी लोकल मशीन पर चल रहा है और अब केवल इसे क्लाउड पर पुश करना बाकी है। Azure पर डिप्लॉयमेंट के लिए आगे पढ़ें:

Azure क्रेडेंशियल्स प्रमाणित करें

कंटेनर को ACR पर अपलोड करने से पहले अंतिम चरण यह है कि अपनी लोकल मशीन पर Azure क्रेडेंशियल्स को प्रमाणित करें। ऐसा करने के लिए कमांड लाइन में निम्न कोड चलाएँ:

docker login pycaret.azurecr.io

आपसे उपयोगकर्ता नाम और पासवर्ड पूछा जाएगा। उपयोगकर्ता नाम आपकी रजिस्ट्री का नाम है (इस उदाहरण में उपयोगकर्ता नाम "pycaret" है)। आप अपना पासवर्ड उस Azure Container Registry संसाधन की एक्सेस कीज़ के अंतर्गत पा सकते हैं जो आपने बनाया है।

Azure Container Registry संसाधन

कंटेनर को Azure Container Registry पर पुश करें

अब जब आपने ACR पर प्रमाणित कर लिया है, तो आप निम्न कोड चलाकर बनाए गए कंटेनर को ACR पर पुश कर सकते हैं:

docker push pycaret.azurecr.io/pycaret-insurance:latest

कंटेनर के आकार के आधार पर, पुश कमांड को कंटेनर को क्लाउड पर ट्रांसफ़र करने में कुछ समय लग सकता है।

वेब ऐप्लिकेशन

Azure पर वेब ऐप बनाने के लिए, ये चरण अपनाएँ:

  • Azure पोर्टल पर लॉगिन करें
  • Create a resource पर क्लिक करें
  • Web app खोजें और Create पर क्लिक करें
  • अपनी ऐप्लिकेशन से अपना ACR इमेज लिंक करें
कंटेनर को Azure Container Registry पर पुश करें
वेब ऐप्लिकेशन

ऐप्लिकेशन अब Azure Web Services पर चल रहा है।

Azure Web Services पर चल रहा है।

निष्कर्ष

MLOps यह सुनिश्चित करने में मदद करता है कि डिप्लॉय किए गए मॉडल अच्छी तरह अनुरक्षित हों, अपेक्षा के अनुरूप प्रदर्शन कर रहे हों और व्यवसाय पर कोई प्रतिकूल प्रभाव न डाल रहे हों। समय के साथ मॉडल ड्रिफ्ट, या बिना मेंटेनेंस/मॉनिटरिंग के डिप्लॉय किए गए मॉडलों से उत्पन्न जोखिमों से व्यवसाय की रक्षा करने में यह भूमिका महत्वपूर्ण है।

MLOps ने LinkedIn के उभरते नौकरियों के रैंकिंग में शीर्ष स्थान प्राप्त किया, पाँच वर्षों में 9.8 गुना वृद्धि दर्ज की गई।

आप DataCamp पर नया MLOps Fundamentals स्किल ट्रैक देख सकते हैं, जो मशीन लर्निंग ऐप्लिकेशन के पूरे जीवनचक्र को कवर करता है — बिज़नेस आवश्यकताओं के एकत्रीकरण से लेकर डिज़ाइन, विकास, डिप्लॉयमेंट, संचालन और रखरखाव चरणों तक। Datacamp में एक शानदार Understanding Data Engineering कोर्स भी है। बिना किसी कोडिंग के जानें कि डेटा इंजीनियर कैसे वह बुनियाद तैयार करते हैं जो डेटा साइंस को संभव बनाती है — आज ही नामांकन करें।

विषय
मशीन लर्निंग
डेटा साइंस