2020年以来由于特殊的国际环境的影响下,原本在 AI边缘计算占有绝对优势的海思平台Hi35xx系列SoC 最终一货难求,导致国内其他AI SoC平台如同雨后春笋般激增。无论是真正的自主研发,还是套壳NVDLA,或直接购买已有NPU IP,只要能解决行业刚需问题,就是一颗优秀的AI SoC。本文主要介绍国内优秀的NPU IP供应商最新开源的TIM-VX项目,以及国产边缘AI推理框架Tengine适配TIM-VX加速器的初步进展。
什么是TIM-VX?
TIM-VX的全称是Tensor Interface Module for OpenVX,是VeriSilicon提供的用于在支持OpenVX的其自研ML加速器IP上实现深度学习神经网络模型部署。它可以做为Android NN、TensorFlow-Lite、MLIR、TVM、Tengine等Runtime Inference Framework的Backend模块。
主要特性:
- 支持超过130种算子,提供量化、浮点格式支持;
- 通过简单易用的 API 来实现 Tensor 和 Operator 的创建;
- 灵活的计算图构建;
- 内置自定义层扩展;
- 丰富的调试函数接口;
- 提供 X86 平台 Simulator 功能。
什么是 OpenVX?
OpenVX™ 是Khronos组织提出的一种计算机视觉应用程序跨平台加速标准。OpenVX 给对性能和功耗敏感的计算机视觉处理应用提供软件编程接口,特别是在嵌入式和实时的应用案例中,例如人脸、身体和手势跟踪、智能视频监控、先进的驾驶辅助系统(ADAS)、对象和场景重建、增强现实、视觉检测、机器人等应用。
关于 OpenVX 更加详细的介绍及最新版本动态可以直接关注 Khronos OpenVX 的版块
https://www.khronos.org/openvx/www.khronos.org
Tengine 完美适配 TIM-VX
最近一年,通过对代码的重构,目前的Tengine已经实现优秀的前后端分离、异构切图、混合精度计算的功能。
因此在适配 TIM-VX 后端的时候并没有较大的gap。启用TIM-VX后端模式时,加载Tengine专有的网络模型存储文件tmfile后,框架自动对原始计算图按照TIM-VX 已配置支持的算子列表进行子图(Subgraph)切割。
同时Tengine由于支持多种量化方案(Int8、UInt8、Per-Layer、Per-Channel),当然也无缝支持TIM-VX私有的量化策略。所以原理上可以继承Tengine Quantization Tool 优秀的PTQ精度调优成果。
项目进展
Tengine的开发小伙伴赶在2021年春节前,已基于Khadas VIM3和x86\_64 simulator完成Tengine with TIM-VX PoC 功能发布。
具体使用指南请参考:
https://github.com/OAID/Tengine/blob/tengine-lite/doc/npu\_tim-vx\_user\_manual.mdgithub.com
后续计划
后续Tengine的小伙伴将在开源社区协同TIM-VX的工程师持续开展合作,支持更多硬件设备(年后在 NXP 工程师的配合下,已完成i.MX 8M Plus中NPU适配)和适配更广泛网络模型。
团队的大目标是通过Tengine的开源项目希望能给对AI SoC芯片感兴趣的伙伴提供一种通用、可靠的参考设计,赋能行业创造出更多有价值、有趣的AIoT产品。欢迎更多NPU厂家加入我们的开源项目~
插个楼,Tengine已支持NV GPU各平台,欢迎试用(同时我们终于找到了媲美Jetson NX平台的国产化工业级替代方案,正在努力适配中,预计3月底放出,请大家持续关注)。——Tengine在GPU上支持CUDA/TensorRT加速啦!
相关链接传送门
我是圈圈虫,一个热爱技术的中年大叔。快加入 OPEN AI LAB 开发者技术 QQ 群(829565581)来找我吧!溜了~~
入群秘令:CNN
更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。