單片機
返回首頁

MIT開發出輕量級MCU神經網絡系統MCUNet

2020-11-18 來源:EEWORLD

根據MIT報道:


深度學習無處不在。人工智能的這一分支可以管理你的社交媒體并為谷歌搜索結果提供最準確的服務。很快,深度學習還可以檢查你的生命體征或設置你的恒溫器。麻省理工學院的研究人員開發了一種系統,可以將深度學習的神經網絡帶到新的、小得多的地方,比如可穿戴醫療設備、家用電器中的微型計算機芯片,以及構成“物聯網”(IoT)的2500億個物體。


這個名為MCUNet的系統設計了緊湊的神經網絡,盡管內存和處理能力有限,但它為物聯網設備上的深度學習提供了前所未有的速度和精度。這項技術可以促進物聯網領域的擴展,同時節約能源和提高數據安全性。


這項研究將在下個月的神經信息處理系統會議(Conference on Neural Information Processing Systems)上發表。本文的主要作者是Lin Ji,他是麻省理工學院電子工程和計算機科學系韓松實驗室的博士生。合著者包括麻省理工學院的韓松和Lin Yu Jun,麻省理工學院和臺灣國立大學的Chen Wei Ming,以及麻省理工-IBM沃森人工智能實驗室的John Cohn和Gan Chuang 。


物聯網的發展


物聯網誕生于20世紀80年代初,卡內基梅隆大學的研究生,Mike Kazar將一臺可樂機連接到互聯網上。這個小組的動機很簡單:懶惰。他們想先用電腦確認機器是否有存貨,然后再從辦公室前去購買——它是世界上第一臺聯網的物聯網設備。現在是微軟工程師的Kazar說:“這在很大程度上被看作是一個笑話的笑料,沒人料到如今互聯網上會有幾十億臺設備。”


自從那臺可樂機以來,日常用品已經越來越多地進入物聯網市場。這包括從可穿戴的心臟監護儀到智能冰箱——可以告訴你何時牛奶需要補充。物聯網設備通常運行在微控制器上,微控制器是一種簡單的計算機芯片,沒有操作系統,最小的處理能力,內存不到普通智能手機的千分之一。因此,像深度學習這樣的模式識別任務很難在物聯網設備上進行本地運行。對于復雜的分析,物聯網收集的數據通常被發送到云端,使其容易受到黑客攻擊,并且容易受到網絡延遲及速率的影響。


“我們如何將神經網絡直接部署在這些微小的設備上?這是一個非常熱門的新研究領域。”韓松說,“像谷歌和ARM這樣的公司都在朝這個方向努力。”


圍繞MCUNet一起,韓松團隊共同設計了“微小深度學習”所需的兩個組件——微控制器上神經網絡的操作。其中一個組件是TinyEngine,它是一個類似于操作系統的、指導資源管理的推理引擎。TinyEngine被優化為運行特定的神經網絡結構,它是由MCUNet的另一個組件TinyNAS選擇的,TinyNAS是一種神經結構搜索算法。


系統算法協同設計


為微控制器設計一個深層網絡并不容易。現有的神經網絡結構搜索技術首先從一個預先定義的模板中提取大量可能的網絡結構,然后逐步找到一個精度高、成本低的網絡結構。雖然這個方法有效,但不是最有效的。Lin Ji說道:“它可以很好地工作在GPU或智能手機上,但是很難將這些技術直接應用到微型微控制器上,因為它們太小了。”


因此,開發了TinyNAS,一種神經結構搜索方法,可以創建自定義大小的網絡。“我們有很多微控制器,它們具有不同的功率容量和不同的內存大小。”Lin Ji說“所以我們開發了算法TinyNAS來優化不同微控制器的搜索空間。”TinyNAS的定制特性意味著它可以生成緊湊的神經網絡,在排除不必要的參數的情況下,為給定的微控制器提供最佳性能。“然后我們將最終、高效的模型交付給微控制器。”Lin Ji說。


為了運行這個微小的神經網絡,微控制器還需要一個精簡的推理機制。一個典型的推理機會為它很少運行的任務攜帶一些死板的指令。這些額外的代碼對筆記本電腦或智能手機來說沒有問題,但它很容易壓倒微控制器。“它沒有片外存儲器,也沒有磁盤,”韓說。“所有的東西放在一起只是一兆字節的閃存,所以我們必須非常小心地管理這么小的資源。”Cue TinyEngine。


研究人員與TinyNAS一起開發了他們的推理機。TinyEngine生成運行TinyNAS定制神經網絡所需的基本代碼。任何不用的代碼都會被丟棄,這會減少編譯時間。“我們只保留我們需要的,”韓松說。“自從我們開始設計神經網絡,我們就知道我們需要什么。這就是系統算法協同設計的優勢。”在小組對TinyEngine的測試中,編譯后的二進制代碼的大小相對Google和ARM的可比微控制器推理引擎縮小1.9到5倍。TinyEngine還包含減少運行時的創新,包括深度卷積,它將峰值內存使用量減少了近一半。在開發了TinyNAS和TinyEngine之后,韓松的團隊對MCUNet進行了測試。


MCUNet的第一個挑戰是圖像分類。研究人員使用ImageNet數據庫對帶有標簽的圖像進行訓練,然后測試其對新圖像進行分類的能力。在他們測試的一個商業微控制器上,MCUNet成功地對70.7%的新穎圖像進行了分類——之前最先進的神經網絡和推理機組合的準確率僅為54%。“即使是1%的改進也被認為是顯著的,所以這是微控制器人工智能的一個巨大飛躍。”Lin Ji說道。


研究小組在另外三個微控制器的ImageNet測試中發現了類似的結果。在速度和準確性上,MCUNet擊敗了競爭對手,即用戶通過喚醒音(例如“Hey,Siri”)或簡單地進入一個房間就可以與計算機進行交互。這些實驗突出了MCUNet對多種應用的適應性。


“潛力巨大”


令人期待的測試結果給了韓松希望,它將成為微控制器的新行業標準。“它有巨大的潛力,”他說。


加州大學伯克利分校的計算機科學家Kurt Keutzer表示,這一進展“將深度神經網絡設計的前沿領域進一步擴展到小型節能微控制器的計算領域。MCUNet可以為最簡單的廚房設備帶來智能計算機視覺功能,或者啟用更智能的運動傳感器。”


MCUNet還可以使物聯網設備更加安全。“一個關鍵的優勢是保護隱私,您不需要將數據傳輸到云端。”韓松說道。


本地分析數據可降低個人信息(包括個人健康數據)被盜的風險。韓松設想使用MCUNet的智能手表不僅可以感知用戶的心跳、血壓和氧氣水平,還可以分析和幫助他們理解這些信息。MCUNet還可以為互聯網接入受限的車輛和農村地區的物聯網設備帶來深度學習。


另外,MCUNet的計算能力很小,需求的功耗很小。“我們的最終目標是用更少的計算資源、更少的人力資源和更少的數據來實現高效、微型的人工智能,”韓松說。


附:


極術社區發布并分析了韓松等人的詳細論文,如下所述:


640.jpg

標題&作者團隊

【Happy導語】MIT韓松團隊提出了一種適用于IoT設備的模型設計方案,它將NAS與Engine進行了協同設計,從而確保了模型可以更好的在微型處理器上運行,同時具有更高的精度。該文的研究成果將進一步加速IoT設備端的AI應用,這個方向具有非常大的市場前景,期待各位同學能在該領域取得更多的成果。

Paper: https://arxiv.org/abs/2007.10319

Abstract

基于單片機(Microcontroller Units, MCU)的微型IoT設備上的機器學習應用是非常有價值的,但同時也極具挑戰:單片機的內存要比手機內存小的多(比如ARM Cortex-M7 MCU僅有320kb SRAM與1MB Flash存儲)。

