嵌入式AI應(yīng)用開發(fā)對操作系統(tǒng)的要求與挑戰(zhàn)
各位朋友大家好,我是RT-Thread 人工智能總監(jiān)楊武,今天由我和大家一起來探討嵌入式AI開發(fā)對操作系統(tǒng)的要求與挑戰(zhàn)。今天我的分享的內(nèi)容將分為以下4個部分:
1、全球IoT操作系統(tǒng)的競爭格局2、快速增長的嵌入式AI應(yīng)用開發(fā)需求帶來的挑戰(zhàn)3、RT-Thread如何應(yīng)對和推動嵌入式AI應(yīng)用的開發(fā)4、IoT操作系統(tǒng)的未來趨勢
全球IoT操作系統(tǒng)的競爭格局
首先,現(xiàn)在處于一個什么樣的階段?從信息時代以來,先是有個人電腦,然后這些電腦又連成互聯(lián)網(wǎng)。隨著應(yīng)用的廣泛,我們進(jìn)一步發(fā)明了移動互聯(lián)網(wǎng),讓每一個人隨時隨地聯(lián)網(wǎng),現(xiàn)在世界大部分地區(qū)在經(jīng)濟(jì)條件允許的情況下,每個人都連接在一個網(wǎng)絡(luò)里,這就是人聯(lián)網(wǎng)。接著我們所使用的一切,環(huán)境里面各種各樣的東西,也會聯(lián)網(wǎng)、產(chǎn)生數(shù)據(jù),也會是網(wǎng)絡(luò)的一部分。
對于今天的話題,這意味著什么呢?PC時代,成就了一家公司叫微軟,成就了一個操作系統(tǒng),先是DOS,后來是Windows,Mac OS成績也很好,但從最終的結(jié)果看還是Windows勝出。在互聯(lián)網(wǎng)的發(fā)展過程中,也成就了一個開源的操作系統(tǒng)——Linux。在移動互聯(lián)網(wǎng)時代,主要是iOS和Android操作系統(tǒng),從市場份額上看是Android勝出,但iOS在高端市場上的占有率和利潤都非??捎^。在IoT時代,我認(rèn)為也會有同樣的競爭格局,會有一兩家成為整個行業(yè)的頭部,但不會像之前那樣呈現(xiàn)一家獨大的狀態(tài),可能會形成犬牙交錯的格局,可能在某些領(lǐng)域里,一些操作系統(tǒng)會比較多,另外一些領(lǐng)域里面別的操作系統(tǒng)可能會搶占到一個固有的市場。但從宏觀上來看,我相信物聯(lián)網(wǎng)成為整個世界聯(lián)網(wǎng)的常態(tài)之后,一定會有一家或者兩家操作系統(tǒng),成為這個行業(yè)里的領(lǐng)頭羊。
熟悉嵌入式開發(fā)的朋友可能知道,很多時候沒有操作系統(tǒng),也可以做很多事情。在IoT時代,操作系統(tǒng)非常有意義,它能夠幫助縮短產(chǎn)品開發(fā)周期、提高終端質(zhì)量、加快端云的對接,更重要的是方便應(yīng)用的部署,而且在產(chǎn)品的更新?lián)Q代之間復(fù)用研究成果,也會很方便。
操作系統(tǒng)在IoT時代,相比于傳統(tǒng)的嵌入式有些不一樣,那就是聯(lián)網(wǎng)的需求旺盛,因此系統(tǒng)的復(fù)雜度會隨之提升,而且要有互聯(lián)網(wǎng)競爭的思維,所以它的迭代周期也會變短。在這樣的情況下,使用一個操作系統(tǒng)是必然的選擇。
現(xiàn)今最受關(guān)注的領(lǐng)域是AI+IoT的 AIoT,這一類的設(shè)備能力不錯,資源也可以。在這樣的情況下,目前Linux和Android占到了接近80%的份額,RTOS大概20%左右,相應(yīng)的他們并不是直接競爭的關(guān)系。在application processor級別的處理器方面,用Linux和Android會多一些,在M級別的處理器上,內(nèi)存大小可能在MB或KB級別,用RTOS會更多一些,但他們可能會有不同種類的DSP,運算能力也不太一樣,所以應(yīng)用的領(lǐng)域相應(yīng)也有所不同。如圖中使用Android和Linux操作系統(tǒng)的應(yīng)用包括個人助理、安防攝像頭等;用RTOS比較多的應(yīng)用比如故事機(jī)、手表之類的可穿戴設(shè)備,還有家電,總之偏消費類電子,Linux和Android偏經(jīng)濟(jì)類、工業(yè)類。
我們主要關(guān)注IoT和AI,這一類的處理器一般會挑一些能力比較強(qiáng)的處理器,稱之為MPU,它比MCU的處理能力要強(qiáng),而且通常是多核的,有能力跑Linux。那它還需要RTOS嗎?
ST中國做過一個大樣本的調(diào)查,如上圖所示,可以看到左邊的餅圖,大約60%的用戶覺得還是有需求的。為什么?因為MPU與更高端的手機(jī),甚至電腦這一類的設(shè)備相比資源比較有限;另外,響應(yīng)的要求也不太一樣。有一部分廠商不需要RTOS,也不需要Linux,直接裸跑就好,這一類的廠商不在少數(shù),但我相信他們慢慢的會過渡到RTOS上來。
在MPU/Cortex-A級別上,現(xiàn)在使用哪種RTOS呢?可以看到RT-Thread還是比較驕傲的,基本上可以占到調(diào)研覆蓋用戶的一半左右。另外是一些比較老牌的廠商,像QNX、VxWorks等。
綜上,Linux和RTOS誰更好、更合適?其實沒有這么絕對,重點要看下互相的優(yōu)勢和劣勢。RTOS相比于Linux的優(yōu)勢首先是需要的資源少,所以成本就比較低;第二是硬件的需求小,體積也可以做的比較小,所以PCBA可以做的比較小;第三是資源低,主頻要求不高,所以功耗要求就比較小,再加上一般功耗管理在RTOS上做的比較細(xì),而且比較直接,所以這方面的優(yōu)勢也比較明顯;第四是在實時性方面,以RT-Thread為例,它的實時性在微秒級甚至更低;第五是啟動速度快,在使用家用電器時,都很習(xí)慣摁下去,立刻就要有反應(yīng);最后是用RTOS開發(fā)的復(fù)雜度低,如果組件和服務(wù)跟得上,開發(fā)周期會比較短。
當(dāng)然RTOS也有劣勢,第一個是與Linux相比,軟件生態(tài)相對弱,Linux支持眾多開源軟件和流行標(biāo)準(zhǔn);第二個是功能性,Linux支持的功能更豐富,更強(qiáng)大如MMU;第三個是開發(fā)生態(tài),存量應(yīng)用多,應(yīng)用開發(fā)者更多。
總的來看,市場上越來越多的中高端的應(yīng)用開始考慮用RTOS,就是實時操作系統(tǒng),不管是在智能家居、車載、工業(yè)以及智慧城市等方面,過去認(rèn)為嵌入式應(yīng)用是偏中高端,現(xiàn)在這一類越來越多的考慮用RTOS,比如音箱或穿戴類設(shè)備。RTOS運行在MPU上日漸流行起來,關(guān)鍵是MPU做的產(chǎn)品所處的領(lǐng)域具有RTOS發(fā)揮優(yōu)勢的點。對于RT-Thread,RTOS有的優(yōu)勢肯定都有,同時相對于其他的嵌入式操作系統(tǒng),RT-Thread 組件更豐富,軟硬件生態(tài)也更好。
關(guān)于格局,首先我們所處的時代非常有意思,以前做RTOS往往都是小廠商,但是目前巨頭們紛紛下場,這是為什么?前面講了大時代,下一個大時代就是物聯(lián)網(wǎng),Next Big Thing不能錯失,如果互聯(lián)網(wǎng)公司的物聯(lián)網(wǎng)入口被別人占據(jù),那后面整個經(jīng)濟(jì)系統(tǒng)可能與沒有搶到入口的公司無關(guān),這是互聯(lián)網(wǎng)行業(yè)一慣的思維。
另外是最近國際形勢產(chǎn)生一個有意思的現(xiàn)象,全球化的進(jìn)程,實際上在中美之間由于美國內(nèi)部發(fā)生一些變化,導(dǎo)致進(jìn)程嚴(yán)重受挫,而且極有可能未來又會逐漸的分裂成東西方兩個世界,客觀上讓我們今后在看待整個IoT操作系統(tǒng)市場時,要把國內(nèi)市場和國外市場分開來看。過去接到比較多的項目需求是芯片板卡這類,但現(xiàn)在越來越多的聲音是廠商要做自己的操作系統(tǒng),或者要做一個能控制的操作系統(tǒng),甚至有條件的,不僅僅滿足于我們這樣的廠商去幫他做,他還要求自己的員工能吃透、掌握,這是國內(nèi)近一年多來非常明顯的變化。國際形勢的變化,給國內(nèi)的基礎(chǔ)軟件和硬件廠商帶來了很多的機(jī)會,這種機(jī)會過去是幾乎不存在的。
在這樣的背景下,可以參考上圖右邊所示,屬于云或設(shè)備商特有的解決方案或歸屬它的方案在下面,中立第三方在上面,左邊是國內(nèi)團(tuán)隊,右邊是國外團(tuán)隊??梢悦黠@看出在國內(nèi)市場,國內(nèi)團(tuán)隊做的東西份額本來就大,而且我相信未來會更大。
快速增長的嵌入式AI應(yīng)用開發(fā)需求帶來的挑戰(zhàn)
嵌入式AI到底意味著什么?我們有一個觀點,叫做三位一體,三位是物聯(lián)網(wǎng)+邊緣計算+AI,一體就是嵌入式AI了,物聯(lián)網(wǎng)是一個基礎(chǔ)平臺,是整個社會信息化進(jìn)程的下一個階段,目前可能是幾億到十幾億設(shè)備的量,但很快它就會達(dá)到幾十億、上百億。在這樣的平臺上,人工智能必然會成為它的一個中樞,僅依靠人去處理是不現(xiàn)實的,靠寫程序找模式去處理也太慢,而邊緣提供的是本地的算力,物聯(lián)網(wǎng)的迅猛發(fā)展給AI提供了數(shù)據(jù)基礎(chǔ),AI以后在這個場景無處不在,但是很多時候我們?nèi)耘f需要在邊緣做快速的響應(yīng),以及在邊緣上有數(shù)據(jù)隱私和安全的問題。有了邊緣計算,就能夠在邊緣高效的計算和存儲,再加上在邊緣上有AI,IoT整個生態(tài)就能夠有機(jī)地形成起來,數(shù)據(jù)也能很好的控制。
講了這么多嵌入式應(yīng)用,但嵌入式AI到底是什么?給大家分享兩段小視頻。第一段是軍事的視頻:
這是一個很小的無人機(jī),只有手掌心大,但它能完成非常復(fù)雜的任務(wù),包括飛行控制、人臉識別、目標(biāo)跟蹤以及決定用什么樣的線路。如果有軍事愛好者,現(xiàn)在是5代機(jī),下一代6代機(jī)會是什么呢?可能就是一個主僚機(jī),或者一個有人機(jī),一堆無人機(jī)配合的方式。
第二段比較熟悉,在疫情高發(fā)期,測體溫肯定見到很多,有人拿測溫槍離你很近,還是不太方便的。但如果有AR眼鏡,它能夠自動識別人哪里是高溫區(qū),然后把溫度測出來,當(dāng)然它的用途不止于此。
嵌入式AI的需求潛力巨大,整個市場大概估算下,安防圖像類的年需求在2億臺左右,車載工業(yè)類的在6000萬臺,數(shù)量稍微少一點,但單價會比較高,利潤也可以。觸屏類的年需求在3億臺左右,AI語音類的年載需求在5億臺左右。
在巨大的需求下,它到底解決什么問題?我把嵌入式系統(tǒng)的智能化需求分為三大領(lǐng)域,第一個是感知交互領(lǐng)域,像語音的喚醒命令,語音合成,這是語音領(lǐng)域的感知和交互;然后是傳感器,各類的震動、煙感、紅外,都屬于傳感器的范疇;圖像類的目標(biāo)檢測、物體和目標(biāo)識別也是;第二個是信息加工類,比如通過手機(jī)的攝像頭拍到的圖片,一定是處理過的;還有聲音,要防抖、抗風(fēng)聲,這些都是很常見的應(yīng)用;還有一些不是很直觀的,比如特征提取類和信息重建類的;第三個是自主決策類,上面提到的飛行控制、自動駕駛,還有很多需要現(xiàn)場及時響應(yīng),比如要改進(jìn)現(xiàn)有的煙感,需要區(qū)分是有人在下面抽煙,還是現(xiàn)場確實起火,可能就需要聯(lián)合多個設(shè)備在現(xiàn)場做決策。
這樣復(fù)雜的需求會給帶來很多開發(fā)上的挑戰(zhàn)。首先是人員的挑戰(zhàn),不同的人有不同的領(lǐng)域,不同的背景,做嵌入式AI應(yīng)用要牽涉到很多人,有做算法模型的,有做嵌入系統(tǒng)開發(fā)的,有做整個業(yè)務(wù)設(shè)計的,還有做前端、后端的,每個人的背景不一樣,思維方式也不一樣,這會帶來很大的問題。
除了人的挑戰(zhàn)外,要在邊緣實現(xiàn)AI落地,還有很多技術(shù)上的挑戰(zhàn)。所謂邊緣層,其實是一個很廣泛的領(lǐng)域,設(shè)備的能力可以千差萬別,從很大到很小,但普遍來看,他們會有比較多的IO方面的需求,然后對于多任務(wù)的實時性、響應(yīng)的速度也比較敏感。這一類的情況會帶來很多的問題,我把它歸納以下6大類:
1、碎片化,很多芯片組有不同的指令,DSP/NPU異構(gòu)、云平臺等,碎片化導(dǎo)致當(dāng)前做的一個版本在未來可能又要重做一遍,重用度不高。
2、數(shù)據(jù)安全,數(shù)據(jù)安全很復(fù)雜,系統(tǒng)應(yīng)盡可能提供整體的解決方案。
3、多媒體處理,音頻、視頻傳感器得到的各種數(shù)據(jù),輸入輸出都需要處理,交互的形式可能是圖像或者是聲音,這種情況下,多媒體的處理要能很方便的在系統(tǒng)里面封裝好。
4、資源少,嵌入式系統(tǒng)資源相對比較弱,比服務(wù)端要少很多。
5、響應(yīng)要求高,運算、電池容量都比較小,但是響應(yīng)速度要求又很高,一般要求是毫秒級響應(yīng)。
6、持續(xù)學(xué)習(xí),如果在本地有訓(xùn)練的能力,應(yīng)該要能夠做增量的訓(xùn)練,開發(fā)起來還是有一定復(fù)雜度的,讓每一家廠商自己去做,難度太高。如果本身不具備這樣的能力,可能就要依靠模型更新。
RT-Thread如何應(yīng)對和推動嵌入式AI應(yīng)用的開發(fā)
面對像MPU這一類中高端的市場,我們的答案是新一代的RT-Thread。
新一代的RT-Thread會是一個微內(nèi)核結(jié)構(gòu),音視頻框架會進(jìn)一步的完善,AI框架會集成在內(nèi),還有圖形化的IDE,實現(xiàn)集成式的開發(fā)。
新一代的RT-Thread的基本架構(gòu)如上圖所示,可以看到內(nèi)核態(tài)和用戶態(tài)已經(jīng)分離出來,它順應(yīng)MPU的應(yīng)用開發(fā)領(lǐng)域,在這樣的領(lǐng)域里,開發(fā)人員的心態(tài)、認(rèn)知的模型已經(jīng)習(xí)慣了用戶在內(nèi)核態(tài),另外,業(yè)務(wù)本身復(fù)雜了以后,保護(hù)也會比較重要,我們會有一個很小的內(nèi)核,所有東西在用戶態(tài)和內(nèi)核態(tài)之間可以自由切換,這是一大特色?;谶@樣的平臺,我們相信過去的積累,可以直接沿用下來。第二,在新的領(lǐng)域我們會更加有競爭力。
音頻播放器是一個非常重要的組件,我們已經(jīng)有一個非常成熟的解決方案,它還會是我們整體解決方案之一。
嵌入式語音終端的交互解決方案是一整套解決方案,從收音到播音,再到喚醒詞、打斷、回聲消除、麥克風(fēng)降噪,包括如何在有條件的情況利用DSP加速,沒有的情況下怎么樣利用處理器的浮點指令集,或者是SIMD的指令集。
下面重點介紹AI解決方案的框架,在下一代的操作系統(tǒng)里面有一個邊緣AI加速框架,它的核心是定點神經(jīng)網(wǎng)絡(luò),底下是RT-Thread的操作系統(tǒng)內(nèi)核。上游有PC/Server端訓(xùn)練,這是對接產(chǎn)業(yè)里面的標(biāo)準(zhǔn),不管是Keras還是Tensorflow的忠實粉絲,或者是其他的工具,都會有一個靈活的模型對接接口,通過模型訓(xùn)練和量化、裁剪的工具轉(zhuǎn)換成能對接的模型。同時在下面可以看到,不同的處理器,會遇到碎片化的問題,這是框架必須要去解決的。在底下有封裝層,可以利用現(xiàn)有廠商提供的功能,或者各個廠商自己提供的各種各樣的NPU/DSP,在框架上對接多種模型。這樣能很好的回答前面的挑戰(zhàn)問題。
第一,模型要為小型設(shè)備優(yōu)化,常用的手段有剪枝、量化、知識蒸餾、緊性卷積核等。有了上面的框架后,就能對接多種模型,模型可以用C++展開,權(quán)重和代碼都捆綁在一起,結(jié)構(gòu)都是C++的代碼。這樣部署非常簡單,對系統(tǒng)沒有什么負(fù)擔(dān)。也可以是網(wǎng)絡(luò)用C++展開,但權(quán)重是獨立的,可以加載進(jìn)來,好處是方便更新,但也會有一些現(xiàn)實的挑戰(zhàn),比如是用靜態(tài)內(nèi)存還是用動態(tài)內(nèi)存?
硬件也一直在快速的演進(jìn),處理系統(tǒng)在不停的增加各種指令集,還有各種各樣的NPU。針對平臺,只要做算子本身的一些優(yōu)化就可以。
操作系統(tǒng)層的異構(gòu)計算的框架以及驅(qū)動,都可以把不同架構(gòu)復(fù)雜的東西屏蔽掉,你只需寫個driver或者跟我們一起做個driver就可以。
前面提到延遲是嵌入式或?qū)崟r響應(yīng)最大的敵人,一方面系統(tǒng)要啟動快,另一方面系統(tǒng)響應(yīng)要快,響應(yīng)還要穩(wěn)。可以通過縮小內(nèi)核來加快啟動速度,還要減少系統(tǒng)調(diào)度的干擾,IO這塊希望需要的時候,不要一層一層的驅(qū)動,要能夠直接去訪問它。相應(yīng)的系統(tǒng)要有很高的可裁剪性,這方面我們有一套圖形化的裁剪工具。對于安全性,像航天、電力的需求對可靠性的高要求也能滿足。驅(qū)動框架本身很靈活,有不同的封裝層。
前面提到持續(xù)學(xué)習(xí)是個系統(tǒng)工程,前端收集與后端強(qiáng)大的運算能力一起,我們在操作系統(tǒng)上會有非常靈活的支持。
IoT操作系統(tǒng)的未來趨勢
首先,物聯(lián)網(wǎng)終端的會越來越多,過往用按鈕、按鍵、控制桿,以后會有各種酷炫漂亮的觸屏UI,圖形交互越來越重要。多應(yīng)用加載進(jìn)來,要進(jìn)行安全隔離,信息數(shù)據(jù)、通信要可靠與加密等,訪問權(quán)限要控制,隱私要保護(hù)。
AI與多媒體結(jié)合起來,在整個行業(yè)會成為一個非常日常的現(xiàn)象,低資源占用和低功耗占用會受到越來越高的重視。在這種的趨勢下,OS會怎么發(fā)展呢?帶有豐富中間件的OS會流行起來,單純的內(nèi)核OS終究會淡出市場。OS的一致性平臺,會成為大型企業(yè)的普遍訴求,因為OS本身碎片化很厲害,如果說一套解決方案里面用到各家的東西,然后每家系統(tǒng)都不一樣,用起來就會很麻煩,我相信越來越多的人會希望平臺是一致的。
在低資源占用、安全性、多媒體這方面,我相信專業(yè)的IoT/OS廠商會負(fù)擔(dān)起為大家解決問題的工作,讓大家更聚焦于核心業(yè)務(wù),同時未來可能有很多是腳本開發(fā),小程序開發(fā),這也使得一個創(chuàng)業(yè)團(tuán)隊或者一個小團(tuán)隊也能做很大的事情。