مؤتمر Google I / O هو التفاف! تابع جلسات TensorFlow اعرض الجلسات

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

تتمتع الأجهزة المحمولة والأجهزة المدمجة بموارد حسابية محدودة ، لذلك من المهم الحفاظ على كفاءة موارد التطبيق. قمنا بتجميع قائمة بأفضل الممارسات والاستراتيجيات التي يمكنك استخدامها لتحسين أداء نموذج 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 طرقًا جديدة لتسريع النماذج باستخدام أجهزة أسرع مثل وحدات معالجة الرسومات (GPU) و DSPs والمسرعات العصبية. عادة ، يتم عرض هذه المسرعات من خلال الوحدات الفرعية للمفوضين التي تتولى أجزاء من تنفيذ المترجم الفوري. يمكن لـ TensorFlow Lite استخدام المندوبين من خلال:

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

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

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

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