作者提出了MCUNet,一種高效網絡架構搜索(TinyNAS)與輕量推理引擎(TinyEngine)聯合設計的方案,它可以使得ImageNet級別的推理在微處理器上進行運行。TinyNAS采用了兩階段的網絡架構索索,在第一階段優化搜索空間以適配資源約束,在第二階段進行網絡架構搜索。TinyNAS可以在低搜索復雜度下自適應處理不同的約束問題(比如設備、延遲、功耗以及內存等),并與TinyEngine協同設計。TinyEngine是一種內存高效的推理庫,它按照整體網絡采用了內存機制設計,而非傳統的layer模式,它可以降低2.7x的內存占用并加速1.7-3.3x的推理速度(相比TF-Lite Micro與CMSIS-NN)。

MCUNet是首個在現有微處理器產品上達到70%精度的模型(ImageNet數據),相比MobileNetV2與ResNet18,它的更低的SRAM(3.6x)和Flash占用(6.6x)。在視覺&語音喚醒任務上,MCUNet取得了SOTA精度,比MobileNetV2和ProxylessNAS快2.4-3.4x,同時具有更低的SRAM占用(2.2-2.6x)。該研究意味著:永遠在線的IoT設備上微型機器學習時代已經到來了

Introduction

在我們的生活中,IoT設備已變得非常常見(據統計已達250B),并用于方方面面(比如智能制造、個性化醫療、農業生產、自助零售等等)。這種低成本、低功耗的微處理器也為微型機器學習的應用帶來了新的機會,如能在這類設備上運行AI算法,那么我們可以在端上直接進行數據分析,進而擴大了AI的應用領域。

然而,微處理器具有非常有限的資源負載,尤其是SRAM和Flash,要比手機端或者GPU的資源小的多,這也使得深度學習在IoT設備上的部署具有挑戰性。下圖對比了GPU、手機端以及微處理器的資源信息,很明顯在微處理器上運行ResNet50、MobileNetV2是不可行的。峰值內存占用遠遠超出微處理的最大內存,兩者之間存在巨大的差距。

注:SRAM可以進行讀寫,約束了feature-map的大小;flash只可以進行讀,約束了模型大小。

640-1.jpg

image-20200721135847687

不同于云端或者手機端設備,微處理器是一種“裸設備”,它不具有操作系統。所以需要同時進行網絡架構與推理庫的設計以更高效的管理有限的資源并是配合內存與存儲負載。而現有的NAS或手工網絡架構往往聚焦于GPU端或手機端,它們僅僅對FLOPs或者推理延遲進行優化,所得模型并不適合于微處理器。

該文提出了一種系統-模型聯合設計的方案MCUNet,它可以在微處理器上處理ImageNet級別的任務。為解決微處理器上稀缺內存問題,作者聯合優化TinyNAS與TinyEngine以降低內存占用。TinyNAS的設計基于這樣的一個假設:a search space that can accommodate higher FLOPs under memory constraint can produce better model。為處理微處理器上非常緊張的資源約束,還需要設計一種內存高效的推理庫以消除不必要的內存占用。TinyEngine的改進為:TinyEngine improves over the existing inference library with code generator-based compilation method to eliminate memory overhead。它可以降低2.7x的內存占用并提升22%推理速度。

Method

下圖給出了作者所設計MCUNet聯合設計方案與傳統方案的對比示意圖,相比傳統方案,MCUNet可以更好的利用微處理器的資源。

640-2.jpg

image-20200721141427380

TinyNAS

TinyNAS是一種兩階段的NAS方法,它首先優化搜索空間以適配不同的資源約束,然后在優化空間上進行網絡架構搜索。經由該優化空間,它可以顯著的提升最終模型的精度。在搜索空間方面,作者對輸入分辨率和網絡寬度方面進行搜索。輸入分辨率范圍,網絡寬度因子為。大概有108個可能的搜索空間配置,每個搜索空間配置包含個子網絡。第一階段的目的是尋找具有最高精度且可以滿足資源約束的搜索空間。下圖給出了不同配置搜索空間的FLOPs與CDF示意圖。
640-3.jpg
image-20200721142019222

