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

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

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

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

المشغلين المدعومة

تعد عوامل تشغيل TensorFlow Lite المضمنة مجموعة فرعية من عوامل التشغيل التي تشكل جزءًا من مكتبة TensorFlow الأساسية. قد يتضمن نموذج TensorFlow أيضًا عوامل تشغيل مخصصة في شكل عوامل تشغيل مركبة أو عوامل تشغيل جديدة تحددها أنت. ويبين الرسم البياني أدناه العلاقات بين هذه العوامل.

مشغلي TensorFlow

من بين هذه المجموعة من مشغلي نماذج ML، هناك 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 التي تتم إزالتها عادةً من الرسم البياني:

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

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

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