人工智能(AI)正在加快速度從“云端”走向“邊緣”,進(jìn)入到越來越小的物聯(lián)網(wǎng)設(shè)備中。在終端和邊緣側(cè)的微處理器上,實(shí)現(xiàn)的機(jī)器學(xué)習(xí)過程,被稱為微型機(jī)器學(xué)習(xí),即TinyML。更準(zhǔn)確的說,TinyML是指工程師們?cè)趍W功率范圍以下的設(shè)備上,實(shí)現(xiàn)機(jī)器學(xué)習(xí)的方法、工具和技術(shù)。
過去的十年中,由于處理器速度的提高和大數(shù)據(jù)的出現(xiàn),我們見證了機(jī)器學(xué)習(xí)算法的規(guī)模呈指數(shù)級(jí)增長(zhǎng)。在TinyML 2020 峰會(huì)上,英偉達(dá)、ARM、高通、谷歌、微軟、三星等公司紛紛展示了微型機(jī)器學(xué)習(xí)的最新成果。本次峰會(huì)得出了很多重要結(jié)論:
對(duì)于很多應(yīng)用場(chǎng)景,TinyML技術(shù)和硬件已經(jīng)進(jìn)化到實(shí)用性較強(qiáng)的階段;
無論是算法、網(wǎng)絡(luò),還是低于100KB的ML模型,都取得了重大突破;
視覺和音頻領(lǐng)域的低功耗需求快速增長(zhǎng)。
TinyML 是機(jī)器學(xué)習(xí)和嵌入式 IoT 設(shè)備的交叉領(lǐng)域,是一門新興的工程學(xué)科,具有革新許多行業(yè)的潛力。
TinyML的主要受益者,是邊緣計(jì)算和節(jié)能計(jì)算領(lǐng)域。TinyML源自物聯(lián)網(wǎng)IoT的概念。物聯(lián)網(wǎng)的傳統(tǒng)做法,是將數(shù)據(jù)從本地設(shè)備發(fā)送到云端處理。一些人對(duì)這一方式在隱私、延遲、存儲(chǔ)和能源效率等方面存在疑慮。
能源效率:無論通過有線還是無線方式,數(shù)據(jù)傳輸都非常耗能,比使用乘積累加運(yùn)算單元(multiply-accumulate units,MAU)的本機(jī)計(jì)算高出約一個(gè)數(shù)量級(jí)。最節(jié)能的做法,是研發(fā)具備本地?cái)?shù)據(jù)處理能力的物聯(lián)網(wǎng)系統(tǒng)。相對(duì)于“以計(jì)算為中心”的云模型,“以數(shù)據(jù)為中心”的計(jì)算思想已得到了人工智能先驅(qū)者的一些先期探討,并已在當(dāng)前得到了應(yīng)用。
隱私:數(shù)據(jù)傳輸中存在侵犯隱私的隱患。數(shù)據(jù)可能被惡意行為者攔截,并且存儲(chǔ)在云等單個(gè)位置中時(shí),數(shù)據(jù)固有的安全性也會(huì)降低。通過將數(shù)據(jù)大部保留在設(shè)備上,可最大程度地減少通信需求,進(jìn)而提高安全性和隱私性。
存儲(chǔ):許多物聯(lián)網(wǎng)設(shè)備所獲取的大部分?jǐn)?shù)據(jù)是毫無用處的。想象一下,一臺(tái)安防攝像機(jī)每天 24 小時(shí)不間斷地記錄著建筑物的入口情況。在一天的大部分時(shí)間中,該攝像機(jī)并沒有發(fā)揮任何作用,因?yàn)椴]有什么異常情況發(fā)生。采用僅在必要時(shí)激活的更智能的系統(tǒng),可降低對(duì)存儲(chǔ)容量的需求,進(jìn)而降低需傳輸?shù)皆贫说臄?shù)據(jù)量。
延遲:標(biāo)準(zhǔn)的物聯(lián)網(wǎng)設(shè)備,例如 Amazon Alexa,需將數(shù)據(jù)傳輸?shù)皆苼硖幚恚缓笥伤惴ǖ妮敵鼋o出響應(yīng)。從這個(gè)意義上講,設(shè)備只是云模型的一個(gè)便捷網(wǎng)關(guān),類似于和 Amazon 服務(wù)器之間的信鴿。設(shè)備本身并非智能的,響應(yīng)速度完全取決于互聯(lián)網(wǎng)性能。如果網(wǎng)速很慢,那么 Amazon Alexa 的響應(yīng)也會(huì)變慢。自帶自動(dòng)語音識(shí)別功能的智能 IoT 設(shè)備,由于降低甚至是完全消除了對(duì)外部通信的依賴,因此降低了延遲。
上述問題推動(dòng)著邊緣計(jì)算的發(fā)展。邊緣計(jì)算的理念就是在部署在云“邊緣”的設(shè)備上實(shí)現(xiàn)數(shù)據(jù)處理功能。這些邊緣設(shè)備在內(nèi)存、計(jì)算和功能方面都高度受限于設(shè)備自身的資源,進(jìn)而需要研發(fā)更為高效的算法、數(shù)據(jù)結(jié)構(gòu)和計(jì)算方法。
此類改進(jìn)同樣適用于規(guī)模較大的模型,在不降低模型準(zhǔn)確率(accuracy)的同時(shí),實(shí)現(xiàn)機(jī)器學(xué)習(xí)模型效率數(shù)個(gè)數(shù)量級(jí)的提高。例如,Microsoft開發(fā)的Bonsai算法可小到2 KB,但比通常40MB的kNN算法或是4MB的神經(jīng)網(wǎng)絡(luò)具有更好的性能。這個(gè)結(jié)果聽上去可能無感,但如果換句話說——在規(guī)模縮小了一萬倍的模型上取得同樣的準(zhǔn)確率,這就十分令人印象深刻了。規(guī)模如此小的模型,可以運(yùn)行在2KB內(nèi)存的Arduino Uno上。簡(jiǎn)而言之,現(xiàn)在可以在售價(jià)5美元的微控制器上構(gòu)建此類機(jī)器學(xué)習(xí)模型。
機(jī)器學(xué)習(xí)正處于一個(gè)交叉路口,兩種計(jì)算范式齊頭并進(jìn),即以計(jì)算為中心的計(jì)算,和以數(shù)據(jù)為中心的計(jì)算。
在以計(jì)算為中心的計(jì)算范式下,數(shù)據(jù)是在數(shù)據(jù)中心的實(shí)例上存儲(chǔ)和分析的;而在以數(shù)據(jù)為中心的計(jì)算范式下,處理是在數(shù)據(jù)的原始位置執(zhí)行的。
盡管在目前,以計(jì)算為中心的計(jì)算范式似乎很快會(huì)達(dá)到上限,但是以數(shù)據(jù)為中心的計(jì)算范式才剛剛起步。
當(dāng)前,物聯(lián)網(wǎng)設(shè)備和嵌入式機(jī)器學(xué)習(xí)模型日益普及。人們可能并未注意到其中許多設(shè)備,例如智能門鈴、智能恒溫器,以及只要用戶說話甚至拿起就可以“喚醒”的智能手機(jī)。
下面將深入介紹 TinyML 的工作機(jī)制,以及在當(dāng)前和將來的應(yīng)用情況。
應(yīng)用領(lǐng)域
目前,TinyML主要的兩個(gè)重點(diǎn)應(yīng)用領(lǐng)域是:
關(guān)鍵字發(fā)現(xiàn):大多數(shù)人已經(jīng)非常熟悉此應(yīng)用,例如“你好,Siri”和“你好,Google”等關(guān)鍵字,通常也稱為“熱詞”或“喚醒詞”。設(shè)備會(huì)連續(xù)監(jiān)聽來自麥克風(fēng)的音頻輸入,訓(xùn)練實(shí)現(xiàn)僅響應(yīng)與所學(xué)關(guān)鍵字匹配的特定聲音序列。這些設(shè)備比自動(dòng)語音識(shí)別(automatic speech recognition,ASR)更簡(jiǎn)單,使用更少的資源。Google智能手機(jī)等設(shè)備還使用了級(jí)聯(lián)架構(gòu)實(shí)現(xiàn)揚(yáng)聲器的驗(yàn)證,以確保安全性。
視覺喚醒詞:視覺喚醒詞使用圖像類似替代喚醒詞的功能,通過對(duì)圖像做二分類表示存在與否。例如,設(shè)計(jì)一個(gè)智能照明系統(tǒng),在檢測(cè)到人的存在時(shí)啟動(dòng),并在人離開時(shí)關(guān)閉。同樣,野生動(dòng)物攝影師可以使用視覺喚醒功能在特定的動(dòng)物出現(xiàn)時(shí)啟動(dòng)拍攝,安防攝像機(jī)可以在檢測(cè)到人活動(dòng)時(shí)啟動(dòng)拍攝。
下圖全面展示當(dāng)前TinyML機(jī)器學(xué)習(xí)的應(yīng)用概覽。
圖3 TinyML 的機(jī)器學(xué)習(xí)用例(圖片來源:NXP)
TinyML工作機(jī)制
TinyML 算法的工作機(jī)制與傳統(tǒng)機(jī)器學(xué)習(xí)模型幾乎完全相同,通常在用戶計(jì)算機(jī)或云中完成模型的訓(xùn)練。訓(xùn)練后處理是TinyML真正發(fā)揮作用之處,通常稱為“深度壓縮”(deep compression)。
圖4 深度壓縮示意圖(來源:[ArXiv 論文](https://arxiv.org/pdf/1510.00149.pdf))
模型蒸餾(Distillation)
模型在訓(xùn)練后需要更改,以創(chuàng)建更緊湊的表示形式。這一過程的主要實(shí)現(xiàn)技術(shù)包括剪枝(pruning)和知識(shí)蒸餾。
知識(shí)蒸餾的基本理念,是考慮到較大網(wǎng)絡(luò)內(nèi)部存在的稀疏性或冗余性。雖然大規(guī)模網(wǎng)絡(luò)具有較高的表示能力,但如果網(wǎng)絡(luò)容量未達(dá)到飽和,則可以用具有較低表示能力的較小網(wǎng)絡(luò)(即較少的神經(jīng)元)表示。在 Hinton 等人 2015 年發(fā)表的研究工作中,將 Teacher 模型中轉(zhuǎn)移給 Student 模型的嵌入信息稱為“黑暗知識(shí)”(dark knowledge)。
下圖給出了知識(shí)蒸餾的過程:
圖 5 深度壓縮過程圖
圖中Teacher模型是經(jīng)過訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型,任務(wù)是將其“知識(shí)”轉(zhuǎn)移給稱為Student 模型的,參數(shù)較少的小規(guī)模卷積網(wǎng)絡(luò)模型。此過程稱為“知識(shí)蒸餾”,用于將相同的知識(shí)包含在規(guī)模較小的網(wǎng)絡(luò)中,從而實(shí)現(xiàn)一種網(wǎng)絡(luò)壓縮方式,以便用于更多內(nèi)存受限的設(shè)備上。
同樣,剪枝有助于實(shí)現(xiàn)更緊湊的模型表示。寬泛而言,剪枝力圖刪除對(duì)輸出預(yù)測(cè)幾乎無用的神經(jīng)元。這一過程通常涉及較小的神經(jīng)權(quán)重,而較大的權(quán)重由于在推理過程中具有較高的重要性而會(huì)得到保留。隨后,可在剪枝后的架構(gòu)上對(duì)網(wǎng)絡(luò)做重新訓(xùn)練,調(diào)優(yōu)輸出。
圖6 對(duì)蒸餾模型知識(shí)表示做剪枝的圖示
量化(Quantization)
蒸餾后的模型,需對(duì)此后的訓(xùn)練進(jìn)行量化,形成兼容嵌入式設(shè)備架構(gòu)的格式。
為什么要做量化?假定對(duì)于一臺(tái)Arduino Uno,使用8位數(shù)值運(yùn)算的ATmega328P微控制器。在理想情況下要在Uno上運(yùn)行模型,不同于許多臺(tái)式機(jī)和筆記本電腦使用32位或64位浮點(diǎn)表示,模型的權(quán)重必須以8位整數(shù)值存儲(chǔ)。通過對(duì)模型做量化處理,權(quán)重的存儲(chǔ)規(guī)模將減少到1/4,即從32位量化到8位,而準(zhǔn)確率受到的影響很小,通常約1-3%。
圖7 8 位編碼過程中的量化誤差示意圖(圖片來源:《[TinyML](https://tinymlbook.com/)》一書)
由于存在量化誤差,可能會(huì)在量化過程中丟失某些信息。例如在基于整型的平臺(tái)上,值為3.42的浮點(diǎn)表示形式可能會(huì)被截取為3。為了解決這個(gè)問題,有研究提出了量化可感知(quantization-aware,QA)訓(xùn)練作為替代方案。QA訓(xùn)練本質(zhì)上是在訓(xùn)練過程中,限制網(wǎng)絡(luò)僅使用量化設(shè)備可用的值。
霍夫曼編碼
編碼是可選步驟。編碼通過最有效的方式來存儲(chǔ)數(shù)據(jù),可進(jìn)一步減小模型規(guī)模。通常使用著名的 霍夫曼編碼。
編譯
對(duì)模型量化和編碼后,需將模型轉(zhuǎn)換為可被輕量級(jí)網(wǎng)絡(luò)解釋器解釋的格式,其中最廣為使用的就是TF Lite(約500 KB大小)和TF Lite Micro(約20 KB)。模型將編譯為可被大多數(shù)微控制器使用并可有效利用內(nèi)存的C 或C++ 代碼,由設(shè)備上的解釋器運(yùn)行。
圖8 TinyML 應(yīng)用的工作流圖(來源:Pete Warden 和 Daniel Situnayake 編寫的《[TinyML](https://tinymlbook.com/)》一書)
大多數(shù)TinyML技術(shù),針對(duì)的是處理微控制器所導(dǎo)致的復(fù)雜性。TF Lite和TF Lite Micro非常小,是因?yàn)槠渲袆h除了所有非必要的功能。不幸的是,它們同時(shí)也刪除了一些有用的功能,例如調(diào)試和可視化。這意味著,如果在部署過程中出現(xiàn)錯(cuò)誤,可能很難判別原因。
為什么不在設(shè)備上訓(xùn)練?
在設(shè)備上進(jìn)行訓(xùn)練會(huì)引入額外的復(fù)雜性。由于數(shù)值精度的降低,要確保網(wǎng)絡(luò)訓(xùn)練所需的足夠準(zhǔn)確率是極為困難的。在標(biāo)準(zhǔn)臺(tái)式計(jì)算機(jī)的精度下,自動(dòng)微分方法是大體準(zhǔn)確的。計(jì)算導(dǎo)數(shù)的精度可達(dá)令人難以置信的10^{-16},但是在8 位數(shù)值上做自動(dòng)微分,將給出精度較差的結(jié)果。在反向傳播過程中,會(huì)組合使用求導(dǎo)并最終用于更新神經(jīng)參數(shù)。在如此低的數(shù)值精度下,模型的準(zhǔn)確率可能很差。
盡管存在上述問題,一些神經(jīng)網(wǎng)絡(luò)還是使用了 16 位和 8 位浮點(diǎn)數(shù)做了訓(xùn)練。
計(jì)算效率如何?
可以通過定制模型,提高模型的計(jì)算效率。一個(gè)很好的例子就是MobileNet V1 和MobileNet V2,它們是已在移動(dòng)設(shè)備上得到廣泛部署的模型架構(gòu),本質(zhì)上是一種通過重組(recast)實(shí)現(xiàn)更高計(jì)算效率卷積運(yùn)算的卷積神經(jīng)網(wǎng)絡(luò)。這種更有效的卷積形式,稱為深度可分離卷積結(jié)構(gòu)(depthwiseseparable convolution)。針對(duì)架構(gòu)延遲的優(yōu)化,還可以使用基于硬件的概要(hardware-based profiling)和神經(jīng)架構(gòu)搜索(neural architecture search)等技術(shù)。
新一輪人工智能革命
在資源受限的設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型,為許多新的應(yīng)用打開了大門。使標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)更加節(jié)能的技術(shù)進(jìn)步,將有助于消除數(shù)據(jù)科學(xué)對(duì)環(huán)境影響的一些擔(dān)憂。此外,TinyML支持嵌入式設(shè)備搭載基于數(shù)據(jù)驅(qū)動(dòng)算法的全新智能,進(jìn)而應(yīng)用在了從 預(yù)防性維護(hù) 到 檢測(cè)森林中的鳥叫聲 等多種場(chǎng)景中。
盡管繼續(xù)擴(kuò)大模型的規(guī)模是一些機(jī)器學(xué)習(xí)從業(yè)者的堅(jiān)定方向,但面向內(nèi)存、計(jì)算和能源效率更高的機(jī)器學(xué)習(xí)算法發(fā)展也是一個(gè)新的趨勢(shì)。TinyML仍處于起步階段,在該方向上的專家很少。該方向正在快速增長(zhǎng),并將在未來幾年內(nèi),成為人工智能在工業(yè)領(lǐng)域的重要新應(yīng)用。
原文標(biāo)題:TinyML:下一輪人工智能革命
文章出處:【微信公眾號(hào):FPGA入門到精通】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1642文章
21918瀏覽量
611933 -
人工智能
+關(guān)注
關(guān)注
1804文章
48449瀏覽量
244907
原文標(biāo)題:TinyML:下一輪人工智能革命
文章出處:【微信號(hào):xiaojiaoyafpga,微信公眾號(hào):電子森林】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
從邊緣計(jì)算 到云端計(jì)算

看智能傳感器如何推動(dòng)邊緣人工智能普及化

在邊緣設(shè)備上設(shè)計(jì)和部署深度神經(jīng)網(wǎng)絡(luò)的實(shí)用框架
如何在低功耗MCU上實(shí)現(xiàn)人工智能和機(jī)器學(xué)習(xí)
19位國際頂尖學(xué)者聯(lián)袂撰寫《重新審視邊緣人工智能:機(jī)遇與挑戰(zhàn)》

評(píng)論