प्रशिक्षण के बाद परिमाणीकरण में मॉडल सटीकता में थोड़ी गिरावट के साथ सीपीयू और हार्डवेयर त्वरक विलंबता, प्रसंस्करण, शक्ति और मॉडल आकार को कम करने की सामान्य तकनीकें शामिल हैं। इन तकनीकों को पहले से प्रशिक्षित फ्लोट टेन्सरफ्लो मॉडल पर प्रदर्शित किया जा सकता है और टेन्सरफ्लो लाइट रूपांतरण के दौरान लागू किया जा सकता है। ये तकनीकें TensorFlow Lite कनवर्टर में विकल्प के रूप में सक्षम हैं।
सीधे शुरू से अंत तक उदाहरणों पर जाने के लिए, निम्नलिखित ट्यूटोरियल देखें:
- प्रशिक्षण के बाद गतिशील रेंज परिमाणीकरण
- प्रशिक्षण के बाद पूर्ण पूर्णांक परिमाणीकरण
- प्रशिक्षण के बाद फ़्लोट16 परिमाणीकरण
वज़न का परिमाणीकरण करना
वज़न को कम परिशुद्धता वाले प्रकारों में परिवर्तित किया जा सकता है, जैसे 16 बिट फ़्लोट या 8 बिट पूर्णांक। हम आमतौर पर GPU त्वरण के लिए 16-बिट फ़्लोट और CPU निष्पादन के लिए 8-बिट पूर्णांक की अनुशंसा करते हैं।
उदाहरण के लिए, यहां बताया गया है कि 8 बिट पूर्णांक भार परिमाणीकरण कैसे निर्दिष्ट किया जाए:
import tensorflow as tf
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
अनुमान के अनुसार, सबसे गंभीर रूप से गहन भागों की गणना फ़्लोटिंग पॉइंट के बजाय 8 बिट्स के साथ की जाती है। नीचे दिए गए भार और सक्रियण दोनों की मात्रा निर्धारित करने के सापेक्ष कुछ अनुमान-समय प्रदर्शन ओवरहेड है।
अधिक जानकारी के लिए, TensorFlow Lite प्रशिक्षण उपरांत परिमाणीकरण मार्गदर्शिका देखें।
भार और सक्रियता का पूर्ण पूर्णांक परिमाणीकरण
विलंबता, प्रसंस्करण और बिजली के उपयोग में सुधार करें, और यह सुनिश्चित करके कि वजन और सक्रियण दोनों मात्राबद्ध हैं, पूर्णांक-केवल हार्डवेयर त्वरक तक पहुंच प्राप्त करें। इसके लिए एक छोटे प्रतिनिधि डेटा सेट की आवश्यकता होती है।
import tensorflow as tf
def representative_dataset_gen():
for _ in range(num_calibration_steps):
# Get sample input data as a numpy array in a method of your choosing.
yield [input]
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
tflite_quant_model = converter.convert()
परिणामी मॉडल सुविधा के लिए अभी भी फ़्लोट इनपुट और आउटपुट लेगा।
अधिक जानकारी के लिए, TensorFlow Lite प्रशिक्षण उपरांत परिमाणीकरण मार्गदर्शिका देखें।