एमएल के लिए डेटा प्रीप्रोसेसिंग: विकल्प और सिफारिशें

यह दस्तावेज़ दो-भाग वाली श्रृंखला में पहला है जो पर्यवेक्षित शिक्षण कार्यों पर ध्यान देने के साथ मशीन लर्निंग (एमएल) के लिए डेटा इंजीनियरिंग और फीचर इंजीनियरिंग के विषय की पड़ताल करता है। यह पहला भाग Google क्लाउड पर एमएल पाइपलाइन में डेटा प्रीप्रोसेसिंग के लिए सर्वोत्तम प्रथाओं पर चर्चा करता है। दस्तावेज़ डेटा तैयार करने, मॉडल को प्रशिक्षित करने और भविष्यवाणी के लिए मॉडल की सेवा करने के लिए TensorFlow और ओपन सोर्स TensorFlow Transform ( tf.Transform ) लाइब्रेरी का उपयोग करने पर केंद्रित है। यह दस्तावेज़ एमएल के लिए प्रीप्रोसेसिंग डेटा की चुनौतियों पर प्रकाश डालता है, और यह Google क्लाउड पर प्रभावी ढंग से डेटा परिवर्तन करने के लिए विकल्पों और परिदृश्यों का वर्णन करता है।

यह दस्तावेज़ मानता है कि आप BigQuery , Dataflow , Vertex AI और TensorFlow Keras API से परिचित हैं।

दूसरा दस्तावेज़, Google क्लाउड के साथ एमएल के लिए डेटा प्रीप्रोसेसिंग , tf.Transform पाइपलाइन को कार्यान्वित करने के तरीके के लिए चरण-दर-चरण ट्यूटोरियल प्रदान करता है।

परिचय

एमएल आपको डेटा में जटिल और संभावित रूप से उपयोगी पैटर्न स्वचालित रूप से ढूंढने में मदद करता है। इन पैटर्न को एक एमएल मॉडल में संघनित किया जाता है जिसे फिर नए डेटा बिंदुओं पर उपयोग किया जा सकता है - एक प्रक्रिया जिसे भविष्यवाणी करना या अनुमान लगाना कहा जाता है।

एमएल मॉडल बनाना एक बहुचरणीय प्रक्रिया है। प्रत्येक चरण अपनी तकनीकी और वैचारिक चुनौतियाँ प्रस्तुत करता है। यह दो-भाग श्रृंखला पर्यवेक्षित शिक्षण कार्यों और लक्ष्य चर के लिए शक्तिशाली पूर्वानुमानित संकेत बनाने के लिए स्रोत डेटा को चुनने, बदलने और बढ़ाने की प्रक्रिया पर केंद्रित है। ये ऑपरेशन डोमेन ज्ञान को डेटा विज्ञान तकनीकों के साथ जोड़ते हैं। संचालन फीचर इंजीनियरिंग का सार है।

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

यह दस्तावेज़ फ़ीचर इंजीनियरिंग संचालन की ग्रैन्युलैरिटी के विभिन्न स्तरों के लिए इन चुनौतियों पर चर्चा करता है: उदाहरण-स्तर, पूर्ण-पास, और समय-विंडो एकत्रीकरण। यह दस्तावेज़ Google क्लाउड पर एमएल के लिए डेटा परिवर्तन करने के विकल्पों और परिदृश्यों का भी वर्णन करता है।

यह दस्तावेज़ TensorFlow ट्रांसफॉर्म ( tf.Transform ) का एक अवलोकन भी प्रदान करता है, जो TensorFlow के लिए एक लाइब्रेरी है जो आपको डेटा प्रीप्रोसेसिंग पाइपलाइनों के माध्यम से इंस्टेंस-स्तर और पूर्ण-पास डेटा परिवर्तन दोनों को परिभाषित करने देता है। इन पाइपलाइनों को अपाचे बीम के साथ निष्पादित किया जाता है, और वे ऐसी कलाकृतियाँ बनाते हैं जो आपको भविष्यवाणी के दौरान वही परिवर्तन लागू करने देती हैं जैसे मॉडल पेश करते समय होता है।

एमएल के लिए प्रीप्रोसेसिंग डेटा

यह अनुभाग डेटा प्रीप्रोसेसिंग संचालन और डेटा तैयारी के चरणों का परिचय देता है। यह प्रीप्रोसेसिंग ऑपरेशन के प्रकार और उनकी ग्रैन्युलैरिटी पर भी चर्चा करता है।

फ़ीचर इंजीनियरिंग की तुलना में डेटा इंजीनियरिंग

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

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

निम्नलिखित आरेख, चित्र 1, उन चरणों को दर्शाता है जो पूर्व-संसाधित डेटा तैयार करने में शामिल हैं:

फ़्लो आरेख कच्चे डेटा को तैयार डेटा में स्थानांतरित करते हुए इंजीनियर्ड सुविधाओं की ओर ले जाता हुआ दिखाता है।
चित्र 1. कच्चे डेटा से तैयार डेटा तक इंजीनियर्ड फीचर्स से लेकर मशीन लर्निंग तक डेटा का प्रवाह।

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

प्रीप्रोसेसिंग ऑपरेशन

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

संरचित डेटा के लिए, डेटा प्रीप्रोसेसिंग संचालन में निम्नलिखित शामिल हैं:

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

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

  • टेक्स्ट दस्तावेज़ों के लिए: स्टेमिंग और लेमेटाइज़ेशन , टीएफ-आईडीएफ गणना, और एन-ग्राम निष्कर्षण, एम्बेडिंग लुकअप।
  • छवियों के लिए: क्लिपिंग, आकार बदलना, क्रॉप करना, गॉसियन ब्लर और कैनरी फ़िल्टर।
  • सभी प्रकार के डेटा (पाठ और छवियों सहित) के लिए: ट्रांसफर लर्निंग , जो पूरी तरह से प्रशिक्षित मॉडल की सभी-लेकिन-अंतिम परतों को एक फीचर इंजीनियरिंग चरण के रूप में मानता है।

प्रीप्रोसेसिंग ग्रैन्युलैरिटी

यह अनुभाग डेटा परिवर्तनों के प्रकारों की विस्तृतता पर चर्चा करता है। यह दर्शाता है कि प्रशिक्षण डेटा पर लागू होने वाले परिवर्तनों का उपयोग करके भविष्यवाणियों के लिए नए डेटा बिंदु तैयार करते समय यह परिप्रेक्ष्य महत्वपूर्ण क्यों है।

ऑपरेशन ग्रैन्युलैरिटी के आधार पर प्रीप्रोसेसिंग और ट्रांसफॉर्मेशन ऑपरेशंस को निम्नानुसार वर्गीकृत किया जा सकता है:

  • प्रशिक्षण और भविष्यवाणी के दौरान उदाहरण-स्तरीय परिवर्तन । ये सीधे परिवर्तन हैं, जहां परिवर्तन के लिए केवल एक ही उदाहरण के मूल्यों की आवश्यकता होती है। उदाहरण के लिए, उदाहरण-स्तरीय परिवर्तनों में किसी सुविधा के मान को कुछ सीमा तक क्लिप करना, बहुपद रूप से किसी अन्य सुविधा का विस्तार करना, दो सुविधाओं को गुणा करना, या बूलियन ध्वज बनाने के लिए दो सुविधाओं की तुलना करना शामिल हो सकता है।

    इन परिवर्तनों को प्रशिक्षण और भविष्यवाणी के दौरान समान रूप से लागू किया जाना चाहिए, क्योंकि मॉडल को परिवर्तित सुविधाओं पर प्रशिक्षित किया जाएगा, न कि कच्चे इनपुट मूल्यों पर। यदि डेटा को समान रूप से परिवर्तित नहीं किया जाता है, तो मॉडल खराब व्यवहार करता है क्योंकि यह डेटा के साथ प्रस्तुत किया जाता है जिसमें मूल्यों का वितरण होता है जिसके साथ इसे प्रशिक्षित नहीं किया गया था। अधिक जानकारी के लिए, प्रीप्रोसेसिंग चुनौतियाँ अनुभाग में प्रशिक्षण-सेवारत तिरछा की चर्चा देखें।

  • प्रशिक्षण के दौरान पूर्ण-पास परिवर्तन, लेकिन भविष्यवाणी के दौरान उदाहरण-स्तरीय परिवर्तन । इस परिदृश्य में, परिवर्तन स्टेटफुल होते हैं, क्योंकि वे परिवर्तन करने के लिए कुछ पूर्व-गणना किए गए आँकड़ों का उपयोग करते हैं। प्रशिक्षण के दौरान, आप भविष्यवाणी के समय प्रशिक्षण डेटा, मूल्यांकन डेटा और नए डेटा को बदलने के लिए न्यूनतम, अधिकतम, माध्य और भिन्नता जैसी मात्राओं की गणना करने के लिए प्रशिक्षण डेटा के पूरे निकाय का विश्लेषण करते हैं।

    उदाहरण के लिए, प्रशिक्षण के लिए एक संख्यात्मक सुविधा को सामान्य करने के लिए, आप संपूर्ण प्रशिक्षण डेटा में इसके माध्य (μ) और इसके मानक विचलन (σ) की गणना करते हैं। इस गणना को पूर्ण-पास (या विश्लेषण ) ऑपरेशन कहा जाता है। जब आप भविष्यवाणी के लिए मॉडल पेश करते हैं, तो प्रशिक्षण-सेवा तिरछा से बचने के लिए एक नए डेटा बिंदु का मूल्य सामान्यीकृत किया जाता है। इसलिए, प्रशिक्षण के दौरान गणना किए गए μ और σ मानों का उपयोग फीचर मान को समायोजित करने के लिए किया जाता है, जो निम्नलिखित सरल उदाहरण-स्तरीय ऑपरेशन है:

    $$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$

    पूर्ण-पास परिवर्तनों में निम्नलिखित शामिल हैं:

    • प्रशिक्षण डेटासेट से गणना की गई न्यूनतम और अधिकतम का उपयोग करके मिनमैक्स संख्यात्मक सुविधाओं को स्केल करता है।
    • प्रशिक्षण डेटासेट पर गणना की गई μ और σ का उपयोग करके मानक स्केलिंग (जेड-स्कोर सामान्यीकरण) संख्यात्मक विशेषताएं।
    • मात्राओं का उपयोग करके संख्यात्मक विशेषताओं को बकेटाइज़ करना।
    • माध्यिका (संख्यात्मक विशेषताएँ) या मोड (श्रेणीबद्ध विशेषताएँ) का उपयोग करके लुप्त मान लगाना।
    • किसी इनपुट श्रेणीगत विशेषता के सभी विशिष्ट मान (शब्दावली) को निकालकर स्ट्रिंग्स (नाममात्र मान) को पूर्णांक (सूचकांक) में परिवर्तित करना।
    • टीएफ-आईडीएफ की गणना करने के लिए सभी दस्तावेजों (उदाहरणों) में एक शब्द (फीचर मान) की घटना की गणना करना।
    • डेटा को कम आयामी स्थान (रैखिक रूप से निर्भर सुविधाओं के साथ) में प्रोजेक्ट करने के लिए इनपुट सुविधाओं के पीसीए की गणना करना।

    आपको μ, σ, min और max जैसे आँकड़ों की गणना करने के लिए केवल प्रशिक्षण डेटा का उपयोग करना चाहिए। यदि आप इन परिचालनों के लिए परीक्षण और मूल्यांकन डेटा जोड़ते हैं, तो आप मॉडल को प्रशिक्षित करने के लिए मूल्यांकन और परीक्षण डेटा से जानकारी लीक कर रहे हैं। ऐसा करने से परीक्षण और मूल्यांकन परिणामों की विश्वसनीयता प्रभावित होती है। यह सुनिश्चित करने के लिए कि आप सभी डेटासेट में एक सुसंगत परिवर्तन लागू करते हैं, आप परीक्षण और मूल्यांकन डेटा को बदलने के लिए प्रशिक्षण डेटा से गणना किए गए समान आंकड़ों का उपयोग करते हैं।

  • प्रशिक्षण और भविष्यवाणी के दौरान ऐतिहासिक एकत्रीकरण । इसमें पूर्वानुमान कार्य के लिए इनपुट सिग्नल के रूप में व्यावसायिक एकत्रीकरण, व्युत्पत्ति और झंडे बनाना शामिल है - उदाहरण के लिए, प्रवृत्ति मॉडल बनाने के लिए ग्राहकों के लिए पुनरावृत्ति, आवृत्ति और मौद्रिक (आरएफएम) मेट्रिक्स बनाना। इस प्रकार की सुविधाओं को मॉडल प्रशिक्षण, बैच स्कोरिंग और ऑनलाइन भविष्यवाणी सेवा के दौरान उपयोग करने के लिए फीचर स्टोर में पूर्व-गणना और संग्रहीत किया जा सकता है। आप प्रशिक्षण और भविष्यवाणी से पहले इन एकत्रीकरणों में अतिरिक्त फीचर इंजीनियरिंग (उदाहरण के लिए, परिवर्तन और ट्यूनिंग) भी कर सकते हैं।

  • प्रशिक्षण के दौरान ऐतिहासिक एकत्रीकरण, लेकिन भविष्यवाणी के दौरान वास्तविक समय का एकत्रीकरण । इस दृष्टिकोण में समय के साथ वास्तविक समय के मूल्यों को सारांशित करके एक सुविधा बनाना शामिल है। इस दृष्टिकोण में, एकत्रित किए जाने वाले उदाहरणों को अस्थायी विंडो क्लॉज के माध्यम से परिभाषित किया जाता है। उदाहरण के लिए, आप इस दृष्टिकोण का उपयोग कर सकते हैं यदि आप एक ऐसे मॉडल को प्रशिक्षित करना चाहते हैं जो अंतिम 5 मिनट, अंतिम 10 मिनट, अंतिम 30 मिनट और अन्य में मार्ग के ट्रैफ़िक मेट्रिक्स के आधार पर टैक्सी यात्रा के समय का अनुमान लगाता है। अंतराल. आप पिछले 3 मिनट में गणना किए गए तापमान और कंपन मूल्यों की चलती औसत के आधार पर इंजन भाग की विफलता की भविष्यवाणी करने के लिए भी इस दृष्टिकोण का उपयोग कर सकते हैं। हालाँकि इन एकत्रीकरणों को प्रशिक्षण के लिए ऑफ़लाइन तैयार किया जा सकता है, लेकिन इनकी गणना सेवा के दौरान डेटा स्ट्रीम से वास्तविक समय में की जाती है।

    अधिक सटीक रूप से, जब आप प्रशिक्षण डेटा तैयार करते हैं, यदि एकत्रित मूल्य कच्चे डेटा में नहीं है, तो डेटा इंजीनियरिंग चरण के दौरान मूल्य बनाया जाता है। कच्चा डेटा आमतौर पर (entity, timestamp, value) के प्रारूप के साथ डेटाबेस में संग्रहीत किया जाता है। पिछले उदाहरणों में, entity टैक्सी मार्गों के लिए मार्ग खंड पहचानकर्ता और इंजन विफलता के लिए इंजन भाग पहचानकर्ता है। आप (entity, time_index, aggregated_value_over_time_window) गणना करने के लिए विंडोिंग ऑपरेशंस का उपयोग कर सकते हैं और अपने मॉडल प्रशिक्षण के लिए इनपुट के रूप में एकत्रीकरण सुविधाओं का उपयोग कर सकते हैं।

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

