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