टेंसरफ़्लो:: सेवारत:: लोडर

यह एक अमूर्त वर्ग है।

#include <loader.h>

किसी वस्तु के लिए एक मानकीकृत अमूर्तता जो एक सर्व करने योग्य जीवनचक्र का प्रबंधन करती है, जिसमें उसे लोड करना और उतारना शामिल है।

सारांश

Servables मनमानी वस्तुएं हैं जो एल्गोरिदम या डेटा की सेवा करती हैं, हालांकि जरूरी नहीं कि मशीन से सीखे गए मॉडल का उपयोग करें।

एक लोडर एक servable वस्तु के लिए servable संस्करणों, सभी एक आम नाम (उदाहरण के लिए "my_servable") साझा करने और बढ़ती संस्करण संख्याओं, आम तौर पर ताजा प्रशिक्षण डेटा से सीखा अद्यतन मॉडल मापदंडों का प्रतिनिधित्व करने की एक धारा का एक उदाहरण का प्रतिनिधित्व करता है।

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

उपवर्गों वैकल्पिक रूप से करने के लिए एक सूचक को संग्रहीत कर सकती स्रोत है कि यह जन्म लिया, किसी दिए गए servable धारा में राज्य कई servable वस्तुओं के पार साझा तक पहुँचने के लिए।

कार्यान्वयन को यह सुनिश्चित करने की आवश्यकता है कि वे जिन विधियों का खुलासा करते हैं वे थ्रेड-सुरक्षित हैं, या सावधानीपूर्वक दस्तावेज़ और/या अपने थ्रेड-सुरक्षा गुणों को अपने ग्राहकों के साथ समन्वयित करते हैं ताकि शुद्धता सुनिश्चित हो सके। Servables के समवर्ती निष्पादन के बारे में चिंता की जरूरत नहीं है () लोड के रूप में फोन करने वाले यह सुनिश्चित करेंगे कि ऐसा नहीं होता है / अनलोड ()।

विरासत

ज्ञात उपवर्गों प्रत्यक्ष: tensorflow :: की सेवा :: ResourceUnsafeLoader

निर्माता और विनाशक

~Loader ()
नाशक एक पर कभी नहीं बुलाया जाएगा लोडर जिसका servable वर्तमान में लोड किया जाता है, यानी

सार्वजनिक समारोह

EstimateResources (ResourceAllocation *estimate) const =0
virtual Status
उन संसाधनों का अनुमान लगाता है जिनका एक सेवा योग्य उपयोग करेगा।
Load ()
virtual Status
किसी भी डेटा की जरूरत है servable द्वारा दिया उपयोग करने से पहले लोड करने के लिए हासिल करेगा () servable
LoadWithMetadata (const Metadata & metadata)
virtual Status
उपरोक्त विधि की तरह, लेकिन लेता मेटाडाटा का कोई पैरामीटर है, जो उचित रूप से लोडर कार्यान्वयन द्वारा इस्तेमाल किया जा सकता है।
Unload ()=0
virtual void
को मुक्त कर देते हैं किसी भी संसाधन के दौरान आवंटित लोड () (संसाधनों servables है कि अभी भी अन्य सक्रिय लोगों के लिए आवश्यक हैं भर में साझा करने के लिए शायद छोड़कर)।
servable ()=0
virtual AnyPtr
अंतर्निहित सेवा योग्य वस्तु के लिए एक अपारदर्शी इंटरफ़ेस देता है।

स्ट्रक्चर्स

tensorflow :: की सेवा :: लोडर :: मेटाडाटा

मेटाडेटा में ServableId होता है।

सार्वजनिक समारोह

अनुमान संसाधन

virtual Status EstimateResources(
  ResourceAllocation *estimate
) const =0

उन संसाधनों का अनुमान लगाता है जिनका एक सेवा योग्य उपयोग करेगा।

