تكميم ما بعد التدريب

يتضمن التكميم بعد التدريب تقنيات عامة لتقليل زمن انتقال وحدة المعالجة المركزية ومسرع الأجهزة ، والمعالجة ، والطاقة ، وحجم النموذج مع انخفاض ضئيل في دقة النموذج. يمكن تنفيذ هذه التقنيات على نموذج تعويم TensorFlow تم تدريبه بالفعل وتطبيقه أثناء تحويل TensorFlow Lite. يتم تمكين هذه التقنيات كخيارات في محول TensorFlow Lite .

للانتقال مباشرة إلى الأمثلة الشاملة ، راجع البرامج التعليمية التالية:

قياس الأوزان

يمكن تحويل الأوزان إلى أنواع ذات دقة منخفضة ، مثل عوامات 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.