深度學習(xi)模型最初的成(cheng)功歸功于擁有大量內存和(he)GPU集群的大型服務器。深度學習(xi)的前景催生了一(yi)個(ge)為深度神經網絡(luo)提供云(yun)計算(suan)服務的行業。因此(ci),在幾乎無限的云(yun)資源上(shang)運行的大型神經網絡(luo)變得非常(chang)流(liu)行,這對于具有充足預(yu)算(suan)的科技公(gong)司尤其如此(ci)。
但與此(ci)同時,近年來也出現了另一種相反的(de)趨(qu)勢(shi),即為邊緣設(she)備創(chuang)建機器學(xue)習(xi)(xi)模型。這些被稱為微型機器學(xue)習(xi)(xi)(TinyML)的(de)模型適用于內(nei)存和處理能力有限(xian)、互聯(lian)網(wang)連接不存在或有限(xian)的(de)設(she)備。
IBM和麻省理工(gong)學院(MIT)聯(lian)合開展的(de)一項最新研究工(gong)作解(jie)決了(le)卷積(ji)神(shen)經網(wang)絡(luo)(CNN)的(de)峰值內存瓶頸(jing)問題(ti)。這是(shi)一種深度學習體系結構,對(dui)計算機視覺(jue)應(ying)用尤其重(zhong)要。在NeurIPS 2021會(hui)議上(shang)提交(jiao)的(de)一篇論文中詳細介紹了(le)稱為一種McUnETV2的(de)模型(xing)(xing),該模型(xing)(xing)能夠在低內存和低功(gong)耗微控制器(qi)上(shang)運行卷積(ji)神(shen)經網(wang)絡(luo)(CNN)。
雖然云(yun)(yun)端深(shen)度學習非常成功(gong),但并(bing)不適用于所(suo)有情況。事實(shi)上(shang),許(xu)多應(ying)用程(cheng)序(xu)往(wang)往(wang)都需要在硬(ying)件(jian)設(she)備上(shang)直(zhi)接完(wan)成推(tui)理任(ren)務。例如,在一些(xie)如無人(ren)機(ji)救援這樣的(de)(de)任(ren)務環(huan)境中,互聯(lian)網連接是無法保證(zheng)的(de)(de)。在醫(yi)療保健等(deng)其他領域(yu),隱私要求和法規約束等(deng)也使得(de)(de)將(jiang)數據發送到云(yun)(yun)端進行處(chu)理變得(de)(de)非常困難。對于需要實(shi)時機(ji)器語(yu)言推(tui)斷的(de)(de)應(ying)用程(cheng)序(xu)來說,往(wang)返云(yun)(yun)計算所(suo)造成的(de)(de)延遲(chi)更是令人(ren)望而卻步。
上述所有(you)必需滿足的(de)條件使(shi)得機(ji)(ji)器學習設備在(zai)(zai)科學上和(he)(he)商業上都(dou)具有(you)吸引力(li)。例如,iPhone手(shou)機(ji)(ji)現在(zai)(zai)就有(you)不少(shao)運(yun)行(xing)面部(bu)識(shi)(shi)別和(he)(he)語音識(shi)(shi)別的(de)應用(yong)程(cheng)序(xu)(xu),安卓手(shou)機(ji)(ji)也(ye)可以(yi)直接運(yun)行(xing)翻譯軟件。此外,Apple Watch已經可以(yi)使(shi)用(yong)機(ji)(ji)器學習算法來檢測運(yun)動(dong)和(he)(he)ECG模式(注:ECG即(ji)心(xin)電圖(tu)(tu)一(yi)詞electrocardiogram的(de)縮(suo)寫,又稱EKG,是一(yi)種測試實驗,用(yong)于(yu)記錄引發(fa)心(xin)跳的(de)電信號(hao)序(xu)(xu)列的(de)時間節點和(he)(he)強(qiang)度(du)。通過分析ECG圖(tu)(tu)像,醫生可以(yi)更(geng)好地診斷心(xin)率是否正常和(he)(he)心(xin)臟功(gong)能是否存在(zai)(zai)問題(ti))。
上(shang)(shang)述這些(xie)設(she)備上(shang)(shang)的(de)(de)(de)ML模型在一定程度上(shang)(shang)是由支持(chi)神經網(wang)絡緊(jin)湊、計算和(he)存儲效率更高(gao)的(de)(de)(de)技(ji)術進步(bu)而實現(xian)的(de)(de)(de)。同時(shi)由于硬件技(ji)術的(de)(de)(de)進步(bu),這樣的(de)(de)(de)ML模型在移動設(she)置上(shang)(shang)的(de)(de)(de)實現(xian)也成為可(ke)(ke)能(neng)。現(xian)在,我們的(de)(de)(de)智能(neng)手機(ji)和(he)可(ke)(ke)穿戴(dai)設(she)備比30年前(qian)的(de)(de)(de)高(gao)性能(neng)服(fu)務器(qi)擁有更多的(de)(de)(de)計算能(neng)力(li),有些(xie)甚(shen)至配(pei)置專門(men)的(de)(de)(de)協(xie)處理器(qi)來(lai)實現(xian)機(ji)器(qi)語言推(tui)理。
TinyML將邊緣AI向前(qian)推進了一步,使得在微(wei)控制(zhi)器(MCU)上運行(xing)深度學習模型(xing)成為可(ke)能,盡管(guan)微(wei)控制(zhi)器比(bi)我們口(kou)袋里和手(shou)腕(wan)上攜(xie)帶的小型(xing)計算機還要受限于資源。
另一方(fang)面,微控(kong)制(zhi)器(qi)價格低(di)廉(lian),平均售價不到(dao)0.50美元,它們幾乎無處不在,可(ke)以嵌入到(dao)從消費行業到(dao)工業設(she)(she)備(bei)的(de)(de)(de)(de)各個方(fang)面。同(tong)時,它們沒(mei)有通用計(ji)算設(she)(she)備(bei)中的(de)(de)(de)(de)資源,而(er)且大(da)多數都沒(mei)有操(cao)作系統。微控(kong)制(zhi)器(qi)的(de)(de)(de)(de)CPU很小,只有幾百KB的(de)(de)(de)(de)低(di)功(gong)耗內(nei)存(cun)(SRAM)和幾兆(zhao)字節(jie)的(de)(de)(de)(de)存(cun)儲空(kong)間,而(er)且沒(mei)有任何(he)網絡設(she)(she)備(bei)。它們大(da)多沒(mei)有主(zhu)電(dian)(dian)源,多年來都是必須使用紐扣(kou)電(dian)(dian)池。因此,在MCU上安(an)裝深度學習模型(xing)可(ke)能(neng)為許多應用開辟新的(de)(de)(de)(de)道路。
卷積神(shen)經網絡(CNN)的架構
為了將深度神經網絡(luo)縮小(xiao)到適(shi)合小(xiao)型內存計算設備的(de)大小(xiao),人(ren)們已經進行(xing)了多次努力。然而,這些努力大多集中(zhong)在(zai)減少(shao)深度學(xue)習模型中(zhong)的(de)參(can)數(shu)個數(shu)方(fang)面。例如,“剪(jian)枝”便是一種流行(xing)的(de)優(you)化算法,它通過刪(shan)除(chu)模型輸出中(zhong)不重要的(de)參(can)數(shu)來縮小(xiao)神經網絡(luo)。
剪枝(zhi)方法的(de)問題在于(yu)它(ta)們不能(neng)解決神經網(wang)絡的(de)內存瓶頸。深度學習庫的(de)標(biao)準實(shi)現需要將整個網(wang)絡層和激(ji)活(huo)層映射加載到(dao)內存中。不幸(xing)的(de)是(shi)(shi),經典的(de)優化方法不會對神經網(wang)絡的(de)早期計算層做出(chu)任何重大改變,尤其是(shi)(shi)在卷積神經網(wang)絡中。
這會導致網(wang)絡不同(tong)層(ceng)的(de)大(da)小不平衡,并導致“內存(cun)峰(feng)值”問(wen)題(ti):即使網(wang)絡在修剪后變得更輕量(liang)級(ji),運行(xing)它的(de)設備也必須擁(yong)有(you)與(yu)最大(da)層(ceng)相同(tong)的(de)內存(cun)。例如,在流行(xing)的(de)TinyML模(mo)型MobileNetV2中,早期層(ceng)計算達到的(de)內存(cun)峰(feng)值約(yue)為1.4兆(zhao)字節,而后期層(ceng)的(de)內存(cun)占用非常小。要運行(xing)該模(mo)型,設備將需(xu)要與(yu)模(mo)型峰(feng)值相同(tong)的(de)內存(cun)。由(you)于大(da)多(duo)數(shu)MCU的(de)內存(cun)不超過幾百KB,所以它們無法運行(xing)MobileNetV2的(de)現成(cheng)版本。
MobileNetV2是一種針對邊緣設備進行優化的神經(jing)網絡,但它(ta)的內存(cun)峰值約為1.4兆字節(jie),這(zhe)使得許多微(wei)控制(zhi)器(qi)無法訪問它(ta)。
另一種優化神經網絡的方法是(shi)減(jian)(jian)小模(mo)(mo)型的輸入大小。較(jiao)小的輸入圖像(xiang)(xiang)需要較(jiao)小的CNN即(ji)可(ke)執行預測(ce)任(ren)務(wu)。然而,減(jian)(jian)少輸入大小本身就(jiu)存在(zai)挑戰,并(bing)不是(shi)對(dui)所有計算機視覺(jue)任(ren)務(wu)都有效(xiao)。例如,對(dui)象檢測(ce)深度學習模(mo)(mo)型對(dui)圖像(xiang)(xiang)大小非常敏感,當(dang)輸入分辨率(lv)降低時(shi),其(qi)性能會(hui)迅速下降。
由(you)上圖易知,圖像分類ML模型(xing)(橙(cheng)色(se)線)比目標檢測模型(xing)(藍色(se)線)更(geng)容易降低分辨率。
為了(le)解(jie)決卷積神經網(wang)絡的內存瓶頸問(wen)題,研究(jiu)人員創(chuang)建了(le)一個名為MCUNetV2的深度(du)學習體系結構,可以將其內存帶寬調整到微控制器的極限。MCUNetV2是(shi)在同(tong)一科研小組之前的成果基(ji)礎上開(kai)發的,該工作已(yi)被(bei)NeurIPS 2020大(da)會接受并成功提交(jiao)。
MCUNetV2背后的(de)(de)主要(yao)思想是“基(ji)于補丁的(de)(de)推理”,這(zhe)(zhe)是一(yi)種(zhong)在不降低CNN準確性(xing)的(de)(de)情況下減少其內(nei)存占用的(de)(de)技術。MCUNetV2沒有將整(zheng)(zheng)個神(shen)經網(wang)絡(luo)層加(jia)載到(dao)內(nei)存中,而是在任何(he)給定時間加(jia)載并計(ji)算該(gai)層的(de)(de)較(jiao)小(xiao)區域或“補丁”。然后,它(ta)逐塊迭代(dai)整(zheng)(zheng)個層并組合這(zhe)(zhe)些值,直到(dao)計(ji)算整(zheng)(zheng)個層的(de)(de)激活(huo)部(bu)分。
圖中左側(ce)是(shi)經(jing)典深度學習系(xi)統計(ji)算(suan)一整層的情(qing)形,而右(you)側(ce)給(gei)出的是(shi)MCUNetV2一次計(ji)算(suan)一個補丁,從而減少DL推(tui)理的內存需(xu)求(qiu)。
由于MCUNetV2一(yi)次(ci)只需(xu)要存(cun)儲一(yi)片神(shen)經元,因此它(ta)在(zai)不降(jiang)(jiang)低(di)模型分辨(bian)率或參數的情況(kuang)下大(da)幅降(jiang)(jiang)低(di)內(nei)存(cun)峰值(zhi)。研究人員的實驗表明,MCUNetV2可(ke)以將(jiang)內(nei)存(cun)峰值(zhi)降(jiang)(jiang)低(di)至八分之(zhi)一(yi)。
MCUNetV2能夠將深度學習模型(xing)的內存峰值降低至八分(fen)之一
基于(yu)補(bu)丁的(de)(de)(de)推理(li)在(zai)節省內(nei)存的(de)(de)(de)同時也帶來了計算(suan)開銷的(de)(de)(de)權衡問題。麻省理(li)工學院(MIT)和(he)IBM的(de)(de)(de)研究(jiu)人員發現,在(zai)不(bu)同的(de)(de)(de)體系結構(gou)中整體網絡計算(suan)可能會增(zeng)加10-17%,這顯然不(bu)適用(yong)于(yu)低(di)功耗的(de)(de)(de)微控制器(qi)。
為(wei)了克服這個限制,研究(jiu)(jiu)人員(yuan)重新分配了神經網絡(luo)不同區塊的(de)(de)(de)“感(gan)(gan)受(shou)野(ye)”(注:在(zai)(zai)CNN中,第(di)n層特征圖(tu)中一個像(xiang)素對(dui)應作為(wei)第(di)1層的(de)(de)(de)輸入圖(tu)像(xiang)的(de)(de)(de)像(xiang)素數,即為(wei)該層的(de)(de)(de)感(gan)(gan)受(shou)野(ye)“receptive field”,簡稱(cheng)“RF”)。在(zai)(zai)CNN中,感(gan)(gan)受(shou)野(ye)是在(zai)(zai)任何時刻可(ke)被處(chu)理的(de)(de)(de)圖(tu)像(xiang)區域。更大(da)的(de)(de)(de)感(gan)(gan)受(shou)野(ye)需要更大(da)的(de)(de)(de)補丁(ding)(ding)和補丁(ding)(ding)之間的(de)(de)(de)重疊。當(dang)然,這就會產生更高的(de)(de)(de)計算(suan)(suan)開銷(xiao)。通過縮小(xiao)網絡(luo)初始塊的(de)(de)(de)感(gan)(gan)受(shou)野(ye)并擴(kuo)大(da)后期的(de)(de)(de)感(gan)(gan)受(shou)野(ye),研究(jiu)(jiu)人員(yuan)能夠將計算(suan)(suan)開銷(xiao)減少三分之二(er)以上(shang)。
感(gan)受(shou)野的重新分配(pei)有助于將MCUNetV2的計算開銷減少(shao)三分之二(er)以上
最(zui)后,研究(jiu)人(ren)員(yuan)觀察到,MCUNetV2的(de)(de)調(diao)整(zheng)在很大程(cheng)(cheng)度(du)上取決于ML模(mo)型架構、應用程(cheng)(cheng)序以及目標設備的(de)(de)內存和存儲(chu)容量。為了避免手動調(diao)整(zheng)每(mei)個設備和應用程(cheng)(cheng)序的(de)(de)深(shen)度(du)學(xue)習模(mo)型,研究(jiu)人(ren)員(yuan)使(shi)用了“神經算(suan)法(fa)搜索”,這是一個使(shi)用機(ji)器學(xue)習自動優(you)化神經網絡結構和推(tui)理調(diao)度(du)的(de)(de)過程(cheng)(cheng)。
研究人員(yuan)在幾(ji)個(ge)內(nei)(nei)存容量較(jiao)小(xiao)的(de)(de)微控制(zhi)器模型上測試了不同應用中的(de)(de)深度學習架構。結果(guo)表(biao)明,MCUNetV2優于其他TinyML技術,能夠以較(jiao)小(xiao)的(de)(de)內(nei)(nei)存需求和較(jiao)低的(de)(de)延遲實現在圖像分類和目標檢測方(fang)面達到(dao)更(geng)高的(de)(de)精度。
如下圖所示,研究人(ren)員正在(zai)使(shi)用實時(shi)人(ren)物檢(jian)測、視覺喚醒(xing)詞和人(ren)臉/口罩檢(jian)測等方式使(shi)用MCUNetV2。
譯(yi)者注:此(ci)處展示的(de)僅是youtube.com網站上展示的(de)使用MCUNetV2的(de)視頻(pin)中的(de)一幅截圖。
在2018年一篇題為《機器學習程序的未來為何如此微小》(Why the Future of Machine Learning is Tiny)的文章中,軟件工程師皮特·沃登(Pete Warden)認為,MCU上的機器學習極其重要。沃登寫道:“我相信機器學習可以在小型、低功耗芯片上運行,這種結合將解決我們目前無法解決的大量問題。”
由于傳(chuan)感(gan)(gan)器和(he)CPU的(de)(de)進步,我們(men)從世界各地獲取數據的(de)(de)能(neng)力大大增強。但我們(men)通過機(ji)器學習(xi)模型(xing)處(chu)理和(he)使(shi)用這些數據的(de)(de)能(neng)力卻受到網絡連(lian)接和(he)云(yun)服務器訪問的(de)(de)限制。正如沃(wo)登所說,處(chu)理器和(he)傳(chuan)感(gan)(gan)器比藍(lan)牙和(he)WiFi等無線電發射機(ji)更(geng)節能(neng)。
沃登寫(xie)道:“移動數(shu)據的(de)(de)物理(li)過程似乎需(xu)(xu)(xu)要(yao)(yao)大量的(de)(de)能(neng)量。一(yi)次(ci)操作所(suo)需(xu)(xu)(xu)的(de)(de)能(neng)量與發(fa)送比(bi)(bi)(bi)特的(de)(de)距離(li)成正(zheng)比(bi)(bi)(bi)似乎是(shi)一(yi)條規則。CPU和傳感(gan)器發(fa)送僅需(xu)(xu)(xu)要(yao)(yao)幾個(ge)毫(hao)米發(fa)送比(bi)(bi)(bi)特數(shu)且(qie)價(jia)(jia)格便宜,而無線(xian)電發(fa)送的(de)(de)代價(jia)(jia)則需(xu)(xu)(xu)要(yao)(yao)幾米甚至更大距離(li)才(cai)發(fa)送幾比(bi)(bi)(bi)特數(shu)據,而且(qie)價(jia)(jia)格昂(ang)貴……很(hen)明顯,一(yi)個(ge)有巨大潛力(li)的(de)(de)市場(chang)正(zheng)等(deng)待著用(yong)正(zheng)確的(de)(de)技術(shu)來開辟。我(wo)們(men)需(xu)(xu)(xu)要(yao)(yao)一(yi)種能(neng)在廉(lian)價(jia)(jia)微控制(zhi)器上工作的(de)(de)設備,它使用(yong)的(de)(de)能(neng)源非(fei)常少,依(yi)賴于計算(suan)而不是(shi)無線(xian)電,它能(neng)把我(wo)們(men)所(suo)有浪(lang)費的(de)(de)傳感(gan)器數(shu)據變成有用(yong)的(de)(de)數(shu)據。這就是(shi)機(ji)器學(xue)習,特別是(shi)深度學(xue)習將要(yao)(yao)填補的(de)(de)空白。”
由于MCUNetV2和TinyML在其他方(fang)面(mian)也取得(de)了進步,沃登的(de)預測很快會變成現(xian)實(shi)。在未來的(de)幾年里(li),我們可以期待TinyML能(neng)夠進入到家庭、辦(ban)公室、醫(yi)院、工(gong)廠、農場、道路、橋梁等(deng)的(de)數(shu)十億微控(kong)制(zhi)器(qi)中,從而有望實(shi)現(xian)以前根本不可能(neng)實(shi)現(xian)的(de)應(ying)用。