यूक्रेन के लिए DevFest में जून 14-15 में हमसे जुड़ें ऑनलाइन अभी पंजीकरण करें

आर्किटेक्चर

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

प्रमुख धारणाएँ

TensorFlow सर्विंग की वास्तुकला को समझने के लिए, आपको निम्नलिखित प्रमुख अवधारणाओं को समझने की आवश्यकता है:

सेवा योग्य

Servables TensorFlow की सेवा में केंद्रीय अमूर्त हैं। Servables अंतर्निहित वस्तुएं हैं जिनका उपयोग ग्राहक गणना करने के लिए करते हैं (उदाहरण के लिए, एक लुकअप या अनुमान)।

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

  • स्ट्रीमिंग परिणाम
  • प्रयोगात्मक एपीआई
  • संचालन के अतुल्यकालिक मोड

Servables अपने स्वयं के जीवनचक्र का प्रबंधन नहीं करते हैं।

विशिष्ट सर्वेबल्स में निम्नलिखित शामिल हैं:

  • एक TensorFlow SavedModelBundle ( tensorflow::Session )
  • एम्बेडिंग या शब्दावली लुकअप के लिए लुकअप टेबल

सर्व करने योग्य संस्करण

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

सर्व करने योग्य धाराएँ

एक servable धारा एक servable के संस्करणों के अनुक्रम है, संस्करण संख्या में वृद्धि के अनुसार क्रमबद्ध।

मॉडल

TensorFlow प्रस्तुति एक या अधिक servables के रूप में एक मॉडल का प्रतिनिधित्व करता है। मशीन से सीखे गए मॉडल में एक या अधिक एल्गोरिदम (सीखा वजन सहित) और लुकअप या एम्बेडिंग टेबल शामिल हो सकते हैं।

आप निम्नलिखित में से किसी के रूप में एक समग्र मॉडल का प्रतिनिधित्व कर सकते हैं:

  • एकाधिक स्वतंत्र सर्वेबल्स
  • एकल समग्र सर्व करने योग्य

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

लोडर

लोडर एक servable के जीवन चक्र प्रबंधन। लोडर एपीआई विशिष्ट शिक्षण एल्गोरिदम, डेटा या उत्पाद उपयोग-मामलों से स्वतंत्र सामान्य बुनियादी ढांचे को सक्षम बनाता है। विशेष रूप से, लोडर एक सर्व करने योग्य लोडिंग और अनलोडिंग के लिए एपीआई को मानकीकृत करते हैं।

सूत्रों का कहना है

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

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

स्रोत उस स्थिति को बनाए रख सकते हैं जो कई सर्व करने योग्य या संस्करणों में साझा की जाती है। यह उन सर्वेबल्स के लिए उपयोगी है जो संस्करणों के बीच डेल्टा (diff) अपडेट का उपयोग करते हैं।

आकांक्षी संस्करण

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

देखें उन्नत ट्यूटोरियल देखने के लिए कैसे संस्करण लोड हो रहा है व्यवहार में काम करता है।

प्रबंधकों

प्रबंधकों Servables, सहित से भरा जीवन चक्र संभाल:

  • लोड हो रहा है Servables
  • सर्व करने योग्य
  • अनलोडिंग Servables

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

TensorFlow सेवित प्रबंधक एक सरल, संकीर्ण इंटरफेस प्रदान - GetServableHandle() - का उपयोग करने के लिए ग्राहकों के लिए servable उदाहरणों से भरी हुई।

सार

मानक TensorFlow एपिस सेवित का उपयोग करना, TensorFlow सेवित कोर servables के निम्नलिखित पहलुओं का प्रबंधन करता है:

  • जीवन चक्र
  • मैट्रिक्स

TensorFlow सर्विंग कोर, सेवा योग्य और लोडर को अपारदर्शी वस्तुओं के रूप में मानता है।

एक सेवा योग्य का जीवन

टीएफ सर्विंग आर्किटेक्चर डायग्राम

मोटे तौर पर बोलना:

  1. स्रोत सर्व करने योग्य संस्करणों के लिए लोडर बनाते हैं।
  2. लोडर को एस्पायर्ड वर्जन के रूप में मैनेजर को भेजा जाता है, जो क्लाइंट के अनुरोधों को लोड करता है और उन्हें पूरा करता है।

विस्तृत रूप में:

  1. एक स्रोत प्लगइन एक विशिष्ट संस्करण के लिए लोडर बनाता है। लोडर में सर्व करने योग्य लोड करने के लिए जो भी मेटाडेटा की आवश्यकता होती है।
  2. स्रोत आकांक्षी संस्करण के प्रबंधक को सूचित करने के लिए कॉलबैक का उपयोग करता है।
  3. प्रबंधक अगली कार्रवाई निर्धारित करने के लिए कॉन्फ़िगर की गई संस्करण नीति लागू करता है, जो पहले लोड किए गए संस्करण को अनलोड करने या नए संस्करण को लोड करने के लिए हो सकता है।
  4. यदि प्रबंधक निर्धारित करता है कि यह सुरक्षित है, तो यह लोडर को आवश्यक संसाधन देता है और लोडर को नया संस्करण लोड करने के लिए कहता है।
  5. ग्राहक प्रबंधक से सर्व करने योग्य के लिए पूछते हैं, या तो एक संस्करण को स्पष्ट रूप से निर्दिष्ट करते हैं या केवल नवीनतम संस्करण का अनुरोध करते हैं। प्रबंधक Servable के लिए एक हैंडल लौटाता है।

उदाहरण के लिए, मान लें कि स्रोत अक्सर अपडेट किए गए मॉडल भार के साथ एक TensorFlow ग्राफ़ का प्रतिनिधित्व करता है। भार डिस्क पर एक फ़ाइल में संग्रहीत होते हैं।

  1. स्रोत मॉडल भार के एक नए संस्करण का पता लगाता है। यह एक लोडर बनाता है जिसमें डिस्क पर मॉडल डेटा के लिए एक पॉइंटर होता है।
  2. स्रोत एस्पायर्ड संस्करण के गतिशील प्रबंधक को सूचित करता है।
  3. डायनेमिक मैनेजर संस्करण नीति लागू करता है और नए संस्करण को लोड करने का निर्णय लेता है।
  4. डायनामिक मैनेजर लोडर को बताता है कि पर्याप्त मेमोरी है। लोडर नए वज़न के साथ TensorFlow ग्राफ़ को इंस्टेंट करता है।
  5. क्लाइंट मॉडल के नवीनतम संस्करण के लिए एक हैंडल का अनुरोध करता है, और डायनेमिक मैनेजर एक हैंडल को सर्व करने योग्य के नए संस्करण में लौटाता है।

तानाना

TensorFlow Serving कई विस्तार बिंदु प्रदान करता है जहाँ आप नई कार्यक्षमता जोड़ सकते हैं।

संस्करण नीति

संस्करण नीतियां एकल सेवा योग्य स्ट्रीम के भीतर संस्करण लोडिंग और अनलोडिंग का क्रम निर्दिष्ट करती हैं।

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

स्रोत

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

देखें कस्टम स्रोत कैसे एक कस्टम स्रोत बनाने के लिए के बारे में अधिक के लिए दस्तावेज़।

लोडर

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

देखें कस्टम servable एक कस्टम servable बनाने का तरीका जानने के लिए दस्तावेज़।

बैचर

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