新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 業(yè)界動態(tài) > 終于有人把“嵌入式人工智能”講明白了

終于有人把“嵌入式人工智能”講明白了

作者:木羊同學(xué) 時間:2022-09-21 來源:華章計算機 收藏

導(dǎo)讀:是個很有意思的概念。之前隔一段就要聽到要工作或者要考研的同學(xué)問嵌入式和人工智能哪個有前途?果然成年人還是全都要更有前途,于是有了。這篇就簡單聊下

本文引用地址:http://butianyuan.cn/article/202209/438427.htm


作者:木羊同學(xué)


來源:華章計算機(h 華章計算機 zbook_jsj)


嵌入式人工智能,就是在嵌入式的環(huán)境下做人工智能。算法模型還是原來原來那些算法模型,但是畢竟是在嵌入式環(huán)境下,時代變了,總要有一些東西作出改變。首先,我們來回答為什么要有嵌入式人工智能。


01


為什么需要嵌入式人工智能


現(xiàn)在人工智能發(fā)展最大的問題是什么?通過圖靈測試?上SOTA?我覺得是落地問題。這幾年人工智能大新聞一個接一個,無論是學(xué)術(shù)界還是工業(yè)界,誰都覺得人工智能現(xiàn)在是風(fēng)口。但是質(zhì)疑的聲音也漸漸走強,不斷地有人在問這是不是一個泡沫,甚至已經(jīng)有人開始預(yù)測泡沫什么時候破裂。


為什么同樣是人工智能,意見會如此兩極化?


開始我也很不理解,問了一些朋友,也看了一些資料,漸漸也就清楚了一點:說到底就是落地問題。人工智能相關(guān)的頂會每年好幾次,每次都能出來一些值得津津樂道的東西,有時還有意外的突破讓人發(fā)出“噢還能這樣玩”的感嘆。公道地說,從研究的角度看,人工智能這幾年一直在進步,而且進步還不小,大家都在期待奇點早點來臨。


但是,從應(yīng)用的角度再想一想,事情就沒這么樂觀了。不少人工智能產(chǎn)品確實讓我們眼前一亮,但那已經(jīng)是好幾年前的事情了,不是說這幾年啥事沒干,主要都在優(yōu)化,早幾年Siri說個話都磕磕巴巴,現(xiàn)在吵個架基本不成問題。不過有什么以前沒有的新功能呢?想半天想不出來。一邊高歌猛進,一邊安靜如雞,這就是問題。


很多人都說,人工智能下一個落地的場景就是下一個風(fēng)口。我當(dāng)然猜不準(zhǔn)下一個落地的場景究竟是什么,但我知道可選項之一就是嵌入式人工智能。以前一說嵌入式就是單片機,以至于很多同學(xué)以為這倆詞就是一回事。以前嵌入式系統(tǒng)大體的流程是這樣:輸入傳感器信號,用編寫的程序進行處理,然后輸出控制信號,為什么學(xué)嵌入式感覺都是在學(xué)單片機編程,道理就在這。


但是,現(xiàn)在是智能時代了,嵌入式系統(tǒng)也進化成了“智能嵌入式系統(tǒng)”。有什么不同呢?這里引用《AI嵌入式系統(tǒng)》的一個觀點:傳統(tǒng)的嵌入式系統(tǒng)主要用于控制,而智能嵌入式系統(tǒng)則提升了感知、交互和決策這三方面的智能化水平,分別叫智能感知、智能交互和智能決策。書里清楚解釋了這三個名詞,這里我想借這個問題說一下為什么嵌入式人工智能會是下一個落地的場景之一。


02


智能的作用


大家最想問的應(yīng)該是多了“智能”會有什么不同,關(guān)鍵就在于編程。


過去嵌入式系統(tǒng)要干點什么肯定都得編程。編程也不是上來就寫代碼,首先得分析數(shù)據(jù),提煉需求,最后才是編程實現(xiàn)。這幾個環(huán)節(jié)都要投入時間,特別是現(xiàn)在嵌入式部署的環(huán)境越來越復(fù)雜,問題也越來越多,而按照傳統(tǒng)的方式,這些問題都必須在編程時一一加以考慮,把規(guī)則一條條寫上,系統(tǒng)才能具備處理能力。


