0
本文作者: AI研習(xí)社-譯站 | 2020-11-04 10:34 |
譯者:AI研習(xí)社(聽風(fēng)1996)
雙語(yǔ)原文鏈接:https://www.yanxishe.com/TextTranslation/2913
由美國(guó)宇航局推動(dòng)開始的電子產(chǎn)品小型化成為整個(gè)消費(fèi)品行業(yè)(的趨勢(shì))?,F(xiàn)在我們把貝多芬的完整作品帶在領(lǐng)章上使用耳機(jī)聽。—天體物理學(xué)家、科學(xué)評(píng)論員尼爾-德格拉斯-泰森(Neil deGrasse Tyson)[......]超低功耗嵌入式設(shè)備的普及,再加上像TensorFlow Lite for Microcontrollers這樣的嵌入式機(jī)器學(xué)習(xí)框架的引入,將使人工智能驅(qū)動(dòng)的物聯(lián)網(wǎng)設(shè)備大規(guī)模擴(kuò)散?!?哈佛大學(xué)副教授 Vijay Janapa Reddi
嵌入式設(shè)備的微小機(jī)器學(xué)習(xí)(TinyML)概述
這是關(guān)于微型機(jī)器學(xué)習(xí)系列文章的第一篇。本文的目的是向讀者介紹微型機(jī)器學(xué)習(xí)的理念及其未來(lái)的潛力。關(guān)于具體應(yīng)用、實(shí)現(xiàn)和教程的深入討論將在該系列后續(xù)文章中進(jìn)行。
在過去的十年里,由于處理器速度的提高和大數(shù)據(jù)的出現(xiàn),我們見證了機(jī)器學(xué)習(xí)算法的規(guī)模成倍增長(zhǎng)。最初,模型小到可以使用中央處理單元(CPU)內(nèi)的一個(gè)或多個(gè)內(nèi)核在本地機(jī)器上運(yùn)行。
不久之后,使用圖形處理單元(GPU)進(jìn)行計(jì)算成為處理較大數(shù)據(jù)集的必要條件,并且由于引入了基于云的服務(wù),如SaaS平臺(tái)(如Google Colaboratory)和IaaS(如Amazon EC2 Instances),變得更加容易實(shí)現(xiàn)。此時(shí),算法仍然可以在單機(jī)上運(yùn)行。
最近,我們看到了專門的應(yīng)用專用集成電路(ASIC)和張量處理單元(TPU)的發(fā)展,它們可以包裝出約8個(gè)GPU的功率。這些設(shè)備已經(jīng)增強(qiáng)了在多個(gè)系統(tǒng)之間分布式學(xué)習(xí)的能力,以嘗試建立得到更多更大的模型。
最近,隨著GPT-3算法(2020年5月發(fā)布)的發(fā)布,這種情況達(dá)到了頂峰,它擁有一個(gè)包含1750億個(gè)神經(jīng)元的驚人網(wǎng)絡(luò)架構(gòu)—比人類大腦中存在的神經(jīng)元數(shù)量(約850億)多出一倍。這比有史以來(lái)創(chuàng)建的下一個(gè)最大的神經(jīng)網(wǎng)絡(luò)Turing-LG(2020年2月發(fā)布,包含約175億個(gè)參數(shù))的神經(jīng)元數(shù)量多10倍以上。有估計(jì)稱,該模型的訓(xùn)練成本約為1000萬(wàn)美元,耗電量約為3GWh(約為三座核電站一小時(shí)的發(fā)電量)。
雖然GPT-3和Turing-LG取得的成績(jī)值得稱贊,當(dāng)然也自然導(dǎo)致了一些業(yè)內(nèi)人士對(duì)人工智能行業(yè)日益增長(zhǎng)的碳足跡提出了批評(píng)。不過,這也有助于激發(fā)人工智能學(xué)界對(duì)更加節(jié)能計(jì)算的興趣。這樣的想法,比如更高效的算法、數(shù)據(jù)表示和計(jì)算,幾年來(lái)一直是一個(gè)看似不相關(guān)領(lǐng)域的焦點(diǎn):微型機(jī)器學(xué)習(xí)。
微型機(jī)器學(xué)習(xí)(tinyML)是機(jī)器學(xué)習(xí)和嵌入式物聯(lián)網(wǎng)(IoT)設(shè)備的交叉領(lǐng)域。該領(lǐng)域是一門新興的工程學(xué)科,有可能給許多行業(yè)帶來(lái)革命性的變化。
tinyML的主要行業(yè)受益者是在邊緣計(jì)算和節(jié)能計(jì)算領(lǐng)域。TinyML源于物聯(lián)網(wǎng)(IoT)的概念。傳統(tǒng)的物聯(lián)網(wǎng)概念是將數(shù)據(jù)從本地設(shè)備發(fā)送到云端進(jìn)行處理。一些人對(duì)這個(gè)概念提出了一定的擔(dān)憂:包括隱私、延遲、存儲(chǔ)和能效等等。
能源效率。傳輸數(shù)據(jù)(通過電線或無(wú)線)是非常耗能的,比機(jī)載計(jì)算(具體來(lái)說(shuō)是乘積單元)耗能約一個(gè)數(shù)量級(jí)。開發(fā)能夠自己進(jìn)行數(shù)據(jù)處理的物聯(lián)網(wǎng)系統(tǒng)是最節(jié)能的方法。AI先驅(qū)們討論這種 "以數(shù)據(jù)為中心 "的計(jì)算理念(相對(duì)于云模式的 "以計(jì)算為中心")已經(jīng)有一段時(shí)間了,現(xiàn)在我們開始看到它的發(fā)揮。
隱私。傳輸數(shù)據(jù)可能會(huì)被侵犯隱私。這些數(shù)據(jù)可能會(huì)被惡意行為者攔截,而且當(dāng)數(shù)據(jù)被儲(chǔ)存在一個(gè)單一的位置(如云端)時(shí),其本質(zhì)上變得不那么安全。通過將數(shù)據(jù)主要保存在設(shè)備上并盡量減少通信,這可以提高安全性和隱私性。
存儲(chǔ)。對(duì)于很多物聯(lián)網(wǎng)設(shè)備來(lái)說(shuō),它們獲取的數(shù)據(jù)是沒有價(jià)值的。想象一下,一個(gè)監(jiān)控?cái)z像頭每天24小時(shí)記錄一棟大樓的入口。在一天中的很大一部分時(shí)間里,攝像頭的錄像是沒有用處的,因?yàn)闆]有任何事情發(fā)生。通過擁有一個(gè)更智能的系統(tǒng),只有在必要的時(shí)候才會(huì)激活,就需要更低的存儲(chǔ)容量,并減少傳輸?shù)皆贫怂璧臄?shù)據(jù)量。
延時(shí)。對(duì)于標(biāo)準(zhǔn)的物聯(lián)網(wǎng)設(shè)備,比如亞馬遜Alexa,這些設(shè)備將數(shù)據(jù)傳輸?shù)皆贫诉M(jìn)行處理,然后根據(jù)算法的輸出返回響應(yīng)。從這個(gè)意義上說(shuō),該設(shè)備只是通向云模型的便捷網(wǎng)關(guān),就像自己和亞馬遜服務(wù)器之間的信鴿。這個(gè)設(shè)備很笨,完全依靠網(wǎng)速來(lái)產(chǎn)生結(jié)果。如果你的網(wǎng)絡(luò)速度很慢,亞馬遜的Alexa也會(huì)變得很慢。對(duì)于具有板載自動(dòng)語(yǔ)音識(shí)別功能的智能物聯(lián)網(wǎng)設(shè)備來(lái)說(shuō),由于減少了(甚至沒有)對(duì)外部通信的依賴,所以延遲會(huì)降低
這些問題導(dǎo)致了邊緣計(jì)算的發(fā)展,即在邊緣設(shè)備(位于云的 "邊緣 "的設(shè)備)上執(zhí)行處理活動(dòng)的想法。這些設(shè)備在內(nèi)存、計(jì)算和功率方面受到資源的高度限制,從而引發(fā)了更高效的算法、數(shù)據(jù)結(jié)構(gòu)和計(jì)算方法的發(fā)展。
這樣的改進(jìn)也適用于更大的模型,這可能會(huì)使機(jī)器學(xué)習(xí)模型的效率提高一個(gè)數(shù)量級(jí),而對(duì)模型的準(zhǔn)確性沒有影響。舉個(gè)例子,微軟開發(fā)的 Bonsai 算法可以小到 2 KB,但其性能甚至可以比典型的 40 MB kNN 算法,或者 4 MB 神經(jīng)網(wǎng)絡(luò)更好。這個(gè)結(jié)果聽起來(lái)可能并不重要,但在大小只有1/10000的模型上,同樣的精度是相當(dāng)驚人的。這么小的模型可以在Arduino Uno上運(yùn)行,Arduino Uno的可用內(nèi)存為2 KB,簡(jiǎn)而言之,你現(xiàn)在可以在一個(gè)5美元的微控制器上建立這樣一個(gè)機(jī)器學(xué)習(xí)模型。
我們正處在一個(gè)有趣的十字路口,機(jī)器學(xué)習(xí)正在兩種計(jì)算范式之間分叉:以計(jì)算為中心的計(jì)算和以數(shù)據(jù)為中心的計(jì)算。在以計(jì)算為中心的范式中,數(shù)據(jù)是由數(shù)據(jù)中心的實(shí)例進(jìn)行儲(chǔ)備和分析的,而在以數(shù)據(jù)為中心的范式中,處理是在數(shù)據(jù)的原始本地完成的。雖然我們似乎正在迅速走向以計(jì)算為中心范式的上限,但以數(shù)據(jù)為中心范式的工作才剛剛開始。
在現(xiàn)代世界中,物聯(lián)網(wǎng)設(shè)備和嵌入式機(jī)器學(xué)習(xí)模型正變得越來(lái)越無(wú)處不在(預(yù)計(jì)到2020年底,活躍設(shè)備將超過200億臺(tái))。其中很多你可能根本沒有注意到。智能門鈴、智能恒溫器、當(dāng)你說(shuō)兩句話時(shí)就會(huì) "喚醒 "的智能手機(jī),甚至只是拿起手機(jī)。本文的剩余部分將更深入地關(guān)注 tinyML 的工作原理,以及當(dāng)前和未來(lái)的應(yīng)用。
云端的層次結(jié)構(gòu)(資源:eBizSolutions)
之前,復(fù)雜的電路是設(shè)備執(zhí)行各種動(dòng)作的必要條件?,F(xiàn)在,機(jī)器學(xué)習(xí)使得將這種硬件 "智能 "抽象成軟件的可能性越來(lái)越大,使得嵌入式設(shè)備越來(lái)越簡(jiǎn)單、輕巧、靈活。
嵌入式設(shè)備中的機(jī)器學(xué)習(xí)應(yīng)用所面臨的挑戰(zhàn)是相當(dāng)大的,但在這一領(lǐng)域已經(jīng)取得了很大的進(jìn)展。在微控制器上部署神經(jīng)網(wǎng)絡(luò)的關(guān)鍵挑戰(zhàn)是低內(nèi)存占用、有限的功率和有限的計(jì)算。
也許TinyML最明顯的例子是在智能手機(jī)內(nèi)。這些設(shè)備永遠(yuǎn)主動(dòng)聆聽 "喚醒詞",如Android智能手機(jī)的 "Hey Google",或iPhone上的 "Hey Siri"。通過智能手機(jī)的主要中央處理單元(CPU)來(lái)運(yùn)行這些活動(dòng),現(xiàn)代iPhone的CPU主頻為1.85GHz,將在短短幾個(gè)小時(shí)內(nèi)耗盡電池。對(duì)于大多數(shù)人每天最多使用幾次的東西來(lái)說(shuō),這種程度的消耗是不可接受的。
為了解決這個(gè)問題,開發(fā)者們創(chuàng)造了專門的低功耗硬件,能夠由小電池(如圓形CR2032 "硬幣 "電池)供電。這使得這些電路即使在CPU不運(yùn)行時(shí)也能保持活躍,基本上只要屏幕不亮就可以。
這些電路的功耗可以低至1毫瓦,使用標(biāo)準(zhǔn)CR2032電池可以供電長(zhǎng)達(dá)一年。
看上去似乎不像是,但這是個(gè)大問題。能源是許多電子設(shè)備的限制因素。任何需要市電的設(shè)備都被限制在有線路的地點(diǎn),當(dāng)十幾個(gè)設(shè)備出現(xiàn)在同一個(gè)地點(diǎn)時(shí),很快就會(huì)變得不堪重負(fù)。市電是低效且昂貴的。將市電電壓(在美國(guó)的工作電壓約為120V)轉(zhuǎn)換為典型的電路電壓范圍(通常為約5V),會(huì)浪費(fèi)大量的能源。任何有筆記本充電器的人在拔掉充電器時(shí)可能都會(huì)知道這一點(diǎn)。在電壓轉(zhuǎn)換過程中,充電器內(nèi)部變壓器產(chǎn)生的熱量在電壓轉(zhuǎn)換過程中被浪費(fèi)掉了能量。
即使是帶電池的設(shè)備也會(huì)受到電池壽命有限的影響,這就需要頻繁的對(duì)接。很多消費(fèi)類設(shè)備的設(shè)計(jì)都是電池只能維持一個(gè)工作日。TinyML設(shè)備可以用硬幣大小的電池繼續(xù)工作一年,這意味著它們可以被放置在偏遠(yuǎn)的環(huán)境中,只有在必要時(shí)才進(jìn)行通信以節(jié)約能源。
喚醒詞并不是我們看到的唯一無(wú)縫嵌入智能手機(jī)的TinyML。加速計(jì)數(shù)據(jù)被用來(lái)判斷是否有人剛剛拿起手機(jī),從而喚醒CPU并打開屏幕。
顯然,這些并不是TinyML唯一可能的應(yīng)用。事實(shí)上,TinyML為企業(yè)和業(yè)余愛好者提供了許多令人興奮的機(jī)會(huì),可以生產(chǎn)出更智能的物聯(lián)網(wǎng)設(shè)備。在一個(gè)數(shù)據(jù)變得越來(lái)越重要的世界里,將機(jī)器學(xué)習(xí)資源分配到遠(yuǎn)程位置中受內(nèi)存限制設(shè)備的能力可能會(huì)對(duì)數(shù)據(jù)密集型行業(yè)產(chǎn)生巨大的好處,如農(nóng)業(yè)、天氣預(yù)測(cè)或地震學(xué)。
毫無(wú)疑問,賦予邊緣設(shè)備以執(zhí)行數(shù)據(jù)驅(qū)動(dòng)處理的能力,將為工業(yè)流程帶來(lái)模式轉(zhuǎn)變。舉個(gè)例子,如果設(shè)備能夠監(jiān)測(cè)農(nóng)作物,并在檢測(cè)到土壤濕度、特定氣體(例如,蘋果成熟時(shí)會(huì)釋放乙烷)或特定大氣條件(例如,大風(fēng)、低溫或高濕度)等特征時(shí)發(fā)出 "幫助 "信息, 將極大地促進(jìn)作物生長(zhǎng),從而提高作物產(chǎn)量。
作為另一個(gè)例子,智能門鈴可能會(huì)安裝一個(gè)攝像頭,可以使用面部識(shí)別來(lái)確定誰(shuí)在現(xiàn)場(chǎng)。這可以用于安全目的,甚至可以用于當(dāng)有人在場(chǎng)時(shí)將門鈴的攝像頭輸送到房屋中的電視,以便居民知道誰(shuí)在門口。
tinyML目前主要關(guān)注的兩個(gè)方面是:
關(guān)鍵字發(fā)現(xiàn)。大多數(shù)人已經(jīng)熟悉這個(gè)應(yīng)用程序。"Hey Siri "和 "Hey Google "是關(guān)鍵詞的例子(通常與“ hotword”或“ wake word”同義使用)。這類設(shè)備連續(xù)聆聽來(lái)自麥克風(fēng)的音頻輸入,并被訓(xùn)練成只對(duì)特定的聲音序列做出反應(yīng),而這些聲音序列與學(xué)習(xí)到的關(guān)鍵詞相對(duì)應(yīng)。這些設(shè)備比自動(dòng)語(yǔ)音識(shí)別(ASR)應(yīng)用更簡(jiǎn)單,利用的資源也相應(yīng)較少。某些設(shè)備(例如Google智能手機(jī))利用級(jí)聯(lián)架構(gòu)來(lái)提供揚(yáng)聲器驗(yàn)證以確保安全性。
視覺喚醒詞。有一種基于圖像的類似于喚醒詞的方法,稱為視覺喚醒詞。把這些詞看作是對(duì)圖像的二進(jìn)制分類,以說(shuō)明某些東西要么存在,要么不存在。例如,一個(gè)智能照明系統(tǒng)可能被設(shè)計(jì)成當(dāng)它檢測(cè)到一個(gè)人的存在時(shí)啟動(dòng),當(dāng)他們離開時(shí)關(guān)閉。同樣,野生動(dòng)物攝影師可以利用這一點(diǎn)在特定的動(dòng)物存在時(shí)拍照, 或者當(dāng)他們發(fā)現(xiàn)有人時(shí),可以使用安全攝像機(jī)拍攝照片。
下面是TinyML當(dāng)前機(jī)器學(xué)習(xí)使用案例的更廣泛概述。
TinyML的機(jī)器學(xué)習(xí)用例(來(lái)源圖片:NXP)。
TinyML算法的工作方式與傳統(tǒng)的機(jī)器學(xué)習(xí)模型基本相同。通常情況下,模型是在用戶的計(jì)算機(jī)上或云端進(jìn)行常規(guī)訓(xùn)練。訓(xùn)練后才是真正的tinyML工作開始的地方,這個(gè)過程通常被稱為深度壓縮。
深度壓縮過程示意圖。來(lái)源:ArXiv。
訓(xùn)練后,然后以創(chuàng)建具有更緊湊表示形式的模型的方式改變模型。剪枝和知識(shí)蒸餾是用于此目的的兩種此類技術(shù)。
知識(shí)蒸餾的基本思想是,大型網(wǎng)絡(luò)內(nèi)部具有一定的稀疏性或冗余性。雖然大型網(wǎng)絡(luò)具有較高的表征能力,但如果網(wǎng)絡(luò)容量沒有飽和,它可以在一個(gè)較小的網(wǎng)絡(luò)中以較低的表征能力(即較少的神經(jīng)元)來(lái)表示。Hinton等(2015)將教師模型中的嵌入信息稱為 "暗知識(shí)",以轉(zhuǎn)移到學(xué)生模型中去。
下圖說(shuō)明了知識(shí)蒸餾的過程。
深度壓縮過程的示意圖。在這個(gè)圖中,"老師 "是一個(gè)訓(xùn)練有素的卷積神經(jīng)網(wǎng)絡(luò)模型。教師的任務(wù)是將其 "知識(shí) "轉(zhuǎn)移到一個(gè)參數(shù)較少的卷積網(wǎng)絡(luò)模型,即 "學(xué)生 "身上。這個(gè)過程被稱為知識(shí)蒸餾,用于將相同的知識(shí)封裝在一個(gè)較小的網(wǎng)絡(luò)中,提供了一種壓縮網(wǎng)絡(luò)的方法,使它們可以在更多內(nèi)存限制的設(shè)備上使用。來(lái)源:ArXiv。
在這張圖中,"老師 "是一個(gè)經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型。老師的任務(wù)是將其 "知識(shí) "轉(zhuǎn)移到一個(gè)參數(shù)較少的小網(wǎng)絡(luò)模型—"學(xué)生 "身上。這個(gè)過程用于將相同的知識(shí)封裝在一個(gè)較小的網(wǎng)絡(luò)中,提供了一種壓縮知識(shí)表示的方法,從而壓縮了神經(jīng)網(wǎng)絡(luò)的大小,使它們可以在更多的內(nèi)存限制的設(shè)備上使用。
同樣,修剪也有助于使模型的表示更加緊湊。廣義上講,剪枝試圖去除那些對(duì)輸出預(yù)測(cè)提供很少效用的神經(jīng)元。這通常與小的神經(jīng)權(quán)重有關(guān),而大的權(quán)重則由于其在推理過程中的重要性更大而被保留。然后在修剪后的架構(gòu)上對(duì)網(wǎng)絡(luò)進(jìn)行再訓(xùn)練,以微調(diào)輸出。為提煉模型的知識(shí)表征而進(jìn)行修剪的示意圖
經(jīng)過蒸餾,模型在訓(xùn)練后被量化為與嵌入式設(shè)備架構(gòu)兼容的格式。
為什么要進(jìn)行量化呢?想象一個(gè)使用ATmega328P微控制器的Arduino Uno,它使用8位算術(shù)。要在Uno上運(yùn)行模型,理想情況下,模型權(quán)重必須存儲(chǔ)為8位整數(shù)值(而許多臺(tái)式電腦和筆記本電腦使用32位或64位浮點(diǎn)表示)。通過量化模型,權(quán)重的存儲(chǔ)量減少了4倍(從32位到8位值的量化),而精度的影響通??梢院雎圆挥?jì)(通常在1-3%左右)。
8位編碼過程中量化誤差的說(shuō)明(然后用于重建32位浮點(diǎn)數(shù))。(來(lái)源:TinyML書)
在量化過程中,一些信息可能會(huì)因?yàn)?a target="_blank" rel=nofollow>量化誤差而丟失(例如,在浮點(diǎn)表示法上為3.42的值在整數(shù)平臺(tái)上可能被截?cái)酁?)。為了解決這個(gè)問題,量化感知(QA)訓(xùn)練也被提出來(lái)作為一種替代方案。QA訓(xùn)練主要是在訓(xùn)練過程中約束網(wǎng)絡(luò)只使用量化設(shè)備上可用的值(見Tensorflow示例)。
編碼是一個(gè)可選的步驟,有時(shí)會(huì)通過最大效率的方式存儲(chǔ)數(shù)據(jù)來(lái)進(jìn)一步減小模型的大?。和ǔJ峭ㄟ^著名的Huffman編碼。
一旦模型被量化和編碼后,它就會(huì)被轉(zhuǎn)換為一種可以被某種形式的輕型神經(jīng)網(wǎng)絡(luò)解釋器解釋的格式,其中最流行的可能是 TF Lite (大小約500 KB)和 TF Lite Micro(大小約20 KB)。然后,該模型被編譯成C或C++代碼(大多數(shù)微控制器工作的語(yǔ)言,以便有效地使用內(nèi)存),并由解釋器在設(shè)備上運(yùn)行。
TInyML應(yīng)用程序的工作流程(來(lái)源:Pete Warden和Daniel Situnayake撰寫的 TinyML)
tinyML的大部分技巧都是在處理復(fù)雜的微控制器世界。TF Lite和TF Lite Micro之所以如此之小,是因?yàn)槿魏尾槐匾墓δ芏家驯粍h除。不幸的是,這包括有用的能力,如調(diào)試和可視化。這意味著,如果在部署過程中出現(xiàn)錯(cuò)誤,就很難分辨出發(fā)生了什么。
此外,雖然模型必須存儲(chǔ)在設(shè)備上,但模型還必須能夠進(jìn)行推理。這意味著微控制器必須有足夠大的內(nèi)存,以便能夠運(yùn)行(1)其操作系統(tǒng)和庫(kù),(2)神經(jīng)網(wǎng)絡(luò)解釋器(如TF Lite),(3)存儲(chǔ)的神經(jīng)權(quán)重和神經(jīng)架構(gòu),以及(4)推理過程中的中間結(jié)果。因此,在tinyML的研究論文中,經(jīng)常引用量化算法的峰值內(nèi)存使用量,以及內(nèi)存使用量、乘積單元(MAC)數(shù)量、精度等。
在設(shè)備上進(jìn)行訓(xùn)練會(huì)帶來(lái)額外的復(fù)雜性。由于數(shù)值精度的降低,要保證充分訓(xùn)練網(wǎng)絡(luò)所需的精度水平變得非常困難。標(biāo)準(zhǔn)臺(tái)式計(jì)算機(jī)上的自動(dòng)微分方法大約精確到機(jī)器精度。計(jì)算導(dǎo)數(shù)的精度達(dá)到10^-16是令人難以置信的,但利用8位值的自動(dòng)微分會(huì)導(dǎo)致較差的結(jié)果。在反向傳播過程中,這些導(dǎo)數(shù)會(huì)被復(fù)合并最終用于更新神經(jīng)網(wǎng)絡(luò)參數(shù)。在數(shù)值精度如此之低的情況下,這種模型的精度可能會(huì)很差。
也就是說(shuō),神經(jīng)網(wǎng)絡(luò)已經(jīng)使用16位和8位浮點(diǎn)數(shù)進(jìn)行訓(xùn)練。
第一篇研究在深度學(xué)習(xí)中降低數(shù)值精度的論文是2015年Suyog Gupta及其同事的論文“Deep Learning with Limited Numerical Precision”。這篇論文的結(jié)果很有意思,它表明32位浮點(diǎn)表示法可以減少到16位定點(diǎn)表示法,而精度基本沒有下降。然而,只有在使用隨機(jī)舍入時(shí)才會(huì)出現(xiàn)這種情況,因?yàn)槠骄?,它?huì)產(chǎn)生的無(wú)偏結(jié)果。
2018年,王乃剛及其同事在“Training Deep Neural Networks with 8-bit Floating Point Numbers”一文中,使用8位浮點(diǎn)數(shù)訓(xùn)練了一個(gè)神經(jīng)網(wǎng)絡(luò)。由于在反向傳播過程中需要保持梯度計(jì)算的保真度(使用自動(dòng)微分能夠達(dá)到機(jī)器精度),因此使用8位數(shù)字而不是推理來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò)要實(shí)現(xiàn)的挑戰(zhàn)要困難得多。
也可以對(duì)模型進(jìn)行定制,使其計(jì)算效率更高。廣泛部署在移動(dòng)設(shè)備上的模型架構(gòu),如MobileNetV1和MobileNetV2就是很好的例子。這些本質(zhì)上是卷積神經(jīng)網(wǎng)絡(luò),它們重塑了卷積運(yùn)算以使其具有更高的計(jì)算效率。這種更高效的卷積形式被稱為深度可分離卷積。還可以使用基于硬件的性能分析和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索來(lái)優(yōu)化體系結(jié)構(gòu)的延遲,本文不涉及這些問題。
在資源有限的設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型的能力為許多新的可能性敞開了大門。發(fā)展更加節(jié)能的標(biāo)準(zhǔn)機(jī)器學(xué)習(xí),這將有助于消除對(duì)數(shù)據(jù)科學(xué)對(duì)環(huán)境影響的擔(dān)憂。此外,tinyML允許嵌入式設(shè)備具有基于數(shù)據(jù)驅(qū)動(dòng)算法的新型智能,這可以用于從預(yù)防性維護(hù)到在森林中探測(cè)鳥聲等任何事情。
雖然一些機(jī)器學(xué)習(xí)從業(yè)者無(wú)疑會(huì)繼續(xù)擴(kuò)大模型的規(guī)模,但一種新的趨勢(shì)正在向更節(jié)省內(nèi)存、計(jì)算和能源的機(jī)器學(xué)習(xí)算法發(fā)展。TinyML還處于萌芽階段,這方面的專家很少。我建議有興趣的讀者查閱參考文獻(xiàn)中的一些論文,這些論文都是tinyML領(lǐng)域的一些重要論文。這個(gè)領(lǐng)域發(fā)展迅速,在未來(lái)幾年內(nèi)將成為人工智能在工業(yè)領(lǐng)域的一個(gè)新的重要應(yīng)用。請(qǐng)關(guān)注這個(gè)領(lǐng)域。
[1] Hinton, Geoffrey & Vinyals, Oriol & Dean, Jeff. (2015). Distilling the Knowledge in a Neural Network.
[2] D. Bankman, L. Yang, B. Moons, M. Verhelst and B. Murmann, “An always-on 3.8μJ/86% CIFAR-10 mixed-signal binary CNN processor with all memory on chip in 28nm CMOS,” 2018 IEEE International Solid-State Circuits Conference — (ISSCC), San Francisco, CA, 2018, pp. 222–224, doi: 10.1109/ISSCC.2018.8310264.
[3] Warden, P. (2018). Why the Future of Machine Learning is Tiny. Pete Warden’s Blog.
[4] Ward-Foxton, S. (2020). <a href="https://www.eetimes.com/ai-sound-recognition-on-a-cortex-m0->AI Sound Recognition on a Cortex-M0: Data is King. EE Times.
[5] Levy, M. (2020). Deep Learning on MCUs is the Future of Edge Computing. EE Times.
[6] Gruenstein, Alexander & Alvarez, Raziel & Thornton, Chris & Ghodrat, Mohammadali. (2017). A Cascade Architecture for Keyword Spotting on Mobile Devices.
[7] Kumar, A., Saurabh Goyal, and M. Varma. (2017). Resource-efficient Machine Learning in 2 KB RAM for the Internet of Things.
[8] Zhang, Yundong & Suda, Naveen & Lai, Liangzhen & Chandra, Vikas. (2017). Hello Edge: Keyword Spotting on Microcontrollers.
[9] Fedorov, Igor & Stamenovic, Marko & Jensen, Carl & Yang, Li-Chia & Mandell, Ari & Gan, Yiming & Mattina, Matthew & Whatmough, Paul. (2020). TinyLSTMs: Efficient Neural Speech Enhancement for Hearing Aids.
[10] Lin, Ji & Chen, Wei-Ming & Lin, Yujun & Cohn, John & Gan, Chuang & Han, Song. (2020). MCUNet: Tiny Deep Learning on IoT Devices.
[11] Chen, Tianqi & Moreau, Thierry. (2020). TVM: An Automated End-to-End Optimizing Compiler for Deep Learning.
[12] Weber, Logan, and Reusch, Andrew (2020). TinyML — How TVM is Taming Tiny.
[13] Krishnamoorthi, Raghuraman. (2018). Quantizing deep convolutional networks for efficient inference: A whitepaper.
[14] Yosinski, Jason & Clune, Jeff & Bengio, Y. & Lipson, Hod. (2014). How transferable are features in deep neural networks?.
[15] Lai, Liangzhen & Suda, Naveen & Chandra, Vikas. (2018). CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs.
[16] Chowdhery, Aakanksha & Warden, Pete & Shlens, Jonathon & Howard, Andrew & Rhodes, Rocky. (2019). Visual Wake Words Dataset.
[17] Warden, Pete. (2018). Speech Commands: A Dataset for Limited-Vocabulary Speech Recognition.
[18] Zemlyanikin, Maxim & Smorkalov, Alexander & Khanova, Tatiana & Petrovicheva, Anna & Serebryakov, Grigory. (2019). 512KiB RAM Is Enough! Live Camera Face Recognition DNN on MCU. 2493–2500. 10.1109/ICCVW.2019.00305.
AI研習(xí)社是AI學(xué)術(shù)青年和AI開發(fā)者技術(shù)交流的在線社區(qū)。我們與高校、學(xué)術(shù)機(jī)構(gòu)和產(chǎn)業(yè)界合作,通過提供學(xué)習(xí)、實(shí)戰(zhàn)和求職服務(wù),為AI學(xué)術(shù)青年和開發(fā)者的交流互助和職業(yè)發(fā)展打造一站式平臺(tái),致力成為中國(guó)最大的科技創(chuàng)新人才聚集地。
如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學(xué)習(xí)新知,分享成長(zhǎng)。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。