22

Tengine 支持 AML、RK NPU 第2篇-A311D

 3 years ago
source link: https://zhuanlan.zhihu.com/p/265651398
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

背景

2020年风云变幻,原本以为嵌入式端侧 AI 芯片“大菊已定”。

BZrya2j.jpg!mobile

但国内最大智能电视芯片厂商——晶晨半导体(Amlogic)

UZnYvmu.jpg!mobile

却在从2019年开始,陆陆续续(悄悄咪咪)发布了S905D3,A311D,C308X 等几款能覆盖边缘计算盒子、智能IPC应用场景的 AI SoC。

参数对比

先简单介绍下当前国内可满足采用 NPU方案的 IPC 或 边缘计算盒子,市场假象划分(为什么是假象,因为是通过各种道听途说,拍脑袋总结出来的,仅供参考,别对号入座,若有误导请及时斧正)。

然而最近,特殊原因导致海思的芯片供应链出现问题,大家都表示担忧。难过归难过,企业/项目/生活还是要坚持过下去的。通过奇怪的渠道从 Amlogic 的芯片池中找到了两三款临时应急方案,算是歪打正着缓解了大家的燃眉之急。

常规参数

z6Zreqm.jpg!mobile

AI 性能

aAjy6bI.jpg!mobile 啊~我尽力补全!

从参数可以看出,Amlogic 已有芯片能够实现 Hi3519A 替代方案 的功能。

新问题

平台切换,需要成本,而内置 NPU 的 SoC 软件开发,最担心的两个地方是:

学习成本高

其实,圈圈虫入坑AI以来,尝试过端侧各种AI芯片的开发、部署工具。易用性上 Amlogic 的 Acuity-Toolkit 已经算是一线大厂水准的工具了。但是有没有更简单粗暴的方案?

B7fi2aV.jpg!mobile 思考.jpg

早在一个月前,Tengine Lite 已经完美适配 A311D 等芯片,采用 Tengine 已有的模型格式 tmfile,仅需在原有 CPU demo 的基础上,增加2行代码,就能实现这两款芯片运行。

CPU 代码

/* load model, create tengine nn graph */ 
graph_t graph = create_graph(vx_context, "tengine", model_file);

NPU 代码

/* create device context */ 
context_t vx_context = create_context("vx", 1); 

/* add npu device */ 
add_context_device(vx_context, VXDEVICE); 

/* load model, create tengine nn graph */ 
graph_t graph = create_graph(vx_context, "tengine", model_file);

与此同时,我们支持了异构计算自适应混合精度切图,在加载模型时,将计算图切割成能运行在不同硬件后端的子图,极大增强了对各种网络模型兼容性。进一步降低了 A311D 等芯片的工程部署难度。

Bzi6nm3.jpg!mobile

NPU模型精度

哎,每逢 NPU 应用,都会碰见精度问题,那怕是之前嵌入式AI芯片“大菊已定”的 NNIE,也有网络模型量化成 .wk 文件后精度翻车的案例。所以还不得不提供了量化重训练工具。

其实现在的端侧 AI NPU,量化策略大同小异(毕竟要支持全球最大的AI生态公司,要按照别人的游戏规则来)。

早在上半年疫情期间,Tengine 组的 HH 小哥哥,被关在家里,从最近模型压缩量化相关的 paper 中总结出一套组合拳,已经提前完成类似 NPU 芯片的精度补偿,同时也快速迁移到 A311D 的适配中,得到较为满意的结果。

zAZfqeB.png!mobile

端侧 AI 芯片量化,trick 太多,圈圈虫 也在努力推动公司进行开源/开放。欢迎大家积极关注 Tengine GitHub 社区(求 star……)

Tengine

Tengine 是 OPEN AI LAB 推出的面向 AIoT 场景 的 AI 应用开发平台,致力于解决 AIoT 产业链碎 片化问题,加速 AI 产业化落地。Tengine 专为 AIoT 场景设计,同时具有跨平台、异构调度、芯片底层加速、超轻量无依赖、完整开发移植部署工具链几大特点。Tengine 兼容多种操作系统和深度学习算法框架,简化和加速面向场景的 AI 算法在嵌入式边缘设备上快速迁移,以及实际应用部署落地。

ERviama.jpg!mobile

开放的边缘AI计算框架

NzQrIre.jpg!mobile

异构/加速-激活芯片性能

7fuABne.jpg!mobile

杂谈

Khadas

Khadas丨中文站 www.khadas.cn QZ3QRbF.png!mobile

Khadas 隶属于深圳市世野科技有限公司的开源品牌,目前是市面上能买到的最好看的 A311D SBC(大佬说不能叫开发板,应该是 Single Board Computer)。

zyuQrin.jpg!mobile VIM3 (A73+A53+5Tops)

人脸面板机(调试板)

Tengine 团队已经完成了基于 VIM3 开发板的 NPU 人脸检测相关模型适配。

uEnaAjA.jpg!mobile 感谢 Khadas 的支持

Khadas VIM3(A311D) + Tengine Lite + NPU FaceDetection & Landmark

知乎视频 www.zhihu.com feYriu.png!mobile

IPC(调试板)

Amlogic 的 IPC 方案也又啦!太卷了……

EneQrmm.jpg!mobile C308X 38板卡

传送门

OAID/Tengine github.com 圈圈虫:Tengine 支持 AML、RK NPU 第1篇-闲聊 zhuanlan.zhihu.com Rn6VruA.jpg!mobile

我是 圈圈虫,一个热爱技术的中年大叔。快加入 OPEN AI LAB 开发者技术 QQ 群(829565581)来找我吧!溜了~~

入群秘令:CNN

https:// qm.qq.com/cgi-bin/qm/qr? k=bB5NuL8WA_lvneVTq1OpZmUBuqpAcEEn&authKey=FyCnRa+9RekBl7VnMCmxohZ0AzpiV5V6YlcOt/U503i/jD52w7swCaSM+OqJTdZP&noverify=0 (二维码自动识别)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK