Tengine AIFramework框架
Tengine AIFramework框架
在開源大勢下,以數(shù)據(jù)、算力、算法為三駕馬車的人工智能實現(xiàn)了初級階段的產業(yè)化落地。任何一個技術領域成熟的標志是從應用到平臺的成功迭代,AI 也不例外,最終引導 AI 走向成熟的必將是軟件平臺。
以史為鑒,回看過往 PC 時代,Windows 的普及,帶來海量差異化業(yè)務應用的繁榮,迎來了互聯(lián)網(wǎng)的快速發(fā)展;移動互聯(lián)網(wǎng)時代,Android、iOS 二分天下,讓移動應用開發(fā)者得以乘風破浪,千萬級的 APP 充實了生活的各個場景,便捷愉悅的同時,業(yè)態(tài)升級隨之而來。那么,在萬億級的 AIoT 時代,在視覺智能、語音智能等邊緣 AI 應用爆發(fā)之際,AI 業(yè)務的平臺化之路該如何走,行業(yè)的分工協(xié)同產業(yè)鏈的加速繁榮何時到來,海量的差異化場景智能化如何高效實現(xiàn)?
可以從 OPEN AI LAB 邊緣 AI 計算框架 Tengine 中找到答案。
人工智能的下一“戰(zhàn)”——平臺框架
OPEN AI LAB(開放智能),這家成立于 2016 年的 AI 初創(chuàng)企業(yè),研發(fā)團隊主要分布在上海、北京、深圳、南京等城市,專注于邊緣智能計算及應用,推動邊緣 AI 芯片算力、算法、產品工程化、行業(yè)方案等環(huán)節(jié)的深度協(xié)作,加速 AI 技術在差異化場景的高效商業(yè)化落地。
經(jīng)過近 4 年的快速發(fā)展, OPEN AI LAB 的 Tengine 在前端及邊緣 AI 應用開發(fā)者中已經(jīng)小有名氣。OPEN AI LAB 推出的邊緣 AI 計算框架 Tengine 是開發(fā)者最喜愛的本土 AI 框架工具之一。
AI 開源浪潮背景之下,與近年來 AI 面臨的落地挑戰(zhàn)息息相關。如何為紛繁復雜的實際應用場景提供有效的 AI 解決方案,AI 框架和平臺無疑被承載了最大期望,向上要承載不同的算法模型和應用程序,向下要兼容各類芯片和計算機操作系統(tǒng)。
環(huán)顧周邊,Google 開源 TensorFlow、Facebook 推出 PyTorch、微軟開源 Cognitive Tookit(曾用名 CNTK)、百度推出深度學習開源平臺 PaddlePaddle,到華為全場景 AI 計算框架 MindSpore 正式開源、清華大學人工智能研究院開源“天授”強化學習平臺Jittor、曠視開源深度學習框架天元(MegEngine)。Tengine 能夠獲得開發(fā)者如此追捧,事實上并非偶然。
在成立伊始,OPEN AI LAB 就帶著“致力于做最接地氣的人工智能算力框架平臺”的初衷,希望打破傳統(tǒng)。其中的“接地氣”,這意味著需要幫助開發(fā)者真正解決產業(yè)化的全棧工作難題,整體提升體系化生產力,讓AI場景落地不再困難重重。作為開源邊緣 AI 計算框架,Tengine 不僅能幫助開發(fā)者在開發(fā)過程中,進一步提升算法移植和部署效能;從長期看,它的開源也將為打破 AIoT 產業(yè)壁壘,快速整合上下游以實現(xiàn) AIoT 產業(yè)的落地和應用,為豐富全球 AI 開源生態(tài)提供了重要的推動力。
回顧過去,在 2016 年 AI 爆發(fā)之際,吸引 AI 創(chuàng)業(yè)者乃至投資者的主要有兩大方向,一個是 AI 應用(算法),二是 AI 芯片(算力)。兩大方向都與 AI 落地有著密不可分的關系,前者解決業(yè)務落地、后者解決成本及部署最優(yōu)。在過去幾年,很多公司為了快速實現(xiàn)業(yè)務落地,在應用層面上采用了如 TensorFlow、 PyTorch 等框架,但這些框架更多是關注云端推理,這也決定了當時 AI 的產業(yè)化落地傾向于服務器集群化部署。產業(yè)方向聚焦平安城市、智慧城市等大型綜合平臺。
隨著 AI 產業(yè)鏈的逐漸成熟,海量差異化場景出現(xiàn),AI 賦能百業(yè)成為風口浪尖,從 2018 年開始,越來越多的應用場景要求 AI 計算從云端向邊緣乃至終端設備遷移。而做到這一點并不容易,涉及到邊緣/終端芯片種類復雜、異構算力利用率低,軟件開發(fā)環(huán)境繁雜、算法框架兼容性差、精度損失、性能低下等關鍵問題。Tengine 作為邊緣 AI 計算框架,正在助力開發(fā)者解決 AI 產業(yè)化落地中遇到的各個瓶頸難題。
對于當下 AI 數(shù)據(jù)、算法、算力三駕馬車的產業(yè)化瓶頸,大平臺,或全棧生產力賦能平臺,成為 AI 發(fā)展繁榮的下一步關鍵所在。基于“大平臺”,能夠幫助企業(yè)及開發(fā)者利用其自身生態(tài)具備的數(shù)據(jù),在落地場景中,基于平臺持續(xù)訓練打磨算法,面向嵌入式智能硬件,一鍵式算法業(yè)務下發(fā)/升級,從而幫助 AI 應用開發(fā)者大大地提升效率,完成自主迭代閉環(huán)。
不過,理想狀態(tài)下的大平臺想要讓 AIoT 萬億級設備實現(xiàn)互聯(lián)、互通,可能還需要 5-10 年乃至更久的時間去投入才能實現(xiàn),但時下邊緣 AI 計算框架 Tengine 正在這條披滿荊棘的道路之不斷前行,并為 AIoT 的產業(yè)繁榮持續(xù)做出貢獻。
Tengine——為邊緣 AI 計算而生
Tengine 面對的是一個 AIoT 的萬億級市場,比早期的 PC 時代、移動互聯(lián)網(wǎng)時代,要更具規(guī)模,各種互聯(lián)設備類型越來越多將是大勢所趨。場景及業(yè)務的差異化直接導致 SoC 等芯片的種類會越來越多,且具有不同的架構(如 Arm、X86 等),同時每種芯片本身的計算的模式也是一種異構計算,即多種計算單元混合在一起(如 CPU、GPU、DSP、NPU 等多種計算單元),如何做到跨芯片及底層算力單元的統(tǒng)一支持與高效實用,Tengine 在設計之初就充分考慮的 IoT 場景特性。
Tengine 采用了輕量級模塊化的高性能神經(jīng)網(wǎng)絡推理引擎,便于擴展和裁剪,最小體積程序可以做到 300KB,在 MCU 上甚至能夠做到 20KB。專門針對 Arm 嵌入式設備優(yōu)化,無需依賴第三方庫,可跨平臺使用支持 Android、Linux、RTOS。
除此之外,Tengine 一方面可以通過異構計算技術能夠同時調用 CPU、GPU、DSP、NPU 等不同計算單元來完成 AI 網(wǎng)絡計算。另一方面,和 TensorFlow、Caffe、MXNet 等訓練框架相互配合,通過 ONNX 模型實現(xiàn)了對 Pytorch、PaddlePaddle 的支持,完成了對業(yè)內主流框架的整體支持。因此,Tengine 對下需要覆蓋各種各樣的芯片,對上要兼容各種各樣的訓練框架。
細分來看,在 Tengine 架構上,分為三個部分:
中間表示層:想要全面支持主流的 Caffe、TensorFlow、MXNet 等框架,Tengine 自身具備兼容的 IR —— Tengine NNIR。底層硬件抽象層:針對不同架構計算單元的 HAL,以便于硬件的接入。OPEN AI LAB 專門開發(fā)了針對 Arm CPU 的高性能計算庫 HCL 庫,通過調用針對不同 CPU 微架構優(yōu)化的 HCL 庫,可以將 Arm CPU 的性能充分挖掘出來。與此同時,Tengine 也支持業(yè)界常見的 OpenBLAS、Arm Compute Library 庫。用戶也可以通過插件擴展自己的算子庫。通過HAL 適配 GPU、DSP、NPU 等各類硬件加速器。Graph 計算層:實現(xiàn)對 Graph 的解釋、調度和部署執(zhí)行。Tengine 的 Graph 計算層可以針對不同的異構計算單元,進行 Graph 拆解、融合等優(yōu)化,調度不同的計算單元來執(zhí)行。
Tengine 的落地與挑戰(zhàn)
Tengine 作為 AI 的基礎框架,但凡有 AI 能夠落地的地方,都能夠提供價值。
如今經(jīng)過了多年的沉淀,通過面向企業(yè)的持續(xù)快速迭代,Tengine 已經(jīng)在很多場景中助力產業(yè)化落地,如安防、交通、農牧、冶煉、水利、教育等行業(yè),生活息息相關的智能座艙、智能家居、消費電子等層面,Tengine 也均有落地。
成功的背后,必定是艱辛的付出。
平臺的創(chuàng)建周期更長、投入更大,變現(xiàn)周期也由此變長,其中的困難可謂難以想象。
作為一款嵌入式的 AI 框架,首先需要解決的難題是兼容性問題。在眾多的 AI 訓練框架中,其模型的結構是相互獨立的,這也導致其自身并不兼容,這就需要定義一個 IR 去和它們相互兼容。至于這一點,Tengine 即將發(fā)布其 IR 定義。
第二點,Tengine 需要解決性能問題。在嵌入式端,每個芯片都有所不同,但是應用需要把每個芯片的性能發(fā)揮到極致。如果想要做到這一點,需要針對每種計算單元進行特殊的優(yōu)化,譬如 ARM 的 CPU,需要針對指令集優(yōu)化,且對于每一個型號,它的微架構不同,需要進一步優(yōu)化,這就要求優(yōu)化工程師需要了解其計算原理、微架構設計特點等,進而才可以針對性能優(yōu)化。
此外,Tengine 支持異構計算模式,AI 計算不是僅僅由 CPU 組成,可能是由幾種異構的計算單元協(xié)同來完成一些工作,如何能夠把協(xié)同的工作達到性能最高,這些都是挑戰(zhàn)。這些問題的解決需要依靠工程師對于系統(tǒng)的理解、優(yōu)化的經(jīng)驗,這也意味著需要工程師去了解每一種新出現(xiàn)的計算框架。
AI 人才的成長之路
在 AI 產業(yè)化浪潮之下,由于全鏈路的高度復雜及快速演進,對 AI 的人才提出了更高的要求。
對于企業(yè)而言,可以將 AI 業(yè)務對人才的需求拆成很多環(huán)節(jié),如算法工程師、框架優(yōu)化工程師、AI 應用工程師等等,結合企業(yè)的業(yè)務模式,這些工程師可能偏向算法亦或是底層優(yōu)化。
站在開發(fā)者的角度,以算法工程師為例,如果是一名初級算法工程師,在具備的技能方面,至少可以針對一個應用的問題,在開源社區(qū)當中找到相應的算法,以及一些開源數(shù)據(jù)和自身數(shù)據(jù),基于 TensorFlow、Pytorch 等工具訓練出針對應用場景的算法。想要成為高級 AI 算法工程師,需要具備模型調優(yōu)能力,對數(shù)據(jù)的建模能力,以及對部署平臺的理解。
全棧 AI 工程師,相較前幾年而言,擁有著少部分的 AI 相關業(yè)務卻并非是專業(yè) AI 企業(yè)的需求可能更為明顯,產業(yè)化快速場景落地成為各家企業(yè)的關鍵。對于全棧 AI 工程師而言,需要具備業(yè)務理解、算法訓練、模型調優(yōu)、硬件適配等一系列能力,要求更高,人才培養(yǎng)周期也會很長。
不過,在 AI 的軟件平臺進一步發(fā)展之下,企業(yè)對于 AI 全棧工程師的需求也會有所降低,各種各樣的軟件框架平臺正在幫助企業(yè)解決人才欠缺等問題,平臺化也正助力帶來 AI 門檻的降低。
Tengine 開發(fā)
2017 年,Tengine 在 GitHub(https://github.com/OAID/Tengine)上開源。Tengine 產品重心是服務行業(yè),結合客戶的 AI 落地場景需求進行快速迭代演進。
如今的 Tengine 在已經(jīng)趟平很多的實際應用的坑后以商用級產品化的質量奉獻給開發(fā)者,并以開源的方式誠邀開發(fā)者參與、為產業(yè)繁榮貢獻力量。
日前,Tengine 與 OpenCV 社區(qū)進行了深度的合作,在最新發(fā)布的 OpenCV 4.3.0 版本中,基于 ARM 的 CPU,Tengine 憑借嵌入式端的高性能,攜手為 OpenCV 的深度學習模塊 DNN 在 Arm CPU 上帶來了性能顯著提升。
Tengine 也進入到 ONNX 官方支持列表。2020 年,OPEN AI LAB 將攜手開發(fā)者,聯(lián)合開源社區(qū),共同完成Tengine的的下一階段使命,服務 AI 應用的普及和普惠。
總結
以上是生活随笔為你收集整理的Tengine AIFramework框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tvm一些基本技术
- 下一篇: NNVM Compiler,AI框架的开