В Android 10 API нейронных сетей (NNAPI) представляет функции, которые позволяют библиотекам и приложениям фреймворка машинного обучения получать информацию о доступных устройствах и указывать, на каких устройствах выполнять модель. Предоставление информации о доступных устройствах позволяет приложениям получать точную версию драйверов, найденных на устройстве, чтобы избежать известных несовместимостей. Предоставляя приложениям возможность указывать, какие устройства должны выполнять различные разделы модели, приложения можно оптимизировать для продукта, на котором они развернуты.
Для реализаций NN HAL 1.2 требуется поддержка обнаружения и назначения устройств.
Выполнение
Для поддержки функций обнаружения и назначения устройств в NNAPI реализуйте getType
и getVersionString
в IDevice.hal
, чтобы позволить фреймворку получать тип устройства и версию драйвера.
Для каждого устройства укажите тип как одну из следующих категорий, указанных в DeviceType
в types.hal
.
-
OTHER
: Устройство, которое не попадает ни в одну из других категорий, включая гетерогенный интерфейс, который является единым интерфейсомIDevice
, который управляет несколькими устройствами, возможно, разных типов. Драйвер с гетерогенным интерфейсом также должен предоставлять отдельные интерфейсыIDevice
, которые соответствуют отдельным устройствам, чтобы позволить приложению выбирать из этих устройств. -
CPU
: одноядерный или многоядерный ЦП. -
GPU
: графический процессор, который может запускать модели NNAPI и ускорять графические API, такие как OpenGL ES и Vulkan. -
ACCELERATOR
: специализированный нейронный процессор (NPU).
Реализуйте getVersionString
в IDevice.hal
для получения строки версии реализации устройства. Этот метод должен возвращать строку, удобочитаемую для человека. Формат строки зависит от поставщика. Строка версии должна отличаться для каждой новой версии драйвера.
Имя интерфейса IDevice
должно соответствовать формату {VENDOR}-{DEVICE_NAME}
.