Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Các phương pháp hay nhất để triển khai trình điều khiển NNAPI
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trang này mô tả các phương pháp hay nhất để triển khai trình điều khiển Neural Networks API (NNAPI) nhằm cho phép nhà phát triển ứng dụng sử dụng rộng rãi NNAPI.
Rút ngắn thời gian khởi động
Nếu trình điều khiển của bạn biến đổi trọng số của một mô hình trong lần sử dụng đầu tiên, hãy đảm bảo trình điều khiển hỗ trợ lưu vào bộ nhớ đệm quá trình biên dịch, giúp giảm thời gian dùng để biên dịch khi ứng dụng khởi động. Điều này rất quan trọng vì các ứng dụng có thể tránh sử dụng tính năng tăng tốc phần cứng nếu thời gian khởi động quá lâu. Ví dụ: một số ứng dụng có trọng số hơn 100 MB và việc chuyển đổi các trọng số này mỗi khi ứng dụng khởi chạy sẽ gây lãng phí.
Giảm độ trễ tối thiểu
Để đảm bảo rằng các mô hình sử dụng tính năng tăng tốc phần cứng, bạn cần giảm độ trễ tối thiểu trong trình điều khiển. Nhiều ứng dụng sử dụng các mô hình nhỏ được thực thi nhiều lần và nếu độ trễ tối thiểu để thực thi khối lượng công việc quá cao, chẳng hạn như vài mili giây, thì các mô hình có thể chạy khối lượng công việc trên CPU, chỉ mất một hoặc hai mili giây thay vì sử dụng tính năng tăng tốc phần cứng. Hãy cẩn thận với việc đồng bộ hoá luồng tốn kém.
Sử dụng nhóm NN HAL SchedTune
Từ Android 11 trở lên, AOSP bao gồm một nhóm SchedTune HAL NN chuyên dụng cho phép các quy trình HAL NN giữa các quy trình sử dụng các nhân lớn, tương tự như việc triển khai cùng một quy trình trong cgroup top-app
được xác định trước. Việc sử dụng nhóm SchedTune này sẽ làm giảm hao tổn trình điều khiển, đặc biệt là đối với các mô hình nhỏ.
Để sử dụng nhóm SchedTune, hãy thêm dòng sau vào tệp init.rc
của quy trình NN HAL:
writepid /dev/stune/nnapi-hal/tasks
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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"]]