از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
بهترین شیوه های پیاده سازی درایور NNAPI
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این صفحه بهترین روشها را برای پیادهسازی درایورهای API شبکههای عصبی (NNAPI) توضیح میدهد تا امکان پذیرش گسترده NNAPI توسط توسعهدهندگان برنامه را فراهم کند.
زمان راه اندازی را کوتاه نگه دارید
اگر درایور شما وزنهای یک مدل را در اولین استفاده تغییر میدهد، مطمئن شوید که درایور از حافظه پنهان کامپایل پشتیبانی میکند، که زمان استفاده از کامپایل را هنگام شروع برنامه کاهش میدهد. این مهم است زیرا اگر زمان راهاندازی بیش از حد طولانی باشد، ممکن است برنامهها از شتاب سختافزاری استفاده نکنند. به عنوان مثال، برخی از برنامهها بیش از 100 مگابایت وزن دارند و تغییر آن در هر بار راهاندازی برنامه بیهوده است.
حداقل تأخیر را کاهش دهید
برای اطمینان از اینکه مدل ها از شتاب سخت افزاری استفاده می کنند، مهم است که حداقل تاخیر در درایورها را کاهش دهید. بسیاری از برنامهها از مدلهای کوچکی استفاده میکنند که چندین بار اجرا میشوند و اگر حداقل تأخیر برای اجرای یک بار کاری بسیار زیاد باشد، مثلاً چند میلیثانیه، مدلها ممکن است به جای استفاده از شتابهای سختافزاری، حجم کاری را روی CPU اجرا کنند که فقط یک یا دو میلیثانیه طول میکشد. مراقب همگام سازی نخ های پرهزینه باشید.
از گروه NN HAL SchedTune استفاده کنید
از Android 11 یا بالاتر، AOSP شامل یک گروه اختصاصی NN HAL SchedTune است که به فرآیندهای NN HAL بین پردازشی اجازه میدهد از هستههای بزرگ استفاده کنند، مشابه اجرای همان فرآیند در cgroup از پیش تعریفشده top-app
. استفاده از این گروه SchedTune باعث کاهش هزینه های اضافی درایور، به خصوص برای مدل های کوچک می شود.
برای استفاده از گروه SchedTune، خط زیر را به فایل init.rc
فرآیند NN HAL اضافه کنید:
writepid /dev/stune/nnapi-hal/tasks
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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"]]