Google क्लाउड पर एमएल पाइपलाइन

यह अनुभाग प्रबंधित सेवाओं का उपयोग करके Google क्लाउड पर TensorFlow ML मॉडल को प्रशिक्षित और सेवा देने के लिए एक विशिष्ट एंड-टू-एंड पाइपलाइन के मुख्य घटकों पर चर्चा करता है। इसमें इस बात पर भी चर्चा की गई है कि आप डेटा प्रीप्रोसेसिंग संचालन की विभिन्न श्रेणियों को कहां लागू कर सकते हैं, और ऐसे परिवर्तनों को लागू करते समय आपके सामने आने वाली सामान्य चुनौतियाँ क्या हो सकती हैं। tf.Transform कैसे काम करता है अनुभाग दिखाता है कि TensorFlow Transform लाइब्रेरी इन चुनौतियों का समाधान करने में कैसे मदद करती है।

उच्च स्तरीय वास्तुकला

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

डेटा प्रोसेसिंग के चरणों को दर्शाने वाला आर्किटेक्चर आरेख।
चित्र 2. एमएल प्रशिक्षण और Google क्लाउड पर सेवा के लिए उच्च स्तरीय वास्तुकला।

पाइपलाइन में निम्नलिखित चरण होते हैं:

  1. कच्चा डेटा आयात करने के बाद, सारणीबद्ध डेटा को BigQuery में संग्रहीत किया जाता है, और चित्र, ऑडियो और वीडियो जैसे अन्य डेटा को क्लाउड स्टोरेज में संग्रहीत किया जाता है। इस श्रृंखला का दूसरा भाग उदाहरण के तौर पर BigQuery में संग्रहीत सारणीबद्ध डेटा का उपयोग करता है।
  2. डेटा इंजीनियरिंग (तैयारी) और फीचर इंजीनियरिंग को डेटाफ़्लो का उपयोग करके बड़े पैमाने पर निष्पादित किया जाता है। यह निष्पादन एमएल-तैयार प्रशिक्षण, मूल्यांकन और परीक्षण सेट तैयार करता है जो क्लाउड स्टोरेज में संग्रहीत होते हैं। आदर्श रूप से, इन डेटासेट को TFRecord फ़ाइलों के रूप में संग्रहीत किया जाता है, जो कि TensorFlow गणनाओं के लिए अनुकूलित प्रारूप है।
  3. वर्टेक्स एआई ट्रेनिंग के लिए एक टेन्सरफ्लो मॉडल ट्रेनर पैकेज सबमिट किया जाता है, जो मॉडल को प्रशिक्षित करने के लिए पिछले चरणों से प्रीप्रोसेस्ड डेटा का उपयोग करता है। इस चरण का आउटपुट एक प्रशिक्षित TensorFlow SavedModel है जिसे क्लाउड स्टोरेज में निर्यात किया जाता है।
  4. प्रशिक्षित TensorFlow मॉडल को Vertex AI Prediction में एक ऐसी सेवा के रूप में तैनात किया गया है जिसमें REST API है ताकि इसका उपयोग ऑनलाइन भविष्यवाणियों के लिए किया जा सके। उसी मॉडल का उपयोग बैच पूर्वानुमान कार्यों के लिए भी किया जा सकता है।
  5. मॉडल को REST API के रूप में तैनात करने के बाद, क्लाइंट ऐप्स और आंतरिक सिस्टम कुछ डेटा बिंदुओं के साथ अनुरोध भेजकर और पूर्वानुमानों के साथ मॉडल से प्रतिक्रियाएं प्राप्त करके एपीआई को लागू कर सकते हैं।
  6. इस पाइपलाइन को व्यवस्थित करने और स्वचालित करने के लिए, आप डेटा तैयारी, मॉडल प्रशिक्षण और मॉडल परिनियोजन चरणों को लागू करने के लिए शेड्यूलर के रूप में वर्टेक्स एआई पाइपलाइन का उपयोग कर सकते हैं।

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

