Android 10의 NNAPI(Neural Networks API)에는 머신러닝 프레임워크 라이브러리 및 앱이 사용 가능한 기기에 대한 정보를 얻고 어떤 기기에 모델을 실행할지 지정할 수 있게 해주는 기능이 도입되었습니다. 사용 가능한 기기에 관한 정보를 제공하면 앱에서 알려진 비호환성을 피하기 위해 기기에 있는 드라이버의 정확한 버전을 확인할 수 있습니다. 모델의 다양한 섹션을 실행할 기기를 지정할 수 있는 기능을 앱에 제공하면 앱이 배포된 제품에 맞게 최적화됩니다.
NN HAL 1.2 구현에는 기기 검색 및 할당 지원이 필요합니다.
구현
NNAPI에서 기기 검색 및 할당 기능을 지원하려면 getType
및 getVersionString
을 IDevice.hal
에서 구현하여 프레임워크가 기기 유형 및 드라이버 버전 정보를 가져올 수 있도록 합니다.
각 기기에서 types.hal
의 DeviceType
에 지정된 대로 다음 카테고리 중 하나로 유형을 지정합니다.
OTHER
: 유형이 다를 수 있는 여러 기기를 관리하는 단일IDevice
인터페이스인 이종 인터페이스를 포함해 다른 어떤 카테고리에도 속하지 않는 기기입니다. 이종 인터페이스를 포함하는 드라이버는 개별 기기와 일치하여 애플리케이션이 이러한 기기를 선택할 수 있게 해주는 별도의IDevice
인터페이스도 노출시켜야 합니다.CPU
: 단일 코어 또는 멀티 코어 CPU입니다.GPU
: NNAPI 모델을 실행할 수 있고 OpenGL ES 및 Vulkan과 같은 그래픽 API의 속도를 높여주는 GPU입니다.ACCELERATOR
: 전용 NPU(신경망 처리 장치)입니다.
기기 구현의 버전 문자열을 가져오기 위한 getVersionString
을 IDevice.hal
에서 구현합니다.
이 메서드는 사람이 읽을 수 있는 문자열을 반환해야 합니다. 문자열 형식은 공급업체마다 다릅니다. 버전 문자열은 드라이버의 새로운 버전마다 달라야 합니다.
IDevice
인터페이스의 이름은 {VENDOR}-{DEVICE_NAME}
형식을 따라야 합니다.