أفضل ممارسات الأداء

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

اختيار أفضل نموذج للمهمة

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

الرسم البياني لحجم النموذج مقابل الدقة

رسم بياني للدقة مقارنةً بوقت الاستجابة

أحد الأمثلة على النماذج المحسّنة للأجهزة الجوّالة هو MobileNets، والتي تم تحسينها لتطبيقات الرؤية للأجهزة الجوّالة. يسرد TensorFlow Hub العديد من الطُرز الأخرى التي تم تحسينها خصيصًا للأجهزة الجوّالة والأجهزة المضمَّنة.

يمكنك إعادة تدريب النماذج المدرجة على مجموعة البيانات الخاصة بك باستخدام تعلم النقل.

إنشاء ملف شخصي لنموذجك

بمجرد تحديد نموذج المرشح المناسب لمهمتك، يكون من الممارسات الجيدة تحليل نموذجك وقياسه. تحتوي أداة قياس الأداء في TensorFlow Lite على محلّل مدمج يعرض إحصاءات تحليل البيانات حسب عامل التشغيل. ويمكن أن يساعد ذلك في فهم المؤثِّرات السلبية على الأداء والعوامل التي تهيمن على وقت العمليات الحسابية.

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

تحديد عوامل التشغيل وتحسينها في الرسم البياني

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

تحسين النموذج

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

راجِع مستندات تحسين النماذج للحصول على التفاصيل.

تعديل عدد سلاسل المحادثات

يتوافق TensorFlow Lite مع نواة متعدّدة السلاسل مع العديد من عوامل التشغيل. يمكنك زيادة عدد سلاسل المحادثات وتسريع تنفيذ عوامل التشغيل. ومع ذلك، ستؤدي زيادة عدد سلاسل المحادثات إلى جعل النموذج يستخدم المزيد من الموارد والقوة.

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

إزالة النُسخ المكررة

فإذا لم يتم تصميم تطبيقك بعناية، فقد يكون هناك نسخ مكررة من التطبيق عند إدخال البيانات إلى النموذج وقراءة ناتجه. تأكد من التخلص من النُسخ المكررة. إذا كنت تستخدم واجهات برمجة تطبيقات ذات مستوى أعلى، مثل Java، احرص على مراجعة المستندات بعناية بحثًا عن تنبيهات متعلقة بالأداء. على سبيل المثال، تكون واجهة برمجة تطبيقات Java أسرع بكثير إذا تم استخدام ByteBuffers كـ إدخالات.

إنشاء ملف شخصي على تطبيقك باستخدام الأدوات الخاصة بالنظام الأساسي

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

تقييم ما إذا كان نموذجك يستفيد من استخدام مسرِّعات الأجهزة المتاحة على الجهاز

أضافت TensorFlow Lite طرقًا جديدة لتسريع النماذج باستخدام أجهزة أسرع، مثل وحدات معالجة الرسومات ووحدة معالجة الصوت (DSP) والمسرِّعات العصبية. ويتم عادةً عرض هذه المسرِّعات من خلال الوحدات الفرعية المفوَّضة التي تتولّى مهام تنفيذ مهام الترجمة الفورية. يمكن لتطبيق TensorFlow Lite استخدام المفوَّضين عن طريق:

  • يتوفر تفويض وحدة معالجة الرسومات على نظامي التشغيل Android وiOS باستخدام OpenGL/OpenCL وMetal، على التوالي. لتجربتها، يمكنك الاطّلاع على المُفوَّض من وحدة معالجة الرسومات.
  • ومن الممكن إنشاء تفويضك الخاص إذا كان لديك حق الوصول إلى أجهزة غير قياسية. يُرجى الاطّلاع على مفوَّضي TensorFlow Lite للحصول على مزيد من المعلومات.

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