التوافق مع مُشغِّلي LiteRT وTensorFlow

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

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

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

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

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

عوامل تشغيل TensorFlow

من هذا النطاق لمشغّلي نموذج تعلُّم الآلة، هناك 3 أنواع من النماذج التي تدعمها عملية التحويل:

  1. الطُرز التي تتضمّن مشغّلًا مضمّنًا فقط في LiteRT (يُنصح به)
  2. نماذج تتضمّن عوامل التشغيل المضمَّنة واختيار TensorFlow والمشغلين الأساسيين.
  3. نماذج تتضمّن عوامل التشغيل المدمَجة و/أو عوامل التشغيل الأساسية TensorFlow مشغلات مخصصة.

إذا كان النموذج يحتوي فقط على عمليات مدعومة في الأصل LiteRT، لن تحتاج إلى أي علامات إضافية لتحويله. هذا النمط هو المسار الموصى به لأن هذا النوع من النماذج سيتم تحويله بسلاسة ويسهل تحسينها وتشغيلها باستخدام وقت تشغيل LiteRT التلقائي. يتوفر لديك أيضًا المزيد من خيارات نشر النموذج، مثل خدمات Google Play: يمكنك البدء باستخدام دليل محوّلات LiteRT عرض صفحة LiteRT Ops للحصول على قائمة المشغلات المضمنة.

إذا أردت تضمين عمليات محدَّدة من TensorFlow من المكتبة الأساسية، يجب تحديد ذلك عند إجراء الإحالة الناجحة والتأكّد من أنّ بيئة التشغيل تتضمّن تلك العمليات التجارية. راجِع موضوع اختيار عوامل التشغيل TensorFlow الخطوات التفصيلية.

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

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

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

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

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

يمكن معالجة عدد من عمليات TensorFlow بواسطة LiteRT حتى على الرغم من عدم وجود مكافئ مباشر لها. هذا هو الحال مع العمليات التي يمكن ستتم إزالتها ببساطة من الرسم البياني (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

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

تتوفّر عمليات LiteRT التالية، ولكنّها غير جاهزة للاستخدام النماذج:

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