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

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

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

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

Graph of model size vs accuracy

Graph of accuracy vs latency

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

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

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

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

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

الملف الشخصي وتحسين المشغلين في الرسم البياني

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

تحسين النموذج الخاص بك

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

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

قم بتعديل عدد المواضيع

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

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

التخلص من النسخ الزائدة

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

قم بتعريف تطبيقك باستخدام أدوات خاصة بالمنصة

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

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

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

  • استخدام واجهة برمجة التطبيقات للشبكات العصبية لنظام Android. يمكنك الاستفادة من الواجهات الخلفية لتسريع الأجهزة لتحسين سرعة وكفاءة النموذج الخاص بك. لتمكين واجهة برمجة التطبيقات للشبكات العصبية، راجع دليل مندوب NNAPI .
  • يتوفر مندوب GPU على نظامي التشغيل Android وiOS، باستخدام OpenGL/OpenCL وMetal، على التوالي. لتجربتها، راجع البرنامج التعليمي والوثائق الخاصة بمندوب GPU .
  • مندوب السداسي متاح على نظام Android. إنه يستفيد من Qualcomm Hexagon DSP إذا كان متاحًا على الجهاز. راجع البرنامج التعليمي لمندوب Hexagon لمزيد من المعلومات.
  • من الممكن إنشاء مندوب خاص بك إذا كان لديك إمكانية الوصول إلى الأجهزة غير القياسية. راجع مندوبي TensorFlow Lite لمزيد من المعلومات.

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

هل تريد المزيد من المساعدة

يسعد فريق TensorFlow بالمساعدة في تشخيص ومعالجة مشكلات الأداء المحددة التي قد تواجهها. يرجى تقديم مشكلة على GitHub مع تفاصيل المشكلة.