प्रीप्रोसेसिंग कहां करें

चित्र 2 में, लेबल A, B, और C दिखाते हैं कि डेटा प्रीप्रोसेसिंग ऑपरेशन BigQuery, Dataflow, या TensorFlow में हो सकते हैं। निम्नलिखित अनुभाग बताते हैं कि इनमें से प्रत्येक विकल्प कैसे काम करता है।

विकल्प ए: बिगक्वेरी

आमतौर पर, निम्नलिखित कार्यों के लिए BigQuery में तर्क लागू किया जाता है:

  • नमूनाकरण: डेटा से यादृच्छिक रूप से एक सबसेट का चयन करना।
  • फ़िल्टरिंग: अप्रासंगिक या अमान्य उदाहरणों को हटाना।
  • विभाजन: प्रशिक्षण, मूल्यांकन और परीक्षण सेट तैयार करने के लिए डेटा को विभाजित करना।

BigQuery SQL स्क्रिप्ट का उपयोग डेटाफ्लो प्रीप्रोसेसिंग पाइपलाइन के लिए स्रोत क्वेरी के रूप में किया जा सकता है, जो चित्र 2 में डेटा प्रोसेसिंग चरण है। उदाहरण के लिए, यदि कनाडा में एक सिस्टम का उपयोग किया जाता है, और डेटा वेयरहाउस में दुनिया भर से लेनदेन होता है, तो फ़िल्टर करना केवल कनाडा में प्रशिक्षण डेटा प्राप्त करना BigQuery में सबसे अच्छा है। BigQuery में फ़ीचर इंजीनियरिंग सरल और स्केलेबल है, और इंस्टेंस-स्तरीय और ऐतिहासिक एकत्रीकरण फ़ीचर परिवर्तनों को लागू करने का समर्थन करती है।

हालाँकि, हम अनुशंसा करते हैं कि आप फीचर इंजीनियरिंग के लिए BigQuery का उपयोग केवल तभी करें जब आप अपने मॉडल का उपयोग बैच भविष्यवाणी (स्कोरिंग) के लिए करते हैं, या यदि सुविधाएँ BigQuery में पूर्व-गणना की जाती हैं, लेकिन ऑनलाइन भविष्यवाणी के दौरान उपयोग करने के लिए Vertex AI फ़ीचर स्टोर में संग्रहीत हैं। यदि आप ऑनलाइन भविष्यवाणियों के लिए मॉडल को तैनात करने की योजना बना रहे हैं, और यदि आपके पास ऑनलाइन फीचर स्टोर में इंजीनियर सुविधा नहीं है, तो आपको अन्य सिस्टम द्वारा उत्पन्न कच्चे डेटा बिंदुओं को बदलने के लिए एसक्यूएल प्रीप्रोसेसिंग संचालन को दोहराना होगा। दूसरे शब्दों में, आपको तर्क को दो बार लागू करने की आवश्यकता है: एक बार SQL में BigQuery में प्रशिक्षण डेटा को प्रीप्रोसेस करने के लिए, और दूसरी बार ऐप के तर्क में जो भविष्यवाणी के लिए ऑनलाइन डेटा बिंदुओं को प्रीप्रोसेस करने के लिए मॉडल का उपभोग करता है।

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

यदि आप अपने मॉडल का उपयोग केवल बैच भविष्यवाणी के लिए कर रहे हैं (उदाहरण के लिए, वर्टेक्स एआई बैच भविष्यवाणी का उपयोग करके), और यदि स्कोरिंग के लिए आपका डेटा BigQuery से प्राप्त किया गया है, तो आप इन प्रीप्रोसेसिंग ऑपरेशंस को BigQuery SQL स्क्रिप्ट के हिस्से के रूप में कार्यान्वित कर सकते हैं। उस स्थिति में, आप प्रशिक्षण और स्कोरिंग डेटा दोनों तैयार करने के लिए एक ही प्रीप्रोसेसिंग SQL स्क्रिप्ट का उपयोग कर सकते हैं।

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

विकल्प बी: डेटाफ़्लो

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

डेटाफ़्लो उदाहरण-स्तरीय परिवर्तन, और ऐतिहासिक और वास्तविक समय एकत्रीकरण सुविधा परिवर्तन कर सकता है। विशेष रूप से, यदि आपके एमएल मॉडल total_number_of_clicks_last_90sec जैसी इनपुट सुविधा की अपेक्षा करते हैं, तो अपाचे बीम विंडोिंग फ़ंक्शन वास्तविक समय (स्ट्रीमिंग) इवेंट डेटा (उदाहरण के लिए, क्लिक इवेंट) के समय विंडो के मूल्यों को एकत्रित करने के आधार पर इन सुविधाओं की गणना कर सकते हैं। परिवर्तनों की ग्रैन्युलैरिटी की पिछली चर्चा में, इसे "प्रशिक्षण के दौरान ऐतिहासिक एकत्रीकरण, लेकिन भविष्यवाणी के दौरान वास्तविक समय एकत्रीकरण" के रूप में संदर्भित किया गया था।

निम्नलिखित आरेख, चित्र 3, वास्तविक समय की भविष्यवाणियों के लिए स्ट्रीम डेटा को संसाधित करने में डेटाफ्लो की भूमिका को दर्शाता है।

भविष्यवाणी के लिए स्ट्रीम डेटा का उपयोग करने की वास्तुकला।
चित्र 3. डेटाफ़्लो में भविष्यवाणी के लिए स्ट्रीम डेटा का उपयोग करते हुए उच्च-स्तरीय आर्किटेक्चर।

