يمكن أن تؤثر عوامل التعلم الآلي (ML) التي تستخدمها في نموذجك على عملية تحويل التبديل من نموذج TensorFlow إلى تنسيق LiteRT محوّل LiteRT متوافقًا مع عدد محدود من عمليات TensorFlow المستخدمة بشكل مشترَك أي نماذج استنتاجية، مما يعني أنه ليس كل نموذج قابل للتحويل بشكل مباشر. تتيح لك أداة التحويل تضمين عوامل تشغيل إضافية، لكن تحويل فإن أي نموذج بهذه الطريقة يتطلب منك أيضًا تعديل وقت تشغيل LiteRT البيئة التي تستخدمها لتنفيذ نموذجك، مما قد يحد من قدرتك تستخدم خيارات نشر بيئة التشغيل القياسية، مثل خدمات Google Play:
تم تصميم محول LiteRT لتحليل نموذج هيكلة وتطبيق التحسينات كي يصبح متوافقًا مع المشغلات المعتمدة بشكل مباشر. على سبيل المثال، اعتمادًا على عوامل التعلم الآلي في نموذجك، فقد يكون المحوّل إزالة أو دمج هذه المشغلات من أجل تعيينها إلى نظرائها في LiteRT.
وحتى بالنسبة للعمليات المعتمدة، من المتوقع أحيانًا أنماط استخدام محددة، لأسباب تتعلق بالأداء. أفضل طريقة لفهم كيفية إنشاء TensorFlow نموذج يمكن استخدامه مع LiteRT هو التفكير بعناية في كيفية تحويل العمليات وتحسينها، إلى جانب القيود التي تفرضها هذه العملية.
عوامل التشغيل المتوافقة
تعد عوامل التشغيل المدمَجة في LiteRT مجموعة فرعية من العوامل. التي تشكّل جزءًا من مكتبة TensorFlow الأساسية قد يكون نموذج TensorFlow الخاص بك عليك أيضًا تضمين عوامل التشغيل المخصّصة في شكل عوامل تشغيل مركّبة. أو عوامل تشغيل جديدة تحددها أنت. يوضح الرسم التخطيطي أدناه العلاقات بين هذه العوامل.
من هذا النطاق لمشغّلي نموذج تعلُّم الآلة، هناك 3 أنواع من النماذج التي تدعمها عملية التحويل:
- الطُرز التي تتضمّن مشغّلًا مضمّنًا فقط في LiteRT (يُنصح به)
- نماذج تتضمّن عوامل التشغيل المضمَّنة واختيار TensorFlow والمشغلين الأساسيين.
- نماذج تتضمّن عوامل التشغيل المدمَجة و/أو عوامل التشغيل الأساسية 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