मोबाइल के लिए टीएफएक्स

परिचय

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

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

हम मानते हैं कि आप टीएफएक्स, हमारे घटकों और हमारी पाइपलाइनों से परिचित हैं। यदि नहीं, तो कृपया यह ट्यूटोरियल देखें।

कदम

TFX में TFLite मॉडल बनाने और उसका मूल्यांकन करने के लिए केवल दो चरणों की आवश्यकता होती है। पहला कदम प्रशिक्षित टेन्सरफ्लो मॉडल को टीएफलाइट मॉडल में बदलने के लिए टीएफएक्स ट्रेनर के संदर्भ में टीएफलाइट रीराइटर को लागू करना है। दूसरा चरण TFLite मॉडल का मूल्यांकन करने के लिए मूल्यांकनकर्ता को कॉन्फ़िगर करना है। अब हम प्रत्येक पर बारी-बारी से चर्चा करते हैं।

ट्रेनर के भीतर TFLite रीराइटर को लागू करना।

टीएफएक्स ट्रेनर एक उपयोगकर्ता-परिभाषित run_fn मॉड्यूल फ़ाइल में निर्दिष्ट करने की अपेक्षा करता है। यह run_fn प्रशिक्षित किए जाने वाले मॉडल को परिभाषित करता है, इसे निर्दिष्ट संख्या में पुनरावृत्तियों के लिए प्रशिक्षित करता है, और प्रशिक्षित मॉडल को निर्यात करता है।

इस अनुभाग के बाकी हिस्सों में, हम कोड स्निपेट प्रदान करते हैं जो टीएफलाइट रीराइटर को लागू करने और टीएफलाइट मॉडल को निर्यात करने के लिए आवश्यक परिवर्तन दिखाते हैं। यह सभी कोड MNIST TFLite मॉड्यूल के run_fn में स्थित है।

जैसा कि नीचे दिए गए कोड में दिखाया गया है, हमें पहले एक हस्ताक्षर बनाना होगा जो इनपुट के रूप में प्रत्येक सुविधा के लिए एक Tensor लेता है। ध्यान दें कि यह TFX में अधिकांश मौजूदा मॉडलों से अलग है, जो इनपुट के रूप में क्रमबद्ध tf.Example प्रोटोज़ लेते हैं।

 signatures = {
      'serving_default':
          _get_serve_tf_examples_fn(
              model, tf_transform_output).get_concrete_function(
                  tf.TensorSpec(
                      shape=[None, 784],
                      dtype=tf.float32,
                      name='image_floats'))
  }

फिर केरस मॉडल को सेव्डमॉडल के रूप में उसी तरह सेव किया जाता है, जैसे वह सामान्य रूप से होता है।

  temp_saving_model_dir = os.path.join(fn_args.serving_model_dir, 'temp')
  model.save(temp_saving_model_dir, save_format='tf', signatures=signatures)

अंत में, हम TFLite रीराइटर ( tfrw ) का एक उदाहरण बनाते हैं, और TFLite मॉडल प्राप्त करने के लिए इसे SavedModel पर लागू करते हैं। हम इस TFLite मॉडल को run_fn के कॉलर द्वारा प्रदान की गई serving_model_dir में संग्रहीत करते हैं। इस तरह, टीएफलाइट मॉडल को उस स्थान पर संग्रहीत किया जाता है जहां सभी डाउनस्ट्रीम टीएफएक्स घटक मॉडल ढूंढने की उम्मीद करेंगे।

  tfrw = rewriter_factory.create_rewriter(
      rewriter_factory.TFLITE_REWRITER, name='tflite_rewriter')
  converters.rewrite_saved_model(temp_saving_model_dir,
                                 fn_args.serving_model_dir,
                                 tfrw,
                                 rewriter.ModelType.TFLITE_MODEL)

टीएफलाइट मॉडल का मूल्यांकन।

टीएफएक्स मूल्यांकनकर्ता मेट्रिक्स की एक विस्तृत श्रृंखला में उनकी गुणवत्ता को समझने के लिए प्रशिक्षित मॉडलों का विश्लेषण करने की क्षमता प्रदान करता है। SavedModels का विश्लेषण करने के अलावा, TFX मूल्यांकनकर्ता अब TFLite मॉडल का भी विश्लेषण करने में सक्षम है।

निम्नलिखित कोड स्निपेट ( एमएनआईएसटी पाइपलाइन से पुनरुत्पादित), दिखाता है कि एक मूल्यांकनकर्ता को कैसे कॉन्फ़िगर किया जाए जो टीएफलाइट मॉडल का विश्लेषण करता है।

  # Informs the evaluator that the model is a TFLite model.
  eval_config_lite.model_specs[0].model_type = 'tf_lite'

  ...

  # Uses TFMA to compute the evaluation statistics over features of a TFLite
  # model.
  model_analyzer_lite = Evaluator(
      examples=example_gen.outputs['examples'],
      model=trainer_lite.outputs['model'],
      eval_config=eval_config_lite,
  ).with_id('mnist_lite')

जैसा कि ऊपर दिखाया गया है, एकमात्र बदलाव जो हमें करने की ज़रूरत है वह है model_type फ़ील्ड को tf_lite पर सेट करना। TFLite मॉडल का विश्लेषण करने के लिए किसी अन्य कॉन्फ़िगरेशन परिवर्तन की आवश्यकता नहीं है। भले ही टीएफलाइट मॉडल या सेव्डमॉडल का विश्लेषण किया गया हो, Evaluator के आउटपुट की संरचना बिल्कुल समान होगी।

हालाँकि, कृपया ध्यान दें कि मूल्यांकनकर्ता मानता है कि TFLite मॉडल ट्रेनर_लाइट.आउटपुट ['मॉडल'] के भीतर tflite नामक फ़ाइल में सहेजा गया है।