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