我们先说Neural Networks API(NNAPI)。 NNAPI能够利用手机硬件本身加速推理运算。 对用于移动设备计算的机器学习框架Tensorflow Lite、Caffe2等来说,NNAPI可以提供一个基础层,通过将Android设备的数据应用到开发者定义好的预训练模型上,来支持支持推理运算。 如果手机上有专门的AI加速芯片,NNAPI就会利用这个芯片的运算能力;如果没有,就用手机的CPU进行计算。 通过这样的方式,NNAPI让Android App能够更高效地实现图像分类、用户行为预测、为搜索查询找到适当的响应等功能。
下图为 NNAPI 的简要系统架构。 ? 根据上面提供的信息,我们还可以推断如下结论: 因为 Android NNAPI 是一个 Android C API,所以应用一般不会直接使用 NNAPI,适配的任务落在机器学习框架上。 并不是所有 Android 设备都支持(需要 Android 8.1 及以上版本) NNAPI,应用程序开发者需要考虑不支持 NNAPI 的设备。 除了需要 Android 系统支持 NNAPI,芯片厂商需要提供 NN 驱动才行。虽然即使厂商不提供 NN 驱动,NNAPI也可以走 CPU 的路径,但这意味着并没有充分利用到 GPU 或 DSP。 另外需要指出,虽然一般应用开发者不会直接使用 NNAPI,但通过 NDK,应用程序直接使用 NNAPI 也是可以的,具体可以参考官方文档: https://developer.android.com/ndk
日前,瑞芯微Rockchip正式发布基于RK3399平台的Android 8.1 Neural Networks API (NNAPI)优化SDK,提供模型更通用、性能更强大的AI运算支持。 Android 8.1能充分调用神经网络API(NNAPI)进行硬件加速, 使RK3399 的AI运算性能大幅提升。 瑞芯微Rockchip本次发布的RK3399 SDK为基于Android 8.1 NNAPI的GPU加速方案,可为采用Android NNAPI开发的AI相关应用提供加速支持,具备四大优势特性: 1、兼容性广 :标准API,直接支持基于Android NNAPI开发的各类APK应用; 2、通用性强:可支持众多主流模型架构,适用于基于主流模型架构衍生开发的各类应用,包括人脸识别、ADAS、商品识别、疲劳检测等; 本次公开基于RK3399平台Android 8.1 NNAPI的优化SDK,将使其AI芯片产品线更具硬实力
INFO: Applied NNAPI delegate. /benchmark_model –graph=mobilenet_v1_1.0_224_quant.tflite –use_nnapi=true STARTING! Log parameter values verbosely: [0] Graph: [mobilenet_v1_1.0_224_quant.tflite] Use NNAPI: [1] NNAPI INFO: Applied NNAPI delegate. Log parameter values verbosely: [0] Graph: [mobilenet_v1_1.0_224_quant.tflite] Use NNAPI: [1] NNAPI
在具体讨论测试细节之前,我们首先要提到几个 Android NNAPI Bugs,这些漏洞同样影响了表中的一些结果。 首先是 Android 8.1 默认 NNAPI 驱动的漏洞,卷积运算在禁用这些驱动的情况下要比在启用时性能快两倍。 高通:骁龙芯片(Snapdragon)现在能为量化神经网络提供硬件加速(当高通的 NNAPI 驱动存在时),不过现有的商业设备并不支持浮点模型。 联发科:Helio P60 是首个能利用 NNAPI 驱动程序以加速浮点和量化模型的芯片组。 三星:截至本文写作时,三星的所有 SoC 都不能提供第三方 AI 应用的加速:所有配置这些芯片组的手机使用了默认的 NNAPI 驱动程序。
从Android 8.1开始集成Android Neural Networks API (NNAPI),解决了各芯片厂商各自为战的混乱场面。 NNAPI基本上是高级机器学习框架和设备的硬件加速资源之间的中间层,负责它们的通信以及在最合适的硬件上调度任务的执行。 Android NNAPI架构 有了NNAPI,厂商可以专注于提供和优化NN驱动,应用程序开发人员无需为不同平台开发不同的版本,简化了整个生态系统。 那么问题来了,手机AI哪家强?
在具体讨论测试细节之前,我们首先要提到几个 Android NNAPI Bugs,这些漏洞同样影响了表中的一些结果。 首先是 Android 8.1 默认 NNAPI 驱动的漏洞,卷积运算在禁用这些驱动的情况下要比在启用时性能快两倍。 高通:骁龙芯片(Snapdragon)现在能为量化神经网络提供硬件加速(当高通的 NNAPI 驱动存在时),不过现有的商业设备并不支持浮点模型。 联发科:Helio P60 是首个能利用 NNAPI 驱动程序以加速浮点和量化模型的芯片组。 三星:截至本文写作时,三星的所有 SoC 都不能提供第三方 AI 应用的加速:所有配置这些芯片组的手机使用了默认的 NNAPI 驱动程序。
等几个前端API已从测试版(beta)变为稳定版(stable); 除GPU外,JIT Compiler中对自动融合(automatic fusion)的支持目前也支持CPU了; Android NNAPI 移动端 PyTorch 去年PyTorch 就发布了对Android神经网络API(NNAPI)的原型支持,NNAPI的作用主要是允许Android应用程序使用手机芯片中最高效的部分来运行神经网络,支持的设备主要包括
[20190520200223.png] 构造一份分类器,需要用到模型文件,需要制定是使用CPU,还是NNAPI(Android Neural Networks API (NNAPI) 是一个 Android
由于技术问题,使用麒麟的NPU无法通过NNAPI加速整数计算,HiSilicon使用Arm NN驱动程序进行基于GPU的加速,但在这种情况下,性能低于高通和联发科的最佳结果。后者也导致基准分数较低。 此更新将包括最新的高通NNAPI驱动程序,将手机的AI功能提升到一个新的水平: LG G7 ThinQ使用这些驱动程序可以运行神经网络,速度比以前的Android Oreo固件快8倍。 不幸的是,许多其他配备SDM845的设备仍然有过时的高通驱动程序,或默认的Android NNAPI驱动程序没有为深度学习任务提供任何硬件加速。
由于技术问题,麒麟的 NPU 无法通过 NNAPI 加速整数运算,它会转而使用 Arm NN 驱动进行基于 GPU 的加速,在这种情况下其性能会低于高通和联发科——从而导致基准测试分数较低。 在过去的一年里,三星明显在这场 AI 博弈中落后了——高通正为骁龙的 DSP 开发其第一个 NNAPI 驱动,华为推出了搭载 NPU 的麒麟 970,联发科首次尝试在其 Helio P60 SoC 芯片上加速神经网络 此次更新将会包含最新的高通 NNAPI 驱动,能够把手机的 AI 能力带到新高度:搭载这种驱动的 LG G7 ThinQ 运行神经网络的速度是先前 Android Oreo 固件的 8 倍。 但不幸的是,装配骁龙 845 的许多其他设备要么是旧版高通驱动,要么默认 Android NNAPI 驱动,不能为深度学习任务提供任何硬件加速。
端侧AI推理实战(BERT模型部署) 代码示例: // 使用NNAPI加速推理 NeuralNetworksModel model = new NeuralNetworksModel(); model.addOperand NeuralNetworksCompilation compilation = new NeuralNetworksCompilation(model); compilation.setPreference(NNAPI.PREF_FAST_SINGLE_ANSWER
nGraph 或另一种适合特定硬件指令集的编译器格式 将图转化为 TensorFlow Lite 格式,然后在 TensorFlow Lite 运行时内部执行此图,或者通过 Android 神经网络 API (NNAPI
在未来,我们希望为这个示例应用探索更多的功能,包括: 1、Multi-pose估计 2、GPU加速与GPU委托 3、使用NNAPI委托加速NNAPI 4、训练后的量化模型,以减少延迟 5、附加的模型选项
使用 NNAPI 时,机器学习工作负载默认在 CPU 上运行,但硬件抽象层 (HAL) 机制也支持在其他类型的处理器或加速器上运行这些工作负载。 Arm 对 Google NNAPI 的支持概览 CMSIS-NN CMSIS-NN 是一系列高效神经网络内核的集合,其开发目的是最大程度地提升神经网络的性能,减少神经网络在面向智能物联网边缘设备的
lite/examples/posenet/android 未来的工作路线 在未来,我们希望为这个示例应用程序探索更多的功能,包括: 多姿态估计 通过 GPU delegate 进行 GPU 加速 通过 NNAPI delegate 进行 NNAPI 加速 通过训练后(post-training quantization)量化模型来减少延迟 更多的模型选项,如 ResNet PoseNet 模型 很开心能在这个夏天开发
Graph 不过从我对文档的理解来看,感觉更像是添加的一种硬件后端(代理我想应该只是调用调用层面,不是底层实现,另外在Hexagon DSP的委托代理部分,文档坦言说Hexagon DSP的代理就是为了补充NNAPI ,特别是针对那些NNAPI不可用DSP加速的、老旧驱动的设备,毕竟这些老旧设备也没有NNAPI这个东西,但有DSP硬件),交给模型的子图来去执行。 我的理解是委托代理的最大子图个数; 当前支持GPU, Hexagon, CoreML和NNAPI的委托代理; min_nodes_per_partition: int (default=delegate's 14341 curr=14632 min=7771 max=20203 avg=12198.5 std=2614 除GPU外,TFLite Delegate Utilies for Tooling还有NNAPI
CoreML 是 Apple 的系统框架,MLKit 和 NNAPI 是 Android 的系统框架,系统框架最大的优势是轻量性 —— 在包大小方面相对宽裕。 而最大的劣势是通用性,CoreML 需要 iOS 11+,MLKit 和 NNAPI 需要 Android 8.1+,可以覆盖的机型非常有限,同时难以支持嵌入式设备的使用场景。 针对设备硬件特性动态调度运行策略 计算优化 现有 Backend 持续优化(CPU/OpenGL/OpenCL/Vulkan/Metal) 优化 Arm v8.2 Backend,支持量化模型 使用 NNAPI
CoreML 是 Apple 的系统框架,MLKit 和 NNAPI 是 Android 的系统框架,系统框架最大的优势是轻量性 —— 在包大小方面相对宽裕。 而最大的劣势是通用性,CoreML 需要 iOS 11+,MLKit 和NNAPI 需要 Android 8.1+,可以覆盖的机型非常有限,同时难以支持嵌入式设备的使用场景。 针对设备硬件特性动态调度运行策略 计算优化: 现有 Backend 持续优化(CPU/OpenGL/OpenCL/Vulkan/Metal) 优化 Arm v8.2 Backend,支持量化模型 使用 NNAPI
最新版工具包含Androoid NNAPI、TFLite GPU,Hexagon NN, Samsung Eden, MediaTek Neuron delegates,因此支持所有手机平台,可以让用于选择特定的硬件加速器进行测试 它支持安卓,可以通过NNAPI进行神经网络推理,其性能接近中端智能手机硬件。所有参赛者需要提交INT8模型到外挂服务器并得到其模型速度反馈。