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