在完成搜索空間確認后,第二階段的目的是進行網絡架構的搜索。采用采用one-shotNAS技術進行網路架構搜索。關于one-shot NAS部分建議各位同學去看一下Face++的《Single Path One-Shot Neural Architecture Search with Uniform Sampling》一文。

TinyEngine

研究人員往往假設:不同的深度學習框架僅僅影響推理速度而不會影響模型精度。然而,對于TinyML而言,推理庫的高效性不僅影響推理速度,同時還會影響搜索到的模型精度。一個好的推理框架可以更充分的利用MUC的有效資源,避免內存占用,從而允許更大的架構設計空間,而更大的架構設計空間也意味著更高精度模型。因此,作者將TinyNAS與TinyEngine進行協同設計,以獲得內存高效的推理庫。

640-4.jpg

image-20200721143314434

上圖給出了TinyEngine與現有推理框架在不同維度的對比。現有的TF-Lite Micro與CMSIS-NN是解釋型推理框架,它們易于跨平臺部署,但同時需要額外的內存(在MCU上內存是最昂貴的資源)保存架構的元信息(比如網絡架構參數);相反TinyEngine僅僅聚焦于MCU設備,采用code generator-based進行編譯。它不僅避免了運行時解釋耗時,同時釋放了額外的內存占用,從而允許更大的模型。相比CMSIS-NN,TinyEngine可以降低2.7x內存占用,提升22%推理速度。

與此同時TinyEngine的庫文件非常輕量,這使得其非常適合于MCU。不同于TF-Lite Micro需要準備所有的操作(比如conv、softmax)以支持跨模型推理;而TinyEngine僅僅需要編譯必要的操作。下圖給出了TF-Lite Micro、CMSIS-NN與TinyEngien的大小對比。

640-5.jpg

TinyEngine為不同層制作特定的核優化方案:loops tiling is based on the kernel size and available memory; inner loop unrolling is also specialized for different kernel size。同時,TinyEngine還進行了操作合并,比如Conv+PAd+BN+ReLU。上述優化方案可以為模型推理帶來22%的加速。

Experiments

在實驗方面,作者選用了ImageNet、Visual Wake Word以及Speech Command三個數據集。ImageNet代表了大尺度圖像分類任務,VWW用于判別是否有人存在,而SC代表了主流的微處理器應用場景:語音喚醒。

在模型部署方面,作者采用int8線性量化后部署。MCU選型為STM32F746,它具有320kb SRAM與1MB Flash。直接上結果咯。Table2的結果很震撼哦,最優模型可達60.1%精度。

640-6.jpg
image-20200721150233522

640-7.jpg

image-20200721150253878

640-8.jpg

image-20200721150308615

640-9.jpg

image-20200721150453393

好了,全文到底結束。上面已經對該文的核心進行了簡單的介紹。但美中不足的是:該文尚未開源。

Conclusion

作者提出了一種網絡架構搜索與推理庫協同設計方案MCUNet,它可以使得深度學習在微型硬件設備(IoT)上運行。所提方案在現有微處理器產品中取得前所未有了70.2%(ImageNet)的精度,同時具有更快的推理速度。該研究意味著:永遠在線的IoT設備上微型機器學習時代已經到來了

進入單片機查看更多內容>>
相關視頻
  • TI 新一代 C2000? 微控制器:全方位助力伺服及馬達驅動應用

  • MSP430電容觸摸技術 - 防水Demo演示

  • 直播回放: Microchip Timberwolf? 音頻處理器在線研討會

  • 新唐 8051單片機教程

  • 基于靈動MM32W0系列MCU的指夾血氧儀控制及OTA升級應用方案分享

  • 基于靈動MM32SPIN系列MCU的無感FOC便攜冰箱應用方案分享

    相關電子頭條文章
萝卜大香蕉