Thực tiễn tốt nhất về triển khai trình điều khiển NNAPI

Trang này mô tả các phương pháp hay nhất để triển khai trình điều khiển API Mạng thần kinh (NNAPI) nhằm cho phép các nhà phát triển ứng dụng áp dụng rộng rãi NNAPI.

Giữ thời gian khởi động ngắn

Nếu trình điều khiển của bạn chuyển đổi trọng số của 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ợ bộ nhớ đệm biên dịch, giúp giảm thời gian sử dụng để biên dịch khi ứng dụng khởi động. Điều này 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á dài. Ví dụ: một số ứng dụng có trọng lượng 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 là điều 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, điều quan trọng là phải 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 phần cứng gia tốc. Hãy cẩn thận với việc đồng bộ hóa luồng tốn kém.

Sử dụng nhóm NN HAL SchedTune

Từ Android 11 trở lên, AOSP bao gồm nhóm NN HAL SchedTune chuyên dụng cho phép các quy trình NN HAL liên xử lý sử dụng các lõi 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 giúp giảm chi phí cho trình điều khiển, đặc biệt đối với các kiểu máy 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