أفضل الممارسات المتعلقة بتنفيذ برامج تشغيل NNAPI

توضّح هذه الصفحة أفضل الممارسات لتنفيذ برامج تشغيل واجهة برمجة التطبيقات Neural Networks API (NNAPI) من أجل السماح لمطوّري التطبيقات باستخدام واجهة برمجة التطبيقات NNAPI على نطاق واسع.

الحفاظ على أوقات بدء التشغيل قصيرة

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

تقليل الحد الأدنى لوقت الاستجابة

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

استخدام مجموعة NN HAL SchedTune

بدءًا من Android 11 والإصدارات الأحدث، يتضمّن مشروع Android مفتوح المصدر (AOSP) مجموعة SchedTune مخصّصة لطبقة تجريد الأجهزة (HAL) للشبكة العصبية، ما يتيح لعمليات طبقة تجريد الأجهزة (HAL) للشبكة العصبية بين العمليات استخدام النوى الكبيرة، على غرار التنفيذ داخل العملية نفسها ضمن top-app مجموعة التحكّم المحدّدة مسبقًا. يؤدي استخدام مجموعة SchedTune هذه إلى تقليل الحمل الزائد على برنامج التشغيل، خاصةً بالنسبة إلى النماذج الصغيرة.

لاستخدام مجموعة SchedTune، أضِف السطر التالي إلى ملف init.rc الخاص بعملية NN HAL:

writepid /dev/stune/nnapi-hal/tasks