TFX पाइपलाइन आपको अपने मशीन लर्निंग (ML) वर्कफ़्लो को ऑर्केस्ट्रेटर पर व्यवस्थित करने देती है, जैसे: Apache Airflow, Apache Beam, और Kubeflow Pipelines। पाइपलाइनें आपके वर्कफ़्लो को घटकों के अनुक्रम में व्यवस्थित करती हैं, जहाँ प्रत्येक घटक आपके ML वर्कफ़्लो में एक चरण निष्पादित करता है। TFX मानक घटक आपको आसानी से ML वर्कफ़्लो बनाना शुरू करने में मदद करने के लिए सिद्ध कार्यक्षमता प्रदान करते हैं। आप अपने वर्कफ़्लो में कस्टम घटक भी शामिल कर सकते हैं। कस्टम घटक आपको अपने ML वर्कफ़्लो का विस्तार करने देते हैं:
- निर्माण घटक जो आपकी आवश्यकताओं को पूरा करने के लिए तैयार किए गए हैं, जैसे किसी स्वामित्व प्रणाली से डेटा अंतर्ग्रहण करना।
- डेटा संवर्द्धन, अपसैंपलिंग या डाउनसैंपलिंग लागू करना।
- कॉन्फिडेंस इंटरवल या ऑटोएन्कोडर रिप्रोडक्शन एरर के आधार पर विसंगति का पता लगाना।
- अलर्टिंग और मॉनिटरिंग के लिए हेल्प डेस्क जैसी बाहरी प्रणालियों के साथ इंटरफेस करना।
- लेबल न किए गए उदाहरणों पर लेबल लागू करना।
- अपने एमएल वर्कफ़्लो में पायथन के अलावा अन्य भाषाओं के साथ निर्मित टूल को एकीकृत करना, जैसे कि आर का उपयोग करके डेटा विश्लेषण करना।
मानक घटकों और कस्टम घटकों को मिलाकर, आप एक एमएल वर्कफ़्लो बना सकते हैं जो टीएफएक्स मानक घटकों में निर्मित सर्वोत्तम प्रथाओं का लाभ उठाते हुए आपकी आवश्यकताओं को पूरा करता है।
यह मार्गदर्शिका TFX कस्टम घटकों को समझने के लिए आवश्यक अवधारणाओं और उन विभिन्न तरीकों का वर्णन करती है जिनसे आप कस्टम घटकों का निर्माण कर सकते हैं।
एक TFX घटक का एनाटॉमी
यह खंड TFX घटक की संरचना का एक उच्च-स्तरीय अवलोकन प्रदान करता है। यदि आप TFX पाइपलाइनों में नए हैं, तो TFX पाइपलाइनों को समझने के लिए मार्गदर्शिका पढ़कर मूल अवधारणाओं को जानें ।
TFX घटक एक घटक विनिर्देश और एक निष्पादक वर्ग से बने होते हैं जो एक घटक इंटरफ़ेस वर्ग में पैक किए जाते हैं।
एक घटक विनिर्देश घटक के इनपुट और आउटपुट अनुबंध को परिभाषित करता है। यह अनुबंध घटक के इनपुट और आउटपुट कलाकृतियों और घटक निष्पादन के लिए उपयोग किए जाने वाले मापदंडों को निर्दिष्ट करता है।
एक घटक का निष्पादक वर्ग घटक द्वारा किए गए कार्य के लिए कार्यान्वयन प्रदान करता है।
एक घटक इंटरफ़ेस वर्ग एक TFX पाइपलाइन में एक घटक के रूप में उपयोग के लिए निष्पादक के साथ घटक विनिर्देश को जोड़ता है।
रनटाइम पर TFX घटक
जब कोई पाइपलाइन TFX घटक चलाती है, तो घटक को तीन चरणों में निष्पादित किया जाता है:
- सबसे पहले, ड्राइवर मेटाडेटा स्टोर से आवश्यक कलाकृतियों को पुनः प्राप्त करने और उन्हें घटक में पास करने के लिए घटक विनिर्देश का उपयोग करता है।
- इसके बाद, निष्पादक घटक का कार्य करता है।
- फिर प्रकाशक मेटाडेटा स्टोर में घटक के आउटपुट को संग्रहीत करने के लिए घटक विनिर्देश और निष्पादक के परिणामों का उपयोग करता है।
अधिकांश कस्टम घटक कार्यान्वयन के लिए आपको ड्राइवर या प्रकाशक को अनुकूलित करने की आवश्यकता नहीं होती है। आमतौर पर, ड्राइवर और प्रकाशक में संशोधन केवल तभी आवश्यक होना चाहिए जब आप अपनी पाइपलाइन के घटकों और मेटाडेटा स्टोर के बीच बातचीत को बदलना चाहते हैं। यदि आप केवल अपने घटक के लिए इनपुट, आउटपुट या पैरामीटर बदलना चाहते हैं तो आपको केवल घटक विनिर्देश को संशोधित करने की आवश्यकता है।
कस्टम घटकों के प्रकार
तीन प्रकार के कस्टम घटक हैं: पायथन फ़ंक्शन-आधारित घटक, कंटेनर-आधारित घटक और पूरी तरह से कस्टम घटक। निम्नलिखित अनुभाग विभिन्न प्रकार के घटकों और उन मामलों का वर्णन करते हैं जब आपको प्रत्येक दृष्टिकोण का उपयोग करना चाहिए।
पायथन फ़ंक्शन-आधारित घटक
कंटेनर-आधारित घटकों या पूरी तरह से कस्टम घटकों की तुलना में पायथन फ़ंक्शन-आधारित घटक बनाना आसान है। घटक विनिर्देश को पाइथन फ़ंक्शन के तर्कों में टाइप एनोटेशन का उपयोग करके परिभाषित किया गया है जो वर्णन करता है कि कोई तर्क इनपुट आर्टिफैक्ट, आउटपुट आर्टिफैक्ट या पैरामीटर है या नहीं। फ़ंक्शन बॉडी घटक के निष्पादक को परिभाषित करती है। घटक इंटरफ़ेस को आपके फ़ंक्शन में @component
डेकोरेटर जोड़कर परिभाषित किया गया है।
अपने फ़ंक्शन को @component
डेकोरेटर से सजाकर और प्रकार एनोटेशन के साथ फ़ंक्शन तर्कों को परिभाषित करके, आप एक घटक विनिर्देश, एक निष्पादक और एक घटक इंटरफ़ेस के निर्माण की जटिलता के बिना एक घटक बना सकते हैं।
पायथन फ़ंक्शन-आधारित घटकों का निर्माण करना सीखें।
कंटेनर-आधारित घटक
कंटेनर-आधारित घटक किसी भी भाषा में लिखे गए कोड को आपकी पाइपलाइन में एकीकृत करने के लिए लचीलापन प्रदान करते हैं, जब तक कि आप उस कोड को डॉकर कंटेनर में निष्पादित कर सकते हैं। कंटेनर-आधारित घटक बनाने के लिए, आपको एक डॉकर कंटेनर छवि बनानी होगी जिसमें आपके घटक का निष्पादन योग्य कोड हो। फिर आपको परिभाषित करने के लिए create_container_component
फ़ंक्शन को कॉल करना होगा:
- आपके घटक विनिर्देश के इनपुट, आउटपुट और पैरामीटर।
- कंटेनर छवि और कमांड जो घटक निष्पादक चलाता है।
यह फ़ंक्शन एक घटक का एक उदाहरण देता है जिसे आप अपनी पाइपलाइन परिभाषा में शामिल कर सकते हैं।
पायथन फ़ंक्शन-आधारित घटक बनाने की तुलना में यह दृष्टिकोण अधिक जटिल है, क्योंकि इसके लिए आपके कोड को कंटेनर छवि के रूप में पैकेजिंग की आवश्यकता होती है। यह दृष्टिकोण आपकी पाइपलाइन में गैर-पायथन कोड को शामिल करने के लिए या जटिल रनटाइम वातावरण या निर्भरता वाले पायथन घटकों के निर्माण के लिए सबसे उपयुक्त है।
कंटेनर-आधारित घटकों का निर्माण करना सीखें .
पूरी तरह से कस्टम घटक
पूरी तरह से कस्टम घटक आपको घटक विनिर्देश, निष्पादक और घटक इंटरफ़ेस वर्गों को परिभाषित करके घटकों का निर्माण करने देते हैं। यह दृष्टिकोण आपको अपनी आवश्यकताओं के अनुरूप मानक घटक का पुन: उपयोग और विस्तार करने देता है।
यदि किसी मौजूदा घटक को आपके द्वारा विकसित किए जा रहे कस्टम घटक के समान इनपुट और आउटपुट के साथ परिभाषित किया गया है, तो आप मौजूदा घटक के निष्पादक वर्ग को आसानी से ओवरराइड कर सकते हैं। इसका मतलब है कि आप एक घटक विनिर्देश का पुन: उपयोग कर सकते हैं और एक नया निष्पादक लागू कर सकते हैं जो मौजूदा घटक से प्राप्त होता है। इस तरह, आप मौजूदा घटकों में निर्मित कार्यक्षमता का पुन: उपयोग करते हैं और केवल आवश्यक कार्यक्षमता को लागू करते हैं।
हालांकि यदि आपके नए घटक के इनपुट और आउटपुट अद्वितीय हैं, तो आप एक पूरी तरह से नए घटक विनिर्देश को परिभाषित कर सकते हैं।
मौजूदा घटक विनिर्देशों और निष्पादकों का पुन: उपयोग करने के लिए यह दृष्टिकोण सर्वोत्तम है।
पूरी तरह से कस्टम घटक बनाने का तरीका जानें .