जैसा कि चित्र 3 में दिखाया गया है, प्रसंस्करण के दौरान, डेटा पॉइंट नामक घटनाओं को पब/सब में शामिल किया जाता है। डेटाफ़्लो इन डेटा बिंदुओं का उपभोग करता है, समय के साथ समुच्चय के आधार पर सुविधाओं की गणना करता है, और फिर भविष्यवाणियों के लिए तैनात एमएल मॉडल एपीआई को कॉल करता है। फिर पूर्वानुमानों को एक आउटबाउंड पब/उप कतार में भेजा जाता है। पब/सब से, भविष्यवाणियों को निगरानी या नियंत्रण जैसे डाउनस्ट्रीम सिस्टम द्वारा उपभोग किया जा सकता है, या उन्हें मूल अनुरोध करने वाले क्लाइंट को वापस भेजा जा सकता है (उदाहरण के लिए, अधिसूचनाओं के रूप में)। वास्तविक समय में प्राप्त करने के लिए भविष्यवाणियों को क्लाउड बिगटेबल जैसे कम-विलंबता डेटा स्टोर में भी संग्रहीत किया जा सकता है। क्लाउड बिगटेबल का उपयोग इन वास्तविक समय एकत्रीकरण को जमा करने और संग्रहीत करने के लिए भी किया जा सकता है ताकि भविष्यवाणी के लिए आवश्यकता पड़ने पर उन्हें देखा जा सके।

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

अन्य विशिष्ट आर्किटेक्चर में, जैसे कि चित्र 2 में दिखाया गया आर्किटेक्चर, क्लाइंट ऐप सीधे ऑनलाइन भविष्यवाणियों के लिए तैनात मॉडल एपीआई को कॉल करता है। उस स्थिति में, यदि प्रशिक्षण डेटा तैयार करने के लिए डेटाफ़्लो में प्रीप्रोसेसिंग ऑपरेशन लागू किए जाते हैं, तो ऑपरेशन पूर्वानुमान डेटा पर लागू नहीं होते हैं जो सीधे मॉडल पर जाते हैं। इसलिए, ऑनलाइन भविष्यवाणियों की सेवा के दौरान इस तरह के परिवर्तनों को मॉडल में एकीकृत किया जाना चाहिए।

बड़े पैमाने पर आवश्यक आँकड़ों की गणना करके, पूर्ण-पास परिवर्तन करने के लिए डेटाफ़्लो का उपयोग किया जा सकता है। हालाँकि, भविष्यवाणी डेटा बिंदुओं को बदलने के लिए भविष्यवाणी के दौरान उपयोग करने के लिए इन आँकड़ों को कहीं संग्रहीत करने की आवश्यकता है। TensorFlow Transform ( tf.Transform ) लाइब्रेरी का उपयोग करके, आप इन आँकड़ों को कहीं और संग्रहीत करने के बजाय सीधे मॉडल में एम्बेड कर सकते हैं। इस दृष्टिकोण को बाद में 'tf.Transform कैसे काम करता है' में समझाया गया है।

विकल्प सी: टेंसरफ़्लो

जैसा कि चित्र 2 में दिखाया गया है, आप TensorFlow मॉडल में ही डेटा प्रीप्रोसेसिंग और ट्रांसफ़ॉर्मेशन ऑपरेशन लागू कर सकते हैं। जैसा कि चित्र में दिखाया गया है, जब मॉडल को निर्यात किया जाता है और भविष्यवाणियों के लिए तैनात किया जाता है, तो टेन्सरफ्लो मॉडल के प्रशिक्षण के लिए आप जो प्रीप्रोसेसिंग लागू करते हैं, वह मॉडल का एक अभिन्न अंग बन जाता है। TensorFlow मॉडल में परिवर्तन निम्नलिखित तरीकों में से एक में पूरा किया जा सकता है:

  • input_fn फ़ंक्शन और serving_fn फ़ंक्शन में सभी इंस्टेंस-स्तरीय परिवर्तन तर्क को कार्यान्वित करना। input_fn फ़ंक्शन एक मॉडल को प्रशिक्षित करने के लिए tf.data.Dataset API का उपयोग करके एक डेटासेट तैयार करता है। serving_fn फ़ंक्शन भविष्यवाणियों के लिए डेटा प्राप्त करता है और तैयार करता है।
  • केरस प्रीप्रोसेसिंग लेयर्स का उपयोग करके या कस्टम लेयर्स बनाकर ट्रांसफ़ॉर्मेशन कोड को सीधे अपने TensorFlow मॉडल में डालना।

serving_fn फ़ंक्शन में ट्रांसफ़ॉर्मेशन लॉजिक कोड ऑनलाइन भविष्यवाणी के लिए आपके सेव्डमॉडल के सर्विंग इंटरफ़ेस को परिभाषित करता है। यदि आप उन्हीं परिवर्तनों को लागू करते हैं जिनका उपयोग serving_fn फ़ंक्शन के परिवर्तन तर्क कोड में प्रशिक्षण डेटा तैयार करने के लिए किया गया था, तो यह सुनिश्चित करता है कि वही परिवर्तन नए पूर्वानुमान डेटा बिंदुओं पर लागू होते हैं जब उन्हें परोसा जाता है।

हालाँकि, क्योंकि TensorFlow मॉडल प्रत्येक डेटा बिंदु को स्वतंत्र रूप से या एक छोटे बैच में संसाधित करता है, आप सभी डेटा बिंदुओं से एकत्रीकरण की गणना नहीं कर सकते। परिणामस्वरूप, आपके TensorFlow मॉडल में पूर्ण-पास परिवर्तन लागू नहीं किया जा सकता है।

प्रीप्रोसेसिंग चुनौतियाँ

डेटा प्रीप्रोसेसिंग को लागू करने की प्राथमिक चुनौतियाँ निम्नलिखित हैं:

  • प्रशिक्षण-सेवा तिरछाप्रशिक्षण-सेवा तिरछा प्रशिक्षण के दौरान और सेवा के दौरान प्रभावशीलता (अनुमानित प्रदर्शन) के बीच अंतर को संदर्भित करता है। यह विषमता प्रशिक्षण और सेवा पाइपलाइनों में डेटा को संभालने के तरीके के बीच विसंगति के कारण हो सकती है। उदाहरण के लिए, यदि आपका मॉडल लघुगणकीय रूप से परिवर्तित सुविधा पर प्रशिक्षित है, लेकिन इसे सेवा के दौरान कच्ची सुविधा के साथ प्रस्तुत किया जाता है, तो भविष्यवाणी आउटपुट सटीक नहीं हो सकता है।

    यदि परिवर्तन स्वयं मॉडल का हिस्सा बन जाते हैं, तो उदाहरण-स्तरीय परिवर्तनों को संभालना आसान हो सकता है, जैसा कि विकल्प C: TensorFlow में पहले बताया गया है। उस स्थिति में, मॉडल सर्विंग इंटरफ़ेस ( serving_fn फ़ंक्शन) कच्चे डेटा की अपेक्षा करता है, जबकि मॉडल आउटपुट की गणना करने से पहले आंतरिक रूप से इस डेटा को बदल देता है। परिवर्तन वही हैं जो कच्चे प्रशिक्षण और भविष्यवाणी डेटा बिंदुओं पर लागू किए गए थे।

  • पूर्ण-पास परिवर्तन । आप अपने TensorFlow मॉडल में स्केलिंग और सामान्यीकरण परिवर्तन जैसे पूर्ण-पास परिवर्तन लागू नहीं कर सकते। पूर्ण-पास परिवर्तनों में, कुछ आँकड़े (उदाहरण के लिए, संख्यात्मक विशेषताओं को मापने के लिए max और min मान) की गणना पहले से ही प्रशिक्षण डेटा पर की जानी चाहिए, जैसा कि विकल्प बी: डेटाफ़्लो में वर्णित है। फिर मूल्यों को नए कच्चे डेटा बिंदुओं को उदाहरण-स्तरीय परिवर्तनों के रूप में बदलने के लिए भविष्यवाणी के लिए मॉडल सेवा के दौरान उपयोग करने के लिए कहीं संग्रहीत किया जाना चाहिए, जो प्रशिक्षण-सेवा तिरछा से बचाता है। आप अपने TensorFlow मॉडल में आँकड़ों को सीधे एम्बेड करने के लिए TensorFlow Transform ( tf.Transform ) लाइब्रेरी का उपयोग कर सकते हैं। इस दृष्टिकोण को बाद में 'tf.Transform कैसे काम करता है' में समझाया गया है।

  • बेहतर प्रशिक्षण दक्षता के लिए पहले से ही डेटा तैयार करना । मॉडल के हिस्से के रूप में उदाहरण-स्तरीय परिवर्तनों को लागू करने से प्रशिक्षण प्रक्रिया की दक्षता कम हो सकती है। यह गिरावट इसलिए होती है क्योंकि प्रत्येक युग में समान प्रशिक्षण डेटा पर समान परिवर्तन बार-बार लागू होते हैं। कल्पना करें कि आपके पास 1,000 सुविधाओं के साथ कच्चा प्रशिक्षण डेटा है, और आप 10,000 सुविधाओं को उत्पन्न करने के लिए उदाहरण-स्तरीय परिवर्तनों का मिश्रण लागू करते हैं। यदि आप इन परिवर्तनों को अपने मॉडल के हिस्से के रूप में कार्यान्वित करते हैं, और यदि आप मॉडल को कच्चे प्रशिक्षण डेटा खिलाते हैं, तो इन 10,000 परिचालनों को प्रत्येक उदाहरण पर एन बार लागू किया जाता है, जहां एन युगों की संख्या है। इसके अलावा, यदि आप एक्सेलेरेटर (जीपीयू या टीपीयू) का उपयोग कर रहे हैं, तो सीपीयू उन परिवर्तनों को निष्पादित करते समय वे निष्क्रिय रहते हैं, जो आपके महंगे एक्सेलेरेटर का कुशल उपयोग नहीं है।

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

    प्रशिक्षण डेटा को पहले से तैयार करने से प्रशिक्षण दक्षता में सुधार हो सकता है। हालाँकि, मॉडल के बाहर परिवर्तन तर्क को लागू करना ( विकल्प A: BigQuery या विकल्प B: डेटाफ्लो में वर्णित दृष्टिकोण) प्रशिक्षण-सेवा तिरछा के मुद्दे को हल नहीं करता है। जब तक आप प्रशिक्षण और भविष्यवाणी दोनों के लिए उपयोग किए जाने वाले फीचर स्टोर में इंजीनियर सुविधा को संग्रहीत नहीं करते हैं, तब तक परिवर्तन तर्क को भविष्यवाणी के लिए आने वाले नए डेटा बिंदुओं पर लागू करने के लिए कहीं न कहीं लागू किया जाना चाहिए, क्योंकि मॉडल इंटरफ़ेस रूपांतरित डेटा की अपेक्षा करता है। TensorFlow Transform ( tf.Transform ) लाइब्रेरी आपको इस समस्या का समाधान करने में मदद कर सकती है, जैसा कि निम्नलिखित अनुभाग में बताया गया है।

tf.Transform कैसे काम करता है

tf.Transform लाइब्रेरी उन परिवर्तनों के लिए उपयोगी है जिनके लिए पूर्ण पास की आवश्यकता होती है। tf.Transform लाइब्रेरी का आउटपुट एक TensorFlow ग्राफ़ के रूप में निर्यात किया जाता है जो प्रशिक्षण और सेवा के लिए उपयोग किए जाने वाले इंस्टेंस-स्तरीय परिवर्तन तर्क और पूर्ण-पास परिवर्तनों से गणना किए गए आंकड़ों का प्रतिनिधित्व करता है। प्रशिक्षण और सेवा दोनों के लिए एक ही ग्राफ़ का उपयोग करने से तिरछा रोका जा सकता है, क्योंकि दोनों चरणों में समान परिवर्तन लागू होते हैं। इसके अलावा, प्रशिक्षण डेटा को पहले से तैयार करने और प्रशिक्षण दक्षता में सुधार करने के लिए tf.Transform लाइब्रेरी डेटाफ़्लो पर बैच प्रोसेसिंग पाइपलाइन में बड़े पैमाने पर चल सकती है।

निम्नलिखित आरेख, चित्र 4, दिखाता है कि कैसे tf.Transform लाइब्रेरी प्रशिक्षण और भविष्यवाणी के लिए डेटा को प्रीप्रोसेस और परिवर्तित करती है। प्रक्रिया निम्नलिखित अनुभागों में वर्णित है।

आरेख कच्चे डेटा से प्रवाह को tf.Transform के माध्यम से भविष्यवाणियों में दिखा रहा है।
चित्र 4. डेटा के प्रीप्रोसेसिंग और ट्रांसफ़ॉर्मिंग के लिए tf.Transform का व्यवहार।

प्रशिक्षण और मूल्यांकन डेटा बदलें

आप tf.Transform Apache Beam API में कार्यान्वित परिवर्तन का उपयोग करके कच्चे प्रशिक्षण डेटा को प्रीप्रोसेस करते हैं, और इसे डेटाफ़्लो पर बड़े पैमाने पर चलाते हैं। प्रीप्रोसेसिंग निम्नलिखित चरणों में होती है:

  • विश्लेषण चरण: विश्लेषण चरण के दौरान, स्टेटफुल परिवर्तनों के लिए आवश्यक आँकड़े (जैसे साधन, भिन्नता और मात्राएँ) की गणना पूर्ण-पास संचालन के साथ प्रशिक्षण डेटा पर की जाती है। यह चरण ट्रांसफॉर्मेशन कलाकृतियों का एक सेट तैयार करता है, जिसमें transform_fn ग्राफ़ भी शामिल है। transform_fn ग्राफ़ एक टेन्सरफ़्लो ग्राफ़ है जिसमें उदाहरण-स्तरीय संचालन के रूप में परिवर्तन तर्क होता है। इसमें विश्लेषण चरण में गणना किए गए आँकड़े स्थिरांक के रूप में शामिल हैं।
  • ट्रांसफ़ॉर्म चरण: ट्रांसफ़ॉर्म चरण के दौरान, transform_fn ग्राफ़ को कच्चे प्रशिक्षण डेटा पर लागू किया जाता है, जहाँ गणना किए गए आँकड़ों का उपयोग डेटा रिकॉर्ड को संसाधित करने के लिए किया जाता है (उदाहरण के लिए, संख्यात्मक कॉलम को स्केल करने के लिए)।

इस तरह का दो-चरणीय दृष्टिकोण पूर्ण-पास परिवर्तन करने की प्रीप्रोसेसिंग चुनौती को संबोधित करता है।

जब मूल्यांकन डेटा पूर्व-संसाधित होता है, तो transform_fn ग्राफ में तर्क और प्रशिक्षण डेटा में विश्लेषण चरण से गणना किए गए आंकड़ों का उपयोग करके केवल उदाहरण-स्तरीय संचालन लागू किया जाता है। दूसरे शब्दों में, आप मूल्यांकन डेटा में संख्यात्मक विशेषताओं को सामान्य करने के लिए μ और σ जैसे नए आंकड़ों की गणना करने के लिए मूल्यांकन डेटा का पूर्ण-पास विश्लेषण नहीं करते हैं। इसके बजाय, आप मूल्यांकन डेटा को उदाहरण-स्तरीय फैशन में बदलने के लिए प्रशिक्षण डेटा से गणना किए गए आंकड़ों का उपयोग करते हैं।

मॉडल को प्रशिक्षित करने के लिए उपयोग किए जाने से पहले, परिवर्तित प्रशिक्षण और मूल्यांकन डेटा को डेटाफ़्लो का उपयोग करके बड़े पैमाने पर तैयार किया जाता है। यह बैच डेटा-प्रीपेरेशन प्रक्रिया प्रशिक्षण दक्षता में सुधार के लिए डेटा को तैयार करने की प्रीप्रोसेसिंग चुनौती को संबोधित करती है। जैसा कि चित्र 4 में दिखाया गया है, मॉडल आंतरिक इंटरफ़ेस को रूपांतरित सुविधाओं की उम्मीद है।

निर्यात किए गए मॉडल में परिवर्तन संलग्न करें

जैसा कि उल्लेख किया गया है, tf.Transform पाइपलाइन द्वारा निर्मित transform_fn ग्राफ एक निर्यात किए गए टेन्सरफ्लो ग्राफ के रूप में संग्रहीत किया जाता है। निर्यात किए गए ग्राफ में उदाहरण-स्तरीय संचालन के रूप में परिवर्तन तर्क और ग्राफ स्थिरांक के रूप में पूर्ण-पास परिवर्तनों में गणना किए गए सभी आंकड़े शामिल हैं। जब प्रशिक्षित मॉडल को सेवारत के लिए निर्यात किया जाता है, तो transform_fn ग्राफ को सेव्डमॉडल से उसके serving_fn फ़ंक्शन के हिस्से के रूप में संलग्न किया जाता है।

हालांकि यह भविष्यवाणी के लिए मॉडल की सेवा कर रहा है, इंटरफ़ेस सेवारत मॉडल कच्चे प्रारूप में डेटा बिंदुओं (यानी, किसी भी परिवर्तन से पहले) में डेटा बिंदुओं की उम्मीद करता है। हालांकि, मॉडल आंतरिक इंटरफ़ेस रूपांतरित प्रारूप में डेटा की उम्मीद करता है।

transform_fn ग्राफ, जो अब मॉडल का हिस्सा है, आने वाले डेटा बिंदु पर सभी प्रीप्रोसेसिंग लॉजिक को लागू करता है। यह भविष्यवाणी के दौरान इंस्टेंस-लेवल ऑपरेशन में संग्रहीत स्थिरांक (जैसे μ और to जैसे संख्यात्मक विशेषताओं को सामान्य करने के लिए) का उपयोग करता है। इसलिए, transform_fn ग्राफ कच्चे डेटा बिंदु को रूपांतरित प्रारूप में परिवर्तित करता है। रूपांतरित प्रारूप भविष्यवाणी का उत्पादन करने के लिए मॉडल आंतरिक इंटरफ़ेस द्वारा अपेक्षित है, जैसा कि चित्र 4 में दिखाया गया है।

यह तंत्र प्रशिक्षण-सेवारत तिरछा की प्रीप्रोसेसिंग चुनौती को हल करता है, क्योंकि एक ही तर्क (कार्यान्वयन) जो प्रशिक्षण और मूल्यांकन डेटा को बदलने के लिए उपयोग किया जाता है, भविष्यवाणी सेवारत के दौरान नए डेटा बिंदुओं को बदलने के लिए लागू किया जाता है।

पूर्वप्रोसेसिंग विकल्प सारांश

निम्न तालिका डेटा प्रीप्रोसेसिंग विकल्पों को सारांशित करती है जो इस दस्तावेज़ ने चर्चा की थी। तालिका में, "N/A" "लागू नहीं" के लिए खड़ा है।

आंकड़ा पूर्वप्रोसेसिंग विकल्प उदाहरण-स्तरीय
(स्टेटलेस ट्रांसफॉर्मेशन)

प्रशिक्षण के दौरान पूर्ण-पास और सेवा के दौरान उदाहरण-स्तरीय (राज्य के परिवर्तन)

प्रशिक्षण और सेवा के दौरान वास्तविक समय (खिड़की) एकत्रीकरण (स्ट्रीमिंग परिवर्तन)

BigQuery (SQL)

बैच स्कोरिंग: ठीक है - एक ही परिवर्तन कार्यान्वयन प्रशिक्षण और बैच स्कोरिंग के दौरान डेटा पर लागू किया जाता है।

ऑनलाइन भविष्यवाणी: अनुशंसित नहीं -आप प्रशिक्षण डेटा को संसाधित कर सकते हैं, लेकिन यह प्रशिक्षण-सेवा स्केव में परिणाम देता है क्योंकि आप विभिन्न उपकरणों का उपयोग करके डेटा की सेवा करने की प्रक्रिया करते हैं।

बैच स्कोरिंग: अनुशंसित नहीं

ऑनलाइन भविष्यवाणी: अनुशंसित नहीं

यद्यपि आप उदाहरण-स्तरीय बैच/ऑनलाइन परिवर्तनों के लिए BigQuery का उपयोग करके गणना किए गए आंकड़ों का उपयोग कर सकते हैं, यह आसान नहीं है क्योंकि आपको प्रशिक्षण के दौरान आबाद होने के लिए एक आँकड़े स्टोर को बनाए रखना होगा और भविष्यवाणी के दौरान उपयोग किया जाना चाहिए।

बैच स्कोरिंग: एन/ए -एग्रेगेट्स इन जैसे वास्तविक समय की घटनाओं के आधार पर गणना की जाती है।

ऑनलाइन भविष्यवाणी: अनुशंसित नहीं -आप प्रशिक्षण डेटा को संसाधित कर सकते हैं, लेकिन यह प्रशिक्षण-सेवा स्केव में परिणाम देता है क्योंकि आप विभिन्न उपकरणों का उपयोग करके डेटा की सेवा करने की प्रक्रिया करते हैं।

डेटाफ्लो (अपाचे बीम)

बैच स्कोरिंग: ठीक है - एक ही परिवर्तन कार्यान्वयन प्रशिक्षण और बैच स्कोरिंग के दौरान डेटा पर लागू किया जाता है।

ऑनलाइन भविष्यवाणी: सर्विंग समय पर ओके -डी डेटा पब/उप से आता है जिसे डेटाफ्लो द्वारा उपभोग किया जाता है। अन्यथा, प्रशिक्षण-सेवारत तिरछा में परिणाम।

बैच स्कोरिंग: अनुशंसित नहीं

ऑनलाइन भविष्यवाणियां: अनुशंसित नहीं

यद्यपि आप उदाहरण-स्तरीय बैच/ऑनलाइन परिवर्तनों के लिए DataFlow का उपयोग करके गणना किए गए आंकड़ों का उपयोग कर सकते हैं, यह आसान नहीं है क्योंकि आपको प्रशिक्षण के दौरान आबाद होने के लिए एक आँकड़े स्टोर को बनाए रखना होगा और भविष्यवाणी के दौरान उपयोग किया जाना चाहिए।

बैच स्कोरिंग: एन/ए -एग्रेगेट्स इन जैसे वास्तविक समय की घटनाओं के आधार पर गणना की जाती है।

ऑनलाइन भविष्यवाणी: ठीक है - एक ही अपाचे बीम परिवर्तन प्रशिक्षण (बैच) और सेवारत (स्ट्रीम) के दौरान डेटा पर लागू किया जाता है।

डेटाफ्लो (अपाचे बीम + टीएफटी)

बैच स्कोरिंग: ठीक है - एक ही परिवर्तन कार्यान्वयन प्रशिक्षण और बैच स्कोरिंग के दौरान डेटा पर लागू होता है।

ऑनलाइन भविष्यवाणी: अनुशंसित -यह प्रशिक्षण-सेवारत तिरछा से बचता है और प्रशिक्षण डेटा तैयार करता है।

बैच स्कोरिंग: अनुशंसित

ऑनलाइन भविष्यवाणी: अनुशंसित

दोनों उपयोगों की सिफारिश की जाती है क्योंकि प्रशिक्षण के दौरान परिवर्तन तर्क और गणना किए गए आँकड़ों को एक Tensorflow ग्राफ के रूप में संग्रहीत किया जाता है जो कि सेवा के लिए निर्यात मॉडल से जुड़ा होता है।

बैच स्कोरिंग: एन/ए -एग्रेगेट्स इन जैसे वास्तविक समय की घटनाओं के आधार पर गणना की जाती है।

ऑनलाइन भविष्यवाणी: ठीक है - एक ही अपाचे बीम परिवर्तन प्रशिक्षण (बैच) और सेवारत (स्ट्रीम) के दौरान डेटा पर लागू किया जाता है।

Tensorflow *
( input_fn & serving_fn )

बैच स्कोरिंग: अनुशंसित नहीं

ऑनलाइन भविष्यवाणी: अनुशंसित नहीं

दोनों मामलों में प्रशिक्षण दक्षता के लिए, प्रशिक्षण डेटा को सामने तैयार करना बेहतर है।

बैच स्कोरिंग: संभव नहीं है

ऑनलाइन भविष्यवाणी: संभव नहीं है

बैच स्कोरिंग: एन/ए -एग्रेगेट्स इन जैसे वास्तविक समय की घटनाओं के आधार पर गणना की जाती है।

ऑनलाइन भविष्यवाणी: संभव नहीं है

* Tensorflow के साथ, क्रॉसिंग, एम्बेडिंग और एक-हॉट एन्कोडिंग जैसे परिवर्तनों को feature_columns कॉलम के रूप में घोषित किया जाना चाहिए।

आगे क्या होगा