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

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

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

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

الأنواع المدعومة

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

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

العمليات والقيود المدعومة

يدعم TensorFlow Lite مجموعة فرعية من عمليات TensorFlow مع بعض القيود. للحصول على قائمة كاملة بالعمليات والقيود ، راجع صفحة TF Lite Ops .

تحويلات مباشرة إلى الأمام ، طي ثابت ودمج

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

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

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

عمليات TensorFlow Lite التالية موجودة ولكنها ليست جاهزة للنماذج المخصصة:

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