महत्वपूर्ण: इस पद्धति के कार्यान्वयन को निम्नलिखित आवश्यकताओं का पालन करना चाहिए, जो सर्विंग सिस्टम को सही ढंग से तर्क करने में सक्षम बनाता है कि कौन से सर्वेबल को सुरक्षित रूप से लोड किया जा सकता है:

  1. अनुमान को वास्तविक मूल्य पर ऊपरी सीमा का प्रतिनिधित्व करना चाहिए।
  2. लोड करने से पहले, अनुमान में ऐसे संसाधन शामिल हो सकते हैं जो किसी विशिष्ट डिवाइस इंस्टेंस के लिए बाध्य नहीं हैं, उदाहरण के लिए दो GPU में से एक पर RAM।
  3. लोड होने पर, कई इंस्टेंस वाले किसी भी डिवाइस (उदाहरण के लिए दो GPU) के लिए, अनुमान में उस इंस्टेंस को निर्दिष्ट करना होगा जिससे प्रत्येक संसाधन बाध्य है।
  4. अनुमान नीरस रूप से गैर-बढ़ता होना चाहिए, अर्थात यह समय के साथ नहीं बढ़ सकता। समय के साथ इसके संभावित रूप से कम होने के कारण रिटर्न
    उन संसाधनों का एक अनुमान जो एक बार लोड होने के बाद उपयोग करने योग्य उपभोग करेगा। यदि सर्व करने योग्य पहले ही लोड किया जा चुका है, तो वास्तविक संसाधन उपयोग का अनुमान देता है।

भार

virtual Status Load()

किसी भी डेटा की जरूरत है servable द्वारा दिया उपयोग करने से पहले लोड करने के लिए हासिल करेगा () servable

कोई और अधिक संसाधनों का उपयोग कर सकते हैं की तुलना में अनुमान द्वारा रिपोर्ट EstimateResources () ।

यदि लागू करने (लोड) , आप ओवरराइड करने के लिए की जरूरत नहीं है LoadWithMetadata ()

लोडविथमेटाडेटा

virtual Status LoadWithMetadata(
  const Metadata & metadata
)

उपरोक्त विधि की तरह, लेकिन लेता मेटाडाटा का कोई पैरामीटर है, जो उचित रूप से लोडर कार्यान्वयन द्वारा इस्तेमाल किया जा सकता है।

आप अधिभावी रहे हैं LoadWithMetadata () , क्योंकि आप मेटाडाटा उचित रूप से उपयोग कर सकते हैं, तो आप अधिभावी को छोड़ सकते हैं लोड ()

अनलोड

virtual void Unload()=0

को मुक्त कर देते हैं किसी भी संसाधन के दौरान आवंटित लोड () (संसाधनों servables है कि अभी भी अन्य सक्रिय लोगों के लिए आवश्यक हैं भर में साझा करने के लिए शायद छोड़कर)।

लोडर 'नई' राज्य में लौटने की जरूरत नहीं है (यानी लोड () के बाद नहीं कहा जा सकता अनलोड () )।

परोसने योग्य

virtual AnyPtr servable()=0

अंतर्निहित सेवा योग्य वस्तु के लिए एक अपारदर्शी इंटरफ़ेस देता है।

कॉलर को इसका वास्तविक उपयोग करने के लिए इंटरफ़ेस के सटीक प्रकार का पता होना चाहिए। उदाहरण के लिए:

CustomLoader कार्यान्वयन:

class CustomLoader : public Loader {
 public:
  ...
  Status Load() override {
    servable_ = ...;
  }

  AnyPtr servable() override { return servable_; }

 private:
  CustomServable* servable_ = nullptr;
};

उपयोगकर्ता अनुरोध सेवित:

ServableHandle<CustomServable> handle = ...
CustomServable* servable = handle.get();
servable->...

यदि servable () सफल होने के बाद कहा जाता है ) लोड ( पहले और अनलोड () , यह एक वैध गैर-शून्य AnyPtr वस्तु देता है। अगर एक सफल से पहले कहा जाता लोड () कॉल या बाद अनलोड () , यह शून्य AnyPtr देता है।

~ लोडर

virtual  ~Loader()=default

नाशक एक पर कभी नहीं बुलाया जाएगा लोडर जिसका servable वर्तमान में लोड किया जाता है, यानी

के बीच (सफल) कॉल करने के लिए लोड () और अनलोड ()