التوافق مع عاملَي التشغيل TensorFlow Lite وTensorFlow

يمكن لعوامل تشغيل التعلم الآلي التي تستخدمها في نموذجك أن تؤثر في عملية تحويل نموذج TensorFlow إلى TensorFlow Lite يدعم المحول TensorFlow Lite عددًا محدودًا من عمليات TensorFlow المستخدمة في نماذج الاستنتاج الشائعة، ما يعني أنّه لا يمكن تحويل كل نموذج بشكل مباشر. تتيح لك أداة المحوِّل تضمين عوامل تشغيل إضافية، ولكن تحويل النموذج بهذه الطريقة يتطلّب أيضًا تعديل بيئة وقت تشغيل TensorFlow Lite التي تستخدمها لتنفيذ نموذجك، ما قد يحدّ من قدرتك على استخدام خيارات النشر العادية في وقت التشغيل، مثل خدمات Google Play.

تم تصميم TensorFlow Lite Converter لتحليل بنية النموذج وتطبيق التحسينات من أجل جعله متوافقًا مع عوامل التشغيل المتوافقة مباشرةً. على سبيل المثال، بناءً على عوامل تشغيل تعلُّم الآلة في النموذج الذي تستخدمه، قد يزيل أو يدمج عوامل التشغيل هذه من أجل ربطها بنظيراتها في TensorFlow Lite.

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

عوامل التشغيل المتوافقة

عوامل TensorFlow Lite المضمنة هي مجموعة فرعية من المشغلات التي تشكل جزءًا من مكتبة TensorFlow الأساسية. قد يشتمل نموذج 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.

الأنواع المتوافقة

تستهدف معظم عمليات TensorFlow Lite كلاً من استنتاج النقطة العائمة (float32) والاستنتاج الكمي (uint8، وint8)، لكن لا يتم حتى الآن تنفيذ العديد من العمليات لأنواع أخرى مثل tf.float16 والسلاسل.

بصرف النظر عن استخدام إصدارات مختلفة من العمليات، فإن الاختلاف الآخر بين النماذج ذات النقطة العائمة والنماذج الكمية هو طريقة تحويلها. يتطلب التحويل الكمّي معلومات النطاق الديناميكي للدوال المغناطيسية. ويتطلب ذلك "التحديد الكمي الزائف" أثناء تدريب النموذج، أو الحصول على معلومات النطاق من خلال مجموعة بيانات معايرة، أو تقدير النطاق "بشكل سريع". لمزيد من التفاصيل، يمكنك الاطّلاع على تحديد الكمية.

الإحالات الناجحة المباشرة، والطي المستمر والدمج

يمكن معالجة عدد من عمليات TensorFlow بواسطة TensorFlow Lite على الرغم من أنها ليس لها مكافئ مباشر. هذا هو الحال مع العمليات التي يمكن إزالتها ببساطة من الرسم البياني (tf.identity)، أو استبدالها بالأرقاقات (tf.placeholder)، أو دمجها في عمليات أكثر تعقيدًا (tf.nn.bias_add). حتى بعض العمليات المتوافقة قد تتم إزالتها في بعض الأحيان من خلال إحدى هذه العمليات.

في ما يلي قائمة غير شاملة بعمليات TensorFlow التي تتم إزالتها عادةً من الرسم البياني:

  • tf.add
  • tf.debugging.check_numerics
  • tf.constant
  • tf.div
  • tf.divide
  • tf.fake_quant_with_min_max_args
  • tf.fake_quant_with_min_max_vars
  • tf.identity
  • tf.maximum
  • tf.minimum
  • tf.multiply
  • tf.no_op
  • tf.placeholder
  • tf.placeholder_with_default
  • tf.realdiv
  • tf.reduce_max
  • tf.reduce_min
  • tf.reduce_sum
  • tf.rsqrt
  • tf.shape
  • tf.sqrt
  • tf.square
  • tf.subtract
  • tf.tile
  • tf.nn.batch_norm_with_global_normalization
  • tf.nn.bias_add
  • tf.nn.fused_batch_norm
  • tf.nn.relu
  • tf.nn.relu6

العمليات التجريبية

عمليات TensorFlow Lite التالية متاحة، ولكنها غير جاهزة للنماذج المخصّصة:

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