TensorFlow Lite और TensorFlow ऑपरेटर संगतता

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

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

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

समर्थित ऑपरेटरों

TensorFlow Lite बिल्ट-इन ऑपरेटर्स उन ऑपरेटरों का एक सबसेट हैं जो TensorFlow कोर लाइब्रेरी का हिस्सा हैं। आपके TensorFlow मॉडल में समग्र ऑपरेटरों या आपके द्वारा परिभाषित नए ऑपरेटरों के रूप में कस्टम ऑपरेटर भी शामिल हो सकते हैं। नीचे दिया गया चित्र इन ऑपरेटरों के बीच संबंधों को दर्शाता है।

टेंसरफ्लो ऑपरेटर्स

एमएल मॉडल ऑपरेटरों की इस श्रेणी से, रूपांतरण प्रक्रिया द्वारा समर्थित 3 प्रकार के मॉडल हैं:

  1. केवल TensorFlow Lite बिल्ट-इन ऑपरेटर वाले मॉडल। ( अनुशंसित )
  2. बिल्ट-इन ऑपरेटरों के साथ मॉडल और TensorFlow कोर ऑपरेटरों का चयन करें।
  3. बिल्ट-इन ऑपरेटरों, TensorFlow कोर ऑपरेटरों और/या कस्टम ऑपरेटरों वाले मॉडल।

यदि आपके मॉडल में केवल वे ऑपरेशन शामिल हैं जो मूल रूप से TensorFlow Lite द्वारा समर्थित हैं, तो आपको इसे परिवर्तित करने के लिए किसी अतिरिक्त फ़्लैग की आवश्यकता नहीं है। यह अनुशंसित पथ है क्योंकि इस प्रकार का मॉडल सुचारू रूप से रूपांतरित होगा और डिफ़ॉल्ट TensorFlow Lite रनटाइम का उपयोग करके अनुकूलित करना और चलाना आसान है। आपके पास अपने मॉडल के लिए अधिक परिनियोजन विकल्प भी हैं जैसे Google Play सेवाएं । आप TensorFlow Lite कन्वर्टर गाइड के साथ शुरुआत कर सकते हैं। बिल्ट-इन ऑपरेटरों की सूची के लिए TensorFlow Lite Ops पेज देखें।

यदि आपको कोर लाइब्रेरी से चुनिंदा TensorFlow संचालन शामिल करने की आवश्यकता है, तो आपको रूपांतरण पर निर्दिष्ट करना होगा और सुनिश्चित करना होगा कि आपके रनटाइम में वे ऑपरेशन शामिल हैं। विस्तृत चरणों के लिए TensorFlow ऑपरेटरों का चयन करें विषय देखें।

जब भी संभव हो, अपने परिवर्तित मॉडल में कस्टम ऑपरेटरों को शामिल करने के अंतिम विकल्प से बचें। कस्टम ऑपरेटर या तो ऑपरेटर होते हैं जो कई आदिम TensorFlow कोर ऑपरेटरों को मिलाकर बनाए जाते हैं या पूरी तरह से नए को परिभाषित करते हैं। जब कस्टम ऑपरेटरों को परिवर्तित किया जाता है, तो वे अंतर्निहित TensorFlow Lite लाइब्रेरी के बाहर निर्भरताओं को लेकर समग्र मॉडल का आकार बढ़ा सकते हैं। कस्टम ऑप्स, यदि विशेष रूप से मोबाइल या डिवाइस परिनियोजन के लिए नहीं बनाए गए हैं, तो सर्वर वातावरण की तुलना में सीमित संसाधन वाले उपकरणों पर परिनियोजित किए जाने पर प्रदर्शन खराब हो सकता है। अंत में, चुनिंदा TensorFlow कोर ऑपरेटरों को शामिल करने की तरह, कस्टम ऑपरेटरों को आपको मॉडल रनटाइम वातावरण को संशोधित करने की आवश्यकता होती है, जो आपको Google Play सेवाओं जैसी मानक रनटाइम सेवाओं का लाभ लेने से रोकता है।

समर्थित प्रकार

अधिकांश टेंसरफ्लो लाइट ऑपरेशंस फ्लोटिंग-पॉइंट ( float32 ) और क्वांटाइज्ड ( uint8 , int8 ) दोनों अनुमानों को लक्षित करते हैं, लेकिन कई ऑप्स अभी तक अन्य प्रकारों जैसे tf.float16 और स्ट्रिंग्स के लिए नहीं हैं।

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

सीधे-आगे रूपांतरण, निरंतर-तह और फ़्यूज़िंग

कई TensorFlow संचालन TensorFlow Lite द्वारा संसाधित किए जा सकते हैं, भले ही उनका कोई प्रत्यक्ष समतुल्य न हो। यह ऑपरेशन के मामले में है जिसे केवल ग्राफ ( tf.identity ) से हटाया जा सकता है, टेंसर ( tf.placeholder ) द्वारा प्रतिस्थापित किया जा सकता है, या अधिक जटिल संचालन ( tf.nn.bias_add ) में जोड़ा जा सकता है। इनमें से किसी एक प्रक्रिया के माध्यम से कभी-कभी कुछ समर्थित संचालन भी हटाए जा सकते हैं।

यहाँ TensorFlow संचालन की एक गैर-विस्तृत सूची है जिसे आमतौर पर ग्राफ़ से हटा दिया जाता है:

प्रायोगिक संचालन

निम्नलिखित TensorFlow Lite ऑपरेशन मौजूद हैं, लेकिन कस्टम मॉडल के लिए तैयार नहीं हैं:

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF