החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
שיטות מומלצות להטמעת מנהלי NNAPI
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
בדף הזה מפורטות שיטות מומלצות להטמעת מנהלי Neural Networks API (NNAPI) כדי לאפשר למפתחי אפליקציות להשתמש ב-NNAPI באופן נרחב.
קיצור זמני ההפעלה
אם הנהג מבצע טרנספורמציה של המשקלים של מודל בשימוש הראשון, חשוב לוודא שהוא תומך בשמירת הידור במטמון, כדי לקצר את זמן ההידור בזמן הפעלת האפליקציה. זה חשוב כי אפליקציות עשויות להימנע משימוש בהאצהרת חומרה אם זמני ההפעלה ארוכים מדי. לדוגמה, באפליקציות מסוימות יש יותר מ-100MB של משקלים, והמרה שלהם בכל פעם שהאפליקציה מופעלת היא בזבוז.
הפחתת זמן האחזור המינימלי
כדי לוודא שהמודלים משתמשים בהאצת חומרה, חשוב לצמצם את זמן האחזור המינימלי בדרייברים. באפליקציות רבות נעשה שימוש במודלים קטנים שפועלים כמה פעמים. אם זמן האחזור המינימלי להפעלת עומס עבודה גבוה מדי, למשל כמה אלפיות שנייה, יכול להיות שהמודלים יפעלו את עומס העבודה ב-CPU, שבו הפעולה נמשכת אלפית שנייה או שתיים בלבד, במקום להשתמש בהאצת חומרה. חשוב להיזהר מסנכרון של שרשורים יקר.
שימוש בקבוצה NN HAL SchedTune
החל מגרסה Android 11 ואילך, AOSP כולל קבוצה ייעודית של SchedTune ל-NN HAL, שמאפשרת לתהליכי NN HAL בין תהליכים להשתמש בליבות גדולות, בדומה להטמעה של אותו תהליך בתוך cgroup top-app
שהוגדר מראש. השימוש בקבוצה הזו של SchedTune מפחית את התקורה של מנהל ההתקן, במיוחד במודלים קטנים.
כדי להשתמש בקבוצה SchedTune, מוסיפים את השורה הבאה לקובץ init.rc
של תהליך NN HAL:
writepid /dev/stune/nnapi-hal/tasks
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","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 (שעון UTC)."],[],[],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"]]