手寫規(guī)則費時費力,而且還容易“掛一漏萬”。有沒有更好的辦法解決呢?有,就是加入人工智能。人工智能不需要人工寫規(guī)則,而是可以通過數(shù)據(jù)“自學(xué)”。對于一些抽象的、不太好人工描述的規(guī)則,人工智能同樣可以通過學(xué)習(xí)來具備相應(yīng)的能力。這就是智能。嵌入式加上了人工智能,人工成本大大降低,想象空間大大延伸,這其中可能就孕育了下一個殺手級的人工智能應(yīng)用。


03


嵌入式的特殊局限


現(xiàn)在,我們又有了個新問題:為什么要從人工智能中單獨切出一塊,叫嵌入式人工智能?


前面已經(jīng)說過,嵌入式人工智能的模型算法都是原來那套,從理論層面并沒有太多的不同,問題就出在嵌入式本身。


嵌入式設(shè)備和通用計算機的計算環(huán)境大相徑庭,平時給我們感受最深的就是存儲容量小?!禔I嵌入式系統(tǒng)》給出一組對比數(shù)據(jù):常見的深度神經(jīng)網(wǎng)絡(luò)模型使用單精度浮點數(shù)存儲參數(shù)對應(yīng)的存儲量在20MB至560MB之間,相比之下,傳統(tǒng)低成本的嵌入式系統(tǒng)RAM存儲容量最高也只有16MB。


另一個同樣捉襟見肘的是算力。這個就不說了,嵌入式設(shè)備在算力方面什么時候都只是弟弟。還有一個容易被大家忽視但同樣存在局限性的是能耗。要知道深度學(xué)習(xí)模型都是電老虎,每次模型跑訓(xùn)練,顯卡的風(fēng)扇都是要發(fā)出即將起飛的聲音,哪怕只是要模型跑起來,同樣也是一件費電的事情。而嵌入式設(shè)備在很多情況下是有耗能限制的。


總而言之,也許我們很容易找到一個嵌入式應(yīng)用場景需要人工智能,也確實已經(jīng)有現(xiàn)成的模型足以滿足要求,本來馬上就是一拍即合的事,但是,嵌入式本身的種種限制,想要簡單硬套人工智能的現(xiàn)有成果,只能長使英雄淚滿襟。


04


人工智能的應(yīng)對方法


方法不是沒有,有兩條路。一條是提升嵌入式設(shè)備的硬件條件,不過這也變相限制了應(yīng)用場景,另一條就是人工智能自己做出優(yōu)化,減少對空間、算力和能耗的需求?,F(xiàn)在大家選擇了第二條路,將問題帶回到了人工智能這一邊,于是有了嵌入式人工智能。


這部分內(nèi)容很多,這里我做一點簡單介紹,方便大家了解嵌入式人工智能都研究哪些方面。人工智能要適應(yīng)嵌入式環(huán)境,就要進行字面意義上的“削足適履”,在大幅減少資源需求的同時,盡量保證性能不至于明顯下降,在嵌入式人工智能里面,叫做優(yōu)化,譬如說矩陣乘法優(yōu)化。


過去我在介紹機器學(xué)習(xí)的知識體系時說過,矩陣運算是機器學(xué)習(xí)的骨骼。機器學(xué)習(xí)不是一種模型,而是一堆模型,而這些模型都大量使用了矩陣運算,主要是矩陣乘法。如果矩陣乘法的運算量能夠降下來,模型整體的運算量也就能夠降下來。


道理好懂,可是天下真有這種空手套白狼的好事嗎?


科學(xué)家還真給研究出來了。這要從Strassen矩陣相乘算法說起,該算法于1969年提出,是第一款算法復(fù)雜度低于O(N3)的矩陣乘法。簡單來說,就是這款算法能夠降低矩陣乘法的運算量,譬如說2×2矩陣相乘,常規(guī)算法進行8次乘法運算,而采用本算法只需要進行7次,矩陣乘法的運算量減少12.5%,不過不是沒成本的,加法運算從4次提升至18次。就這樣看起感覺沒什么,但一旦矩陣上了規(guī)模,譬如說128×128的矩陣運算,使用該算法能夠降低約一半的矩陣乘法運算,優(yōu)化效果就十分可觀了。類似的算法還有Winograd算法,同樣能夠在大尺寸矩陣運算中將乘法運算降低50%。


上面這類算法稱為快速矩陣乘法,另一種方案則是采用了犧牲精度提升速度的思想,允許矩陣乘法結(jié)果存在一定誤差,這類算法稱為近似矩陣乘法,譬如基于數(shù)據(jù)統(tǒng)計相關(guān)性的近似矩陣乘法,以及基于數(shù)據(jù)協(xié)方差低秩分解近似的快速乘法。


類似的從算子層面進行優(yōu)化的還有對卷積運算的優(yōu)化。卷積運算的作用不必多說了,現(xiàn)在用深度神經(jīng)網(wǎng)絡(luò)做圖像處理就離不開卷積運算,優(yōu)化的方向和矩陣乘法很類似,也是從快速卷積算法和近似卷積算法兩個方面展開研究,譬如說一維循環(huán)卷積頻域快速算法和基于卷積核低秩分解的二維快速卷積。


05


如何開發(fā)嵌入式人工智能


既然要應(yīng)用落地,那么除了理論研究,當(dāng)然還要有開發(fā)工具。不過嵌入式的平臺很多,開發(fā)環(huán)境各不相同,這里我就就著《AI嵌入式系統(tǒng)》對Arm平臺上的機器學(xué)習(xí)工具做一點介紹。


Arm本身就不說了,早個十年學(xué)嵌入式這可能還算是個新詞,現(xiàn)在智能手機人手一臺,里面裝的就是Arm的處理器。不過,按照處理器劃分,Arm平臺大致可分為Cortex-A、Cortex-M和Cortex-R三大系列。


我們手機里裝的就是Cortex-A系列,據(jù)說算力超過NASA當(dāng)年搞登月時使用的超級計算機,硬件條件相對寬裕,開發(fā)資源也很豐富,深度學(xué)習(xí)的兩大框架Pytorch和Tensorflow都推出了針對Cortex-A的版本。Arm也推出了ACL(Arm Compute Libray)等庫來支持Arm平臺的高性能數(shù)據(jù)運算。


Cortex-M和Cortex-R系列我們聽得較少,因為這倆主要是面向工業(yè)應(yīng)用,Cortex-M主打低成本低能耗應(yīng)用場景,而Cortex-R則可以用于對實時性有更高要求的任務(wù)。相比Cortex-A,這倆個系列的算力就非常有限了。Arm專門推出了CMSIS軟件架構(gòu)來方便Cortex-M系列的應(yīng)用開發(fā)。


CMSIS與機器學(xué)習(xí)關(guān)系較密切的庫有兩個,一個是CMSIS-DSP庫,里面提供了基本數(shù)學(xué)運算操作如矩陣運算、部分機器學(xué)習(xí)算法如SVM、以及FIR濾波、計算KL距離、DCT轉(zhuǎn)換、PID控制和排序等功能函數(shù)。CMSIS-DSP使用的是C語言,但是可以導(dǎo)入使用Python的Scikit-Learn庫訓(xùn)練得到的模型。另一個是CMSIS-NN庫,看名字便可知道這是一個用于構(gòu)建神經(jīng)網(wǎng)絡(luò)的庫,同樣也可以導(dǎo)入訓(xùn)練好的模型。

————————————————

版權(quán)聲明:本文為CSDN博主「hzbooks」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/hzbooks/article/details/122486165




關(guān)鍵詞: 嵌入式人工智能

評論


技術(shù)專區(qū)

關(guān)閉