اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
أفضل الممارسات المتعلقة بتنفيذ برامج تشغيل NNAPI
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
توضّح هذه الصفحة أفضل الممارسات لتنفيذ ملفّات تشغيل Neural Networks API (NNAPI)
للسماح باعتماد NNAPI على نطاق واسع من قِبل مطوّري التطبيقات.
تقليل وقت بدء التشغيل
إذا كان برنامج التشغيل يحوّل أوزان نموذج عند الاستخدام الأول، تأكَّد من أنّه
يتوافق مع ميزة التخزين المؤقت للترجمة، ما يقلل من الوقت المستغرَق في الترجمة
عند بدء تشغيل التطبيق. وهذا أمر مهم لأنّ التطبيقات قد تتجنّب استخدام ميزة "تسريع الأجهزة" إذا كانت أوقات بدء التشغيل طويلة جدًا. على سبيل المثال، تتضمن بعض التطبيقات
أكثر من 100 ميغابايت من الأوزان، ويعد تحويل هذه الأوزان في كل مرة يتم فيها
تشغيل التطبيق أمرًا غير مجدٍ.
تقليل الحد الأدنى لوقت الاستجابة
لضمان استخدام النماذج لتسريع الأجهزة، من المهم تقليل
الحد الأدنى لوقت الاستجابة في برامج التشغيل. تستخدم العديد من التطبيقات نماذج صغيرة يتم تنفيذها
مرارًا وتكرارًا، وإذا كان الحد الأدنى لوقت الاستجابة لتنفيذ إحدى عمليات المعالجة مرتفعًا جدًا،
مثل بضعة مللي ثانية، قد تعمل النماذج على تنفيذ هذه العملية على وحدة المعالجة المركزية التي تتطلّب بدورها سوى
ملي ثانية أو اثنتين، بدلاً من
استخدام تقنيات تسريع الأجهزة. احرِص على عدم مزامنة المواضيع التي تتطلّب الكثير من الوقت.
استخدام مجموعة NN HAL SchedTune
بدءًا من Android 11 أو الإصدارات الأحدث، يتضمّن AOSP مجموعة
NN HAL
SchedTune
مخصّصة تسمح لعمليات NN HAL بين العمليات باستخدام معالجات أساسية
كبيرة، على غرار تنفيذ العملية نفسها ضمن مجموعة top-app
cgroup المحدّدة مسبقًا. يؤدي استخدام مجموعة
SchedTune هذه إلى تقليل النفقات العامة للسائق، خاصةً في النماذج الصغيرة.
لاستخدام مجموعة SchedTune، أضِف السطر التالي إلى ملف init.rc
في
عملية NN HAL:
writepid /dev/stune/nnapi-hal/tasks
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# NNAPI driver implementation best practices\n\n| **Deprecated:** Starting in Android 15, the\n| [NNAPI (NDK API)](https://developer.android.com/ndk/guides/neuralnetworks) is deprecated. The Neural Networks HAL interface\n| continues to be supported.\n|\n| For more information, see the\n| [NNAPI Migration Guide](https://developer.android.com/ndk/guides/neuralnetworks/migration-guide).\n\nThis page describes best practices for implementing Neural Networks API (NNAPI)\ndrivers to allow for broad adoption of the NNAPI by app developers.\n\nKeep startup times short\n------------------------\n\nIf your driver transforms the weights of a model on first use, make sure the\ndriver supports compilation caching, which reduces the time used for compilation\nwhen an app starts. This is important as apps might avoid using hardware\nacceleration if start-up times are too long. For example, some apps have\nmore than 100 MB of weights and transforming these each time the app\nlaunches is wasteful.\n\nReduce minimal latency\n----------------------\n\nTo ensure that models use hardware acceleration, it's important to reduce the\nminimal latency in drivers. Many apps use small models that are executed\nmultiple times and if the minimal latency to execute a workload is too high,\nsuch as a few milliseconds, models might run the workload on the CPU, which only\ntakes one or two milliseconds, instead of\nusing hardware accelerations. Be careful of costly thread synchronization.\n\nUse the NN HAL SchedTune group\n------------------------------\n\nFrom Android 11 or higher, AOSP includes a dedicated\nNN HAL\n[SchedTune](https://android.googlesource.com/kernel/msm/+/android-msm-marlin-3.18-nougat-dr1/Documentation/scheduler/sched-tune.txt)\ngroup that allows interprocess NN HAL processes to use big\ncores, similar to same-process implementation within the predefined\n`top-app` [cgroup](/docs/core/perf/cgroups). Using this\nSchedTune group reduces driver overhead, especially for small models.\n\nTo use the SchedTune group, add the following line to the `init.rc` file of\nthe NN HAL process: \n\n writepid /dev/stune/nnapi-hal/tasks"]]