譯者 | 朱先忠
審校 | 梁策 孫淑娟
深度學習模型最初的成功歸功于擁有大量內存和GPU集群的大型服務器。深度學習的前景催生了一個為深度神經網絡提供云計算服務的行業。因此,在幾乎無限的云資源上運行的大型神經網絡變得非常流行,這對于具有充足預算的科技公司尤其如此。
但與此同時,近年來也出現了另一種相反的趨勢,即為邊緣設備創建機器學習模型。這些被稱為微型機器學習(TinyML)的模型適用于內存和處理能力有限、互聯網連接不存在或有限的設備。
IBM和麻省理工學院(MIT)聯合開展的一項最新研究工作解決了卷積神經網絡(CNN)的峰值內存瓶頸問題。這是一種深度學習體系結構,對計算機視覺應用尤其重要。在NeurIPS 2021會議上提交的一篇論文中詳細介紹了稱為一種McUnETV2的模型,該模型能夠在低內存和低功耗微控制器上運行卷積神經網絡(CNN)。
1.為什么會出現微型機器學習(TinyML)?
雖然云端深度學習非常成功,但并不適用于所有情況。事實上,許多應用程序往往都需要在硬件設備上直接完成推理任務。例如,在一些如無人機救援這樣的任務環境中,互聯網連接是無法保證的。在醫療保健等其他領域,隱私要求和法規約束等也使得將數據發送到云端進行處理變得非常困難。對于需要實時機器語言推斷的應用程序來說,往返云計算所造成的延遲更是令人望而卻步。
上述所有必需滿足的條件使得機器學習設備在科學上和商業上都具有吸引力。例如,iPhone手機現在就有不少運行面部識別和語音識別的應用程序,安卓手機也可以直接運行翻譯軟件。此外,Apple Watch已經可以使用機器學習算法來檢測運動和ECG模式(注:ECG即心電圖一詞electrocardiogram的縮寫,又稱EKG,是一種測試實驗,用于記錄引發心跳的電信號序列的時間節點和強度。通過分析ECG圖像,醫生可以更好地診斷心率是否正常和心臟功能是否存在問題)。
上述這些設備上的ML模型在一定程度上是由支持神經網絡緊湊、計算和存儲效率更高的技術進步而實現的。同時由于硬件技術的進步,這樣的ML模型在移動設置上的實現也成為可能。現在,我們的智能手機和可穿戴設備比30年前的高性能服務器擁有更多的計算能力,有些甚至配置專門的協處理器來實現機器語言推理。
TinyML將邊緣AI向前推進了一步,使得在微控制器(MCU)上運行深度學習模型成為可能,盡管微控制器比我們口袋里和手腕上攜帶的小型計算機還要受限于資源。
另一方面,微控制器價格低廉,平均售價不到0.50美元,它們幾乎無處不在,可以嵌入到從消費行業到工業設備的各個方面。同時,它們沒有通用計算設備中的資源,而且大多數都沒有操作系統。微控制器的CPU很小,只有幾百KB的低功耗內存(SRAM)和幾兆字節的存儲空間,而且沒有任何網絡設備。它們大多沒有主電源,多年來都是必須使用紐扣電池。因此,在MCU上安裝深度學習模型可能為許多應用開辟新的道路。
2.卷積神經網絡中的內存瓶頸
卷積神經網絡(CNN)的架構
為了將深度神經網絡縮小到適合小型內存計算設備的大小,人們已經進行了多次努力。然而,這些努力大多集中在減少深度學習模型中的參數個數方面。例如,“剪枝”便是一種流行的優化算法,它通過刪除模型輸出中不重要的參數來縮小神經網絡。
剪枝方法的問題在于它們不能解決神經網絡的內存瓶頸。深度學習庫的標準實現需要將整個網絡層和激活層映射加載到內存中。不幸的是,經典的優化方法不會對神經網絡的早期計算層做出任何重大改變,尤其是在卷積神經網絡中。
這會導致網絡不同層的大小不平衡,并導致“內存峰值”問題:即使網絡在修剪后變得更輕量級,運行它的設備也必須擁有與最大層相同的內存。例如,在流行的TinyML模型MobileNetV2中,早期層計算達到的內存峰值約為1.4兆字節,而后期層的內存占用非常小。要運行該模型,設備將需要與模型峰值相同的內存。由于大多數MCU的內存不超過幾百KB,所以它們無法運行MobileNetV2的現成版本。
MobileNetV2是一種針對邊緣設備進行優化的神經網絡,但它的內存峰值約為1.4兆字節,這使得許多微控制器無法訪問它。
另一種優化神經網絡的方法是減小模型的輸入大小。較小的輸入圖像需要較小的CNN即可執行預測任務。然而,減少輸入大小本身就存在挑戰,并不是對所有計算機視覺任務都有效。例如,對象檢測深度學習模型對圖像大小非常敏感,當輸入分辨率降低時,其性能會迅速下降。
由上圖易知,圖像分類ML模型(橙色線)比目標檢測模型(藍色線)更容易降低分辨率。
3.MCUNetV2基于補丁的推理
為了解決卷積神經網絡的內存瓶頸問題,研究人員創建了一個名為MCUNetV2的深度學習體系結構,可以將其內存帶寬調整到微控制器的極限。MCUNetV2是在同一科研小組之前的成果基礎上開發的,該工作已被NeurIPS 2020大會接受并成功提交。
MCUNetV2背后的主要思想是“基于補丁的推理”,這是一種在不降低CNN準確性的情況下減少其內存占用的技術。MCUNetV2沒有將整個神經網絡層加載到內存中,而是在任何給定時間加載并計算該層的較小區域或“補丁”。然后,它逐塊迭代整個層并組合這些值,直到計算整個層的激活部分。
圖中左側是經典深度學習系統計算一整層的情形,而右側給出的是MCUNetV2一次計算一個補丁,從而減少DL推理的內存需求。
由于MCUNetV2一次只需要存儲一片神經元,因此它在不降低模型分辨率或參數的情況下大幅降低內存峰值。研究人員的實驗表明,MCUNetV2可以將內存峰值降低至八分之一。
MCUNetV2能夠將深度學習模型的內存峰值降低至八分之一
基于補丁的推理在節省內存的同時也帶來了計算開銷的權衡問題。麻省理工學院(MIT)和IBM的研究人員發現,在不同的體系結構中整體網絡計算可能會增加10-17%,這顯然不適用于低功耗的微控制器。
為了克服這個限制,研究人員重新分配了神經網絡不同區塊的“感受野”(注:在CNN中,第n層特征圖中一個像素對應作為第1層的輸入圖像的像素數,即為該層的感受野“receptive field”,簡稱“RF”)。在CNN中,感受野是在任何時刻可被處理的圖像區域。更大的感受野需要更大的補丁和補丁之間的重疊。當然,這就會產生更高的計算開銷。通過縮小網絡初始塊的感受野并擴大后期的感受野,研究人員能夠將計算開銷減少三分之二以上。
感受野的重新分配有助于將MCUNetV2的計算開銷減少三分之二以上
最后,研究人員觀察到,MCUNetV2的調整在很大程度上取決于ML模型架構、應用程序以及目標設備的內存和存儲容量。為了避免手動調整每個設備和應用程序的深度學習模型,研究人員使用了“神經算法搜索”,這是一個使用機器學習自動優化神經網絡結構和推理調度的過程。
研究人員在幾個內存容量較小的微控制器模型上測試了不同應用中的深度學習架構。結果表明,MCUNetV2優于其他TinyML技術,能夠以較小的內存需求和較低的延遲實現在圖像分類和目標檢測方面達到更高的精度。
如下圖所示,研究人員正在使用實時人物檢測、視覺喚醒詞和人臉/口罩檢測等方式使用MCUNetV2。
譯者注:此處展示的僅是youtube.com網站上展示的使用MCUNetV2的視頻中的一幅截圖。
4.TinyML應用程序
在2018年一篇題為《機器學習程序的未來為何如此微小》(Why the Future of Machine Learning is Tiny)的文章中,軟件工程師皮特·沃登(Pete Warden)認為,MCU上的機器學習極其重要。沃登寫道:“我相信機器學習可以在小型、低功耗芯片上運行,這種結合將解決我們目前無法解決的大量問題。”
由于傳感器和CPU的進步,我們從世界各地獲取數據的能力大大增強。但我們通過機器學習模型處理和使用這些數據的能力卻受到網絡連接和云服務器訪問的限制。正如沃登所說,處理器和傳感器比藍牙和WiFi等無線電發射機更節能。
沃登寫道:“移動數據的物理過程似乎需要大量的能量。一次操作所需的能量與發送比特的距離成正比似乎是一條規則。CPU和傳感器發送僅需要幾個毫米發送比特數且價格便宜,而無線電發送的代價則需要幾米甚至更大距離才發送幾比特數據,而且價格昂貴……很明顯,一個有巨大潛力的市場正等待著用正確的技術來開辟。我們需要一種能在廉價微控制器上工作的設備,它使用的能源非常少,依賴于計算而不是無線電,它能把我們所有浪費的傳感器數據變成有用的數據。這就是機器學習,特別是深度學習將要填補的空白。”
由于MCUNetV2和TinyML在其他方面也取得了進步,沃登的預測很快會變成現實。在未來的幾年里,我們可以期待TinyML能夠進入到家庭、辦公室、醫院、工廠、農場、道路、橋梁等的數十億微控制器中,從而有望實現以前根本不可能實現的應用。
原文鏈接:https://thenextweb.com/news/tinyml-deep-learning-microcontrollers-syndication
譯者介紹
朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。早期專注各種微軟技術(編著成ASP.NET AJX、Cocos 2d-X相關三本技術圖書),近十多年投身于開源世界(熟悉流行全棧Web開發技術),了解基于OneNet/AliOS+Arduino/ESP32/樹莓派等物聯網開發技術與Scala+Hadoop+Spark+Flink等大數據開發技術。