يتضمن التكميم بعد التدريب تقنيات عامة لتقليل وقت استجابة وحدة المعالجة المركزية ومسرع الأجهزة والمعالجة والطاقة وحجم النموذج مع انخفاض طفيف في دقة النموذج. يمكن تنفيذ هذه التقنيات على نموذج TensorFlow العائم المُدرب بالفعل وتطبيقها أثناء تحويل TensorFlow Lite. يتم تمكين هذه التقنيات كخيارات في محول TensorFlow Lite .
للانتقال مباشرة إلى الأمثلة الشاملة، راجع البرامج التعليمية التالية:
- تكميم النطاق الديناميكي بعد التدريب
- بعد التدريب الكمي الكامل للأعداد الصحيحة
- تعويم ما بعد التدريب16 التكميم
تكميم الأوزان
يمكن تحويل الأوزان إلى أنواع ذات دقة منخفضة، مثل أعداد 16 بت أو أعداد صحيحة 8 بت. نوصي عمومًا بتعويم 16 بت لتسريع وحدة معالجة الرسومات وعدد صحيح 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 لما بعد التدريب .