Обнаружение и назначение устройств

В Android 10 API нейронных сетей (NNAPI) представляет функции, которые позволяют библиотекам и приложениям платформы машинного обучения получать информацию о доступных устройствах и указывать, на каких устройствах выполнять модель. Предоставление информации о доступных устройствах позволяет приложениям получать точную версию драйверов, найденных на устройстве, чтобы избежать известных несовместимостей. Предоставляя приложениям возможность указывать, какие устройства должны выполнять различные разделы модели, приложения можно оптимизировать для продукта, на котором они развернуты.

Для реализации NN HAL 1.2 требуется поддержка обнаружения и назначения устройств.

Выполнение

Для поддержки функций обнаружения и назначения устройств в NNAPI реализуйте getType и getVersionString в IDevice.hal , чтобы платформа могла получать тип устройства и версию драйвера.

Для каждого устройства укажите тип как одну из следующих категорий, как указано в DeviceType в types.hal .

  • OTHER : устройство, которое не попадает ни в одну из других категорий, включая гетерогенный интерфейс, который представляет собой единый интерфейс IDevice , который управляет несколькими устройствами, возможно, разных типов. Драйвер с разнородным интерфейсом также должен предоставлять отдельные интерфейсы IDevice , соответствующие отдельным устройствам, чтобы приложение могло выбирать из этих устройств.
  • CPU : одноядерный или многоядерный ЦП.
  • GPU : GPU, который может запускать модели NNAPI и ускорять графические API, такие как OpenGL ES и Vulkan.
  • ACCELERATOR : специальный нейронный процессор (NPU).

getVersionString в IDevice.hal для получения строки версии реализации устройства. Этот метод должен возвращать строку, удобочитаемую для человека. Формат строки зависит от поставщика. Строка версии должна быть разной для каждой новой версии драйвера.

Имя интерфейса IDevice должно соответствовать формату {VENDOR}-{DEVICE_NAME} .