Tengine AIFramework框架
在开源大势下,以数据、算力、算法为三驾马车的人工智能实现了初级阶段的产业化落地。任何一个技术领域成熟的标志是从应用到平台的成功迭代,AI 也不例外,最终引导 AI 走向成熟的必将是软件平台。
以史为鉴,回看过往 PC 时代,Windows 的普及,带来海量差异化业务应用的繁荣,迎来了互联网的快速发展;移动互联网时代,Android、iOS 二分天下,让移动应用开发者得以乘风破浪,千万级的 APP 充实了生活的各个场景,便捷愉悦的同时,业态升级随之而来。那么,在万亿级的 AIoT 时代,在视觉智能、语音智能等边缘 AI 应用爆发之际,AI 业务的平台化之路该如何走,行业的分工协同产业链的加速繁荣何时到来,海量的差异化场景智能化如何高效实现?
可以从 OPEN AI LAB 边缘 AI 计算框架 Tengine 中找到答案。
人工智能的下一“战”——平台框架
OPEN AI LAB(开放智能),这家成立于 2016 年的 AI 初创企业,研发团队主要分布在上海、北京、深圳、南京等城市,专注于边缘智能计算及应用,推动边缘 AI 芯片算力、算法、产品工程化、行业方案等环节的深度协作,加速 AI 技术在差异化场景的高效商业化落地。
经过近 4 年的快速发展, OPEN AI LAB 的 Tengine 在前端及边缘 AI 应用开发者中已经小有名气。OPEN AI LAB 推出的边缘 AI 计算框架 Tengine 是开发者最喜爱的本土 AI 框架工具之一。
AI 开源浪潮背景之下,与近年来 AI 面临的落地挑战息息相关。如何为纷繁复杂的实际应用场景提供有效的 AI 解决方案,AI 框架和平台无疑被承载了最大期望,向上要承载不同的算法模型和应用程序,向下要兼容各类芯片和计算机操作系统。
环顾周边,Google 开源 TensorFlow、Facebook 推出 PyTorch、微软开源 Cognitive Tookit(曾用名 CNTK)、百度推出深度学习开源平台 PaddlePaddle,到华为全场景 AI 计算框架 MindSpore 正式开源、清华大学人工智能研究院开源“天授”强化学习平台Jittor、旷视开源深度学习框架天元(MegEngine)。Tengine 能够获得开发者如此追捧,事实上并非偶然。
在成立伊始,OPEN AI LAB 就带着“致力于做最接地气的人工智能算力框架平台”的初衷,希望打破传统。其中的“接地气”,这意味着需要帮助开发者真正解决产业化的全栈工作难题,整体提升体系化生产力,让AI场景落地不再困难重重。作为开源边缘 AI 计算框架,Tengine 不仅能帮助开发者在开发过程中,进一步提升算法移植和部署效能;从长期看,它的开源也将为打破 AIoT 产业壁垒,快速整合上下游以实现 AIoT 产业的落地和应用,为丰富全球 AI 开源生态提供了重要的推动力。
回顾过去,在 2016 年 AI 爆发之际,吸引 AI 创业者乃至投资者的主要有两大方向,一个是 AI 应用(算法),二是 AI 芯片(算力)。两大方向都与 AI 落地有着密不可分的关系,前者解决业务落地、后者解决成本及部署最优。在过去几年,很多公司为了快速实现业务落地,在应用层面上采用了如 TensorFlow、 PyTorch 等框架,但这些框架更多是关注云端推理,这也决定了当时 AI 的产业化落地倾向于服务器集群化部署。产业方向聚焦平安城市、智慧城市等大型综合平台。
随着 AI 产业链的逐渐成熟,海量差异化场景出现,AI 赋能百业成为风口浪尖,从 2018 年开始,越来越多的应用场景要求 AI 计算从云端向边缘乃至终端设备迁移。而做到这一点并不容易,涉及到边缘/终端芯片种类复杂、异构算力利用率低,软件开发环境繁杂、算法框架兼容性差、精度损失、性能低下等关键问题。Tengine 作为边缘 AI 计算框架,正在助力开发者解决 AI 产业化落地中遇到的各个瓶颈难题。
对于当下 AI 数据、算法、算力三驾马车的产业化瓶颈,大平台,或全栈生产力赋能平台,成为 AI 发展繁荣的下一步关键所在。基于“大平台”,能够帮助企业及开发者利用其自身生态具备的数据,在落地场景中,基于平台持续训练打磨算法,面向嵌入式智能硬件,一键式算法业务下发/升级,从而帮助 AI 应用开发者大大地提升效率,完成自主迭代闭环。
不过,理想状态下的大平台想要让 AIoT 万亿级设备实现互联、互通,可能还需要 5-10 年乃至更久的时间去投入才能实现,但时下边缘 AI 计算框架 Tengine 正在这条披满荆棘的道路之不断前行,并为 AIoT 的产业繁荣持续做出贡献。
Tengine——为边缘 AI 计算而生
Tengine 面对的是一个 AIoT 的万亿级市场,比早期的 PC 时代、移动互联网时代,要更具规模,各种互联设备类型越来越多将是大势所趋。场景及业务的差异化直接导致 SoC 等芯片的种类会越来越多,且具有不同的架构(如 Arm、X86 等),同时每种芯片本身的计算的模式也是一种异构计算,即多种计算单元混合在一起(如 CPU、GPU、DSP、NPU 等多种计算单元),如何做到跨芯片及底层算力单元的统一支持与高效实用,Tengine 在设计之初就充分考虑的 IoT 场景特性。
Tengine 采用了轻量级模块化的高性能神经网络推理引擎,便于扩展和裁剪,最小体积程序可以做到 300KB,在 MCU 上甚至能够做到 20KB。专门针对 Arm 嵌入式设备优化,无需依赖第三方库,可跨平台使用支持 Android、Linux、RTOS。
除此之外,Tengine 一方面可以通过异构计算技术能够同时调用 CPU、GPU、DSP、NPU 等不同计算单元来完成 AI 网络计算。另一方面,和 TensorFlow、Caffe、MXNet 等训练框架相互配合,通过 ONNX 模型实现了对 Pytorch、PaddlePaddle 的支持,完成了对业内主流框架的整体支持。因此,Tengine 对下需要覆盖各种各样的芯片,对上要兼容各种各样的训练框架。
细分来看,在 Tengine 架构上,分为三个部分:
中间表示层:想要全面支持主流的 Caffe、TensorFlow、MXNet 等框架,Tengine 自身具备兼容的 IR —— Tengine NNIR。底层硬件抽象层:针对不同架构计算单元的 HAL,以便于硬件的接入。OPEN AI LAB 专门开发了针对 Arm CPU 的高性能计算库 HCL 库,通过调用针对不同 CPU 微架构优化的 HCL 库,可以将 Arm CPU 的性能充分挖掘出来。与此同时,Tengine 也支持业界常见的 OpenBLAS、Arm Compute Library 库。用户也可以通过插件扩展自己的算子库。通过HAL 适配 GPU、DSP、NPU 等各类硬件加速器。Graph 计算层:实现对 Graph 的解释、调度和部署执行。Tengine 的 Graph 计算层可以针对不同的异构计算单元,进行 Graph 拆解、融合等优化,调度不同的计算单元来执行。
Tengine 的落地与挑战
Tengine 作为 AI 的基础框架,但凡有 AI 能够落地的地方,都能够提供价值。
如今经过了多年的沉淀,通过面向企业的持续快速迭代,Tengine 已经在很多场景中助力产业化落地,如安防、交通、农牧、冶炼、水利、教育等行业,生活息息相关的智能座舱、智能家居、消费电子等层面,Tengine 也均有落地。
成功的背后,必定是艰辛的付出。
平台的创建周期更长、投入更大,变现周期也由此变长,其中的困难可谓难以想象。
作为一款嵌入式的 AI 框架,首先需要解决的难题是兼容性问题。在众多的 AI 训练框架中,其模型的结构是相互独立的,这也导致其自身并不兼容,这就需要定义一个 IR 去和它们相互兼容。至于这一点,Tengine 即将发布其 IR 定义。
第二点,Tengine 需要解决性能问题。在嵌入式端,每个芯片都有所不同,但是应用需要把每个芯片的性能发挥到极致。如果想要做到这一点,需要针对每种计算单元进行特殊的优化,譬如 ARM 的 CPU,需要针对指令集优化,且对于每一个型号,它的微架构不同,需要进一步优化,这就要求优化工程师需要了解其计算原理、微架构设计特点等,进而才可以针对性能优化。
此外,Tengine 支持异构计算模式,AI 计算不是仅仅由 CPU 组成,可能是由几种异构的计算单元协同来完成一些工作,如何能够把协同的工作达到性能最高,这些都是挑战。这些问题的解决需要依靠工程师对于系统的理解、优化的经验,这也意味着需要工程师去了解每一种新出现的计算框架。
AI 人才的成长之路
在 AI 产业化浪潮之下,由于全链路的高度复杂及快速演进,对 AI 的人才提出了更高的要求。
对于企业而言,可以将 AI 业务对人才的需求拆成很多环节,如算法工程师、框架优化工程师、AI 应用工程师等等,结合企业的业务模式,这些工程师可能偏向算法亦或是底层优化。
站在开发者的角度,以算法工程师为例,如果是一名初级算法工程师,在具备的技能方面,至少可以针对一个应用的问题,在开源社区当中找到相应的算法,以及一些开源数据和自身数据,基于 TensorFlow、Pytorch 等工具训练出针对应用场景的算法。想要成为高级 AI 算法工程师,需要具备模型调优能力,对数据的建模能力,以及对部署平台的理解。
全栈 AI 工程师,相较前几年而言,拥有着少部分的 AI 相关业务却并非是专业 AI 企业的需求可能更为明显,产业化快速场景落地成为各家企业的关键。对于全栈 AI 工程师而言,需要具备业务理解、算法训练、模型调优、硬件适配等一系列能力,要求更高,人才培养周期也会很长。
不过,在 AI 的软件平台进一步发展之下,企业对于 AI 全栈工程师的需求也会有所降低,各种各样的软件框架平台正在帮助企业解决人才欠缺等问题,平台化也正助力带来 AI 门槛的降低。
Tengine 开发
2017 年,Tengine 在 GitHub(https://github.com/OAID/Tengine)上开源。Tengine 产品重心是服务行业,结合客户的 AI 落地场景需求进行快速迭代演进。
如今的 Tengine 在已经趟平很多的实际应用的坑后以商用级产品化的质量奉献给开发者,并以开源的方式诚邀开发者参与、为产业繁荣贡献力量。
日前,Tengine 与 OpenCV 社区进行了深度的合作,在最新发布的 OpenCV 4.3.0 版本中,基于 ARM 的 CPU,Tengine 凭借嵌入式端的高性能,携手为 OpenCV 的深度学习模块 DNN 在 Arm CPU 上带来了性能显著提升。
Tengine 也进入到 ONNX 官方支持列表。2020 年,OPEN AI LAB 将携手开发者,联合开源社区,共同完成Tengine的的下一阶段使命,服务 AI 应用的普及和普惠。