TensorFlow सर्विंग मशीन लर्निंग मॉडल के लिए एक लचीली, उच्च-प्रदर्शन वाली सेवा प्रणाली है, जिसे उत्पादन वातावरण के लिए डिज़ाइन किया गया है। TensorFlow सर्विंग समान सर्वर आर्किटेक्चर और API को बनाए रखते हुए नए एल्गोरिदम और प्रयोगों को तैनात करना आसान बनाता है। TensorFlow सर्विंग, TensorFlow मॉडल के साथ बॉक्स एकीकरण प्रदान करता है, लेकिन इसे अन्य प्रकार के मॉडलों की सेवा के लिए आसानी से बढ़ाया जा सकता है।
महत्वपूर्ण अवधारणाएं
TensorFlow सर्विंग की वास्तुकला को समझने के लिए, आपको निम्नलिखित प्रमुख अवधारणाओं को समझने की आवश्यकता है:
सेवा योग्य
TensorFlow सर्विंग में Servables केंद्रीय अमूर्त हैं। Servables अंतर्निहित वस्तुएं हैं जिनका उपयोग ग्राहक गणना करने के लिए करते हैं (उदाहरण के लिए, एक लुकअप या अनुमान)।
सर्व करने योग्य का आकार और ग्रैन्युलैरिटी लचीला होता है। एक सिंगल सर्वेबल में लुकअप टेबल के सिंगल शार्ड से लेकर सिंगल मॉडल से लेकर इंट्रेंस मॉडल के टपल तक कुछ भी शामिल हो सकता है। Servables किसी भी प्रकार और इंटरफ़ेस का हो सकता है, जिससे लचीलापन और भविष्य में सुधार हो सकता है जैसे:
- स्ट्रीमिंग परिणाम
- प्रयोगात्मक एपीआई
- संचालन के अतुल्यकालिक मोड
Servables अपने स्वयं के जीवनचक्र का प्रबंधन नहीं करते हैं।
विशिष्ट सर्वेबल्स में निम्नलिखित शामिल हैं:
- एक TensorFlow SavedModelBundle (
tensorflow::Session
) - एम्बेडिंग या शब्दावली लुकअप के लिए लुकअप टेबल
सर्व करने योग्य संस्करण
TensorFlow सर्विंग एकल सर्वर इंस्टेंस के जीवनकाल में एक सर्व करने योग्य के एक या अधिक संस्करणों को संभाल सकता है। यह समय के साथ लोड होने के लिए ताज़ा एल्गोरिथम कॉन्फ़िगरेशन, वज़न और अन्य डेटा को सक्षम बनाता है। संस्करण क्रमिक रोलआउट और प्रयोग का समर्थन करते हुए, एक से अधिक संस्करणों को एक साथ लोड करने में सक्षम बनाते हैं। सेवा के समय, ग्राहक किसी विशेष मॉडल के लिए नवीनतम संस्करण या विशिष्ट संस्करण आईडी का अनुरोध कर सकते हैं।
सर्व करने योग्य धाराएँ
एक सर्व करने योग्य स्ट्रीम एक सर्व करने योग्य संस्करणों का अनुक्रम है, जो संस्करण संख्या को बढ़ाकर क्रमबद्ध किया जाता है।
मॉडल
TensorFlow सर्विंग एक मॉडल को एक या अधिक सर्व करने योग्य के रूप में दर्शाता है। मशीन से सीखने वाले मॉडल में एक या एक से अधिक एल्गोरिदम (सीखा वजन सहित) और लुकअप या एम्बेडिंग टेबल शामिल हो सकते हैं।
आप निम्न में से किसी एक के रूप में एक समग्र मॉडल का प्रतिनिधित्व कर सकते हैं:
- एकाधिक स्वतंत्र सर्वेबल्स
- एकल समग्र सर्व करने योग्य
एक सेवा योग्य मॉडल के एक अंश के अनुरूप भी हो सकता है। उदाहरण के लिए, एक बड़ी लुकअप तालिका को कई TensorFlow सर्विंग इंस्टेंस में विभाजित किया जा सकता है।
लोडर
लोडर एक सर्व करने योग्य जीवन चक्र का प्रबंधन करते हैं। लोडर एपीआई विशिष्ट शिक्षण एल्गोरिदम, डेटा या उत्पाद उपयोग-मामलों से स्वतंत्र सामान्य बुनियादी ढांचे को सक्षम बनाता है। विशेष रूप से, लोडर एक सर्व करने योग्य लोडिंग और अनलोडिंग के लिए एपीआई को मानकीकृत करते हैं।
सूत्रों का कहना है
स्रोत प्लगइन मॉड्यूल हैं जो सर्वबल ढूंढते हैं और प्रदान करते हैं। प्रत्येक स्रोत शून्य या अधिक सेवा योग्य स्ट्रीम प्रदान करता है। प्रत्येक सेवा योग्य स्ट्रीम के लिए, स्रोत प्रत्येक संस्करण के लिए एक लोडर इंस्टेंस प्रदान करता है जो इसे लोड करने के लिए उपलब्ध कराता है। (एक स्रोत वास्तव में शून्य या अधिक स्रोत एडेप्टर के साथ जंजीर से जुड़ा होता है, और श्रृंखला में अंतिम आइटम लोडर का उत्सर्जन करता है।)
स्रोतों के लिए TensorFlow सर्विंग का इंटरफ़ेस मनमानी स्टोरेज सिस्टम से सर्वेबल्स की खोज कर सकता है। TensorFlow सर्विंग में सामान्य संदर्भ स्रोत कार्यान्वयन शामिल हैं। उदाहरण के लिए, स्रोत आरपीसी जैसे तंत्र तक पहुंच सकते हैं और फाइल सिस्टम को मतदान कर सकते हैं।
स्रोत उस स्थिति को बनाए रख सकते हैं जो कई सर्व करने योग्य या संस्करणों में साझा की जाती है। यह उन सर्वेबल्स के लिए उपयोगी है जो संस्करणों के बीच डेल्टा (diff) अपडेट का उपयोग करते हैं।
आकांक्षी संस्करण
आकांक्षी संस्करण सेवा योग्य संस्करणों के सेट का प्रतिनिधित्व करते हैं जिन्हें लोड और तैयार किया जाना चाहिए। स्रोत एक समय में एक ही सर्व करने योग्य स्ट्रीम के लिए सर्व करने योग्य संस्करणों के इस सेट का संचार करते हैं। जब कोई स्रोत प्रबंधक को आकांक्षी संस्करणों की एक नई सूची देता है, तो वह उस सेवा योग्य स्ट्रीम के लिए पिछली सूची का स्थान ले लेता है। प्रबंधक पहले से लोड किए गए किसी भी संस्करण को अनलोड करता है जो अब सूची में दिखाई नहीं देता है।
यह देखने के लिए उन्नत ट्यूटोरियल देखें कि संस्करण लोडिंग व्यवहार में कैसे काम करती है।
प्रबंधकों
प्रबंधक Servables का पूरा जीवनचक्र संभालते हैं, जिनमें शामिल हैं:
- लोड हो रहा है Servables
- सर्व करने योग्य
- अनलोडिंग Servables
प्रबंधक सूत्रों को सुनते हैं और सभी संस्करणों को ट्रैक करते हैं। प्रबंधक स्रोतों के अनुरोधों को पूरा करने का प्रयास करता है, लेकिन यदि आवश्यक संसाधन उपलब्ध नहीं हैं, तो एक वांछित संस्करण लोड करने से मना कर सकता है। प्रबंधक "अनलोड" को भी स्थगित कर सकते हैं। उदाहरण के लिए, एक प्रबंधक इस नीति के आधार पर कि हर समय कम से कम एक संस्करण लोड किया जाता है, एक नए संस्करण के लोड होने तक प्रतीक्षा कर सकता है।
TensorFlow सर्विंग मैनेजर क्लाइंट को लोड किए गए सर्व करने योग्य इंस्टेंस तक पहुंचने के लिए एक सरल, संकीर्ण इंटरफ़ेस - GetServableHandle()
प्रदान करते हैं।
सार
मानक TensorFlow सर्विंग API का उपयोग करते हुए, TensorFlow सर्विंग कोर , सर्व करने योग्य के निम्नलिखित पहलुओं का प्रबंधन करता है:
- जीवन चक्र
- मैट्रिक्स
TensorFlow सर्विंग कोर, सेव करने योग्य और लोडर को अपारदर्शी वस्तुओं के रूप में मानता है।
एक सेवा योग्य का जीवन
मोटे तौर पर बोलना:
- स्रोत सर्व करने योग्य संस्करणों के लिए लोडर बनाते हैं।
- लोडर को एस्पायर्ड वर्जन के रूप में मैनेजर को भेजा जाता है, जो क्लाइंट के अनुरोधों को लोड करता है और उन्हें पूरा करता है।
और अधिक विस्तार में:
- एक स्रोत प्लगइन एक विशिष्ट संस्करण के लिए लोडर बनाता है। लोडर में सर्व करने योग्य लोड करने के लिए आवश्यक मेटाडेटा होता है।
- स्रोत आकांक्षी संस्करण के प्रबंधक को सूचित करने के लिए कॉलबैक का उपयोग करता है।
- प्रबंधक अगली कार्रवाई निर्धारित करने के लिए कॉन्फ़िगर की गई संस्करण नीति लागू करता है, जो पहले से लोड किए गए संस्करण को अनलोड करने या नए संस्करण को लोड करने के लिए हो सकता है।
- यदि प्रबंधक निर्धारित करता है कि यह सुरक्षित है, तो यह लोडर को आवश्यक संसाधन देता है और लोडर को नया संस्करण लोड करने के लिए कहता है।
- ग्राहक प्रबंधक से सर्व करने योग्य के लिए पूछते हैं, या तो एक संस्करण को स्पष्ट रूप से निर्दिष्ट करते हैं या केवल नवीनतम संस्करण का अनुरोध करते हैं। प्रबंधक Servable के लिए एक हैंडल लौटाता है।
उदाहरण के लिए, मान लें कि एक स्रोत अक्सर अद्यतन मॉडल भार के साथ एक TensorFlow ग्राफ का प्रतिनिधित्व करता है। भार डिस्क पर एक फ़ाइल में संग्रहीत होते हैं।
- स्रोत मॉडल भार के एक नए संस्करण का पता लगाता है। यह एक लोडर बनाता है जिसमें डिस्क पर मॉडल डेटा के लिए एक पॉइंटर होता है।
- स्रोत एस्पायर्ड संस्करण के गतिशील प्रबंधक को सूचित करता है।
- डायनेमिक मैनेजर संस्करण नीति लागू करता है और नए संस्करण को लोड करने का निर्णय लेता है।
- डायनामिक मैनेजर लोडर को बताता है कि पर्याप्त मेमोरी है। लोडर नए वज़न के साथ TensorFlow ग्राफ़ को इंस्टेंट करता है।
- क्लाइंट मॉडल के नवीनतम संस्करण के लिए एक हैंडल का अनुरोध करता है, और डायनेमिक मैनेजर एक हैंडल को सर्व करने योग्य के नए संस्करण में लौटाता है।
तानाना
TensorFlow Serving कई विस्तार बिंदु प्रदान करता है जहाँ आप नई कार्यक्षमता जोड़ सकते हैं।
संस्करण नीति
संस्करण नीतियां एकल सेवा योग्य स्ट्रीम के भीतर संस्करण लोडिंग और अनलोडिंग के अनुक्रम को निर्दिष्ट करती हैं।
TensorFlow सर्विंग में दो नीतियां शामिल हैं जो सबसे ज्ञात उपयोग-मामलों को समायोजित करती हैं। ये उपलब्धता संरक्षण नीति हैं (शून्य संस्करणों को लोड करने से बचें; आमतौर पर पुराने संस्करण को उतारने से पहले एक नया संस्करण लोड करें), और संसाधन संरक्षण नीति (दो संस्करणों को एक साथ लोड करने से बचें, इस प्रकार संसाधनों को दोगुना करने की आवश्यकता होती है; लोड करने से पहले एक पुराने संस्करण को अनलोड करें एक नया विकल्प)। TensorFlow सर्विंग के सरल उपयोग के लिए जहां एक मॉडल की सर्विंग उपलब्धता महत्वपूर्ण है और संसाधन लागत कम है, उपलब्धता संरक्षण नीति यह सुनिश्चित करेगी कि नया संस्करण लोड हो गया है और पुराने को उतारने से पहले तैयार है। TensorFlow सर्विंग के परिष्कृत उपयोग के लिए, उदाहरण के लिए कई सर्वर इंस्टेंस में संस्करणों का प्रबंधन, संसाधन संरक्षण नीति को कम से कम संसाधनों की आवश्यकता होती है (नए संस्करण लोड करने के लिए कोई अतिरिक्त बफर नहीं)।
स्रोत
नए स्रोत नए फाइल सिस्टम, क्लाउड प्रसाद और एल्गोरिथम बैकएंड का समर्थन कर सकते हैं। TensorFlow Serving नए स्रोत बनाना आसान और तेज़ बनाने के लिए कुछ सामान्य बिल्डिंग ब्लॉक प्रदान करता है। उदाहरण के लिए, TensorFlow सर्विंग में एक साधारण स्रोत के आसपास मतदान व्यवहार को लपेटने के लिए एक उपयोगिता शामिल है। स्रोत विशिष्ट एल्गोरिदम और डेटा होस्टिंग सेवा के लिए लोडर से निकटता से संबंधित हैं।
कस्टम स्रोत बनाने के तरीके के बारे में अधिक जानने के लिए कस्टम स्रोत दस्तावेज़ देखें।
लोडर
लोडर एल्गोरिदम और डेटा बैकएंड जोड़ने के लिए विस्तार बिंदु हैं। TensorFlow एक ऐसा एल्गोरिथम बैकएंड है। उदाहरण के लिए, आप एक नए प्रकार के सर्व करने योग्य मशीन लर्निंग मॉडल के इंस्टेंस को लोड करने, एक्सेस करने और अनलोड करने के लिए एक नया लोडर लागू करेंगे। हम लुकअप टेबल और अतिरिक्त एल्गोरिदम के लिए लोडर बनाने की उम्मीद करते हैं।
कस्टम सर्व करने योग्य बनाने का तरीका जानने के लिए कस्टम सर्व करने योग्य दस्तावेज़ देखें।
बैचर
एक ही अनुरोध में कई अनुरोधों की बैचिंग, विशेष रूप से GPU जैसे हार्डवेयर त्वरक की उपस्थिति में, प्रदर्शन करने की लागत को काफी कम कर सकती है। TensorFlow सर्विंग में एक अनुरोध बैचिंग विजेट शामिल है जो ग्राहकों को बैच अनुरोधों में अनुरोधों के बीच आसानी से अपने प्रकार-विशिष्ट संदर्भों को बैचने देता है जो कि एल्गोरिथम सिस्टम अधिक कुशलता से संसाधित कर सकते हैं। अधिक जानकारी के लिए बैचिंग गाइड देखें।