譯者| 朱先忠
審校| 梁策孫淑娟
深度學習模式最初的成功歸功於擁有大量記憶體和GPU叢集的大型伺服器。深度學習的前景催生了一個為深度神經網路提供雲端運算服務的產業。因此,在幾乎無限的雲端資源上運行的大型神經網路變得非常流行,這對於具有充足預算的科技公司尤其如此。
但同時,近年來也出現了另一種相反的趨勢,為邊緣設備創建機器學習模型。這些被稱為微型機器學習(TinyML)的模型適用於記憶體和處理能力有限、網路連線不存在或有限的裝置。
IBM和麻省理工學院(MIT)共同進行的一項最新研究工作解決了卷積神經網路(CNN)的峰值記憶體瓶頸問題。這是一種深度學習體系結構,對電腦視覺應用尤其重要。在NeurIPS 2021會議上提交的一篇論文中詳細介紹了稱為一種McUnETV2的模型,該模型能夠在低內存和低功耗微控制器上運行卷積神經網路(CNN)。
#雖然雲端深度學習非常成功,但並不適用於所有情況。事實上,許多應用程式往往需要在硬體設備上直接完成推理任務。例如,在一些如無人機救援這樣的任務環境中,網路連線是無法保證的。在醫療保健等其他領域,隱私要求和法規約束等也使得將資料傳送到雲端進行處理變得非常困難。對於需要即時機器語言推斷的應用程式來說,往返雲端運算所造成的延遲更是令人望而卻步。
上述所有必需滿足的條件使得機器學習設備在科學和商業上都具有吸引力。例如,iPhone手機現在就有不少運行臉部辨識和語音辨識的應用程序,安卓手機也可以直接運行翻譯軟體。此外,Apple Watch已經可以使用機器學習演算法來偵測運動和ECG模式(註:ECG即心電圖一詞electrocardiogram的縮寫,又稱EKG,是一種測試實驗,用來記錄引發心跳的電訊號序列的時間節點和強度。透過分析ECG影像,醫師可以更好地診斷心率是否正常和心臟功能是否有問題)。
上述這些設備上的ML模型在一定程度上是由支援神經網路緊湊、運算和儲存效率更高的技術進步而實現的。同時由於硬體技術的進步,這樣的ML模型在行動設定上的實作也成為可能。現在,我們的智慧型手機和穿戴式裝置比30年前的高效能伺服器擁有更多的運算能力,有些甚至配置專門的協處理器來實現機器語言推理。
TinyML將邊緣AI向前推進了一步,使得在微控制器(MCU)上運行深度學習模型成為可能,儘管微控制器比我們口袋里和手腕上攜帶的小型計算機還要受限於資源。
另一方面,微控制器價格低廉,平均售價不到0.50美元,它們幾乎無所不在,可以嵌入從消費產業到工業設備的各個方面。同時,它們沒有通用運算設備中的資源,而且大多數都沒有作業系統。微控制器的CPU很小,只有幾百KB的低功耗記憶體(SRAM)和幾兆位元組的儲存空間,而且沒有任何網路設備。它們大多沒有主電源,多年來都是必須使用羈扣電池。因此,在MCU上安裝深度學習模型可能為許多應用開闢新的道路。
#卷積神經網路(CNN)的架構
為了將深度神經網路縮小到適合小型記憶體運算設備的大小,人們已經進行了多次努力。然而,這些努力大多集中在減少深度學習模型中的參數數量。例如,「剪枝」便是一種流行的最佳化演算法,它透過刪除模型輸出中不重要的參數來縮小神經網路。
剪枝方法的問題在於它們無法解決神經網路的記憶體瓶頸。深度學習庫的標準實作需要將整個網路層和激活層映射載入到記憶體中。不幸的是,經典的最佳化方法不會對神經網路的早期計算層做出任何重大改變,尤其是在卷積神經網路中。
這會導致網路不同層的大小不平衡,並導致「記憶體峰值」問題:即使網路在修剪後變得更輕量級,運行它的裝置也必須擁有與最大層相同的記憶體。例如,在流行的TinyML模型MobileNetV2中,早期層計算達到的記憶體峰值約為1.4兆位元組,而後期層的記憶體佔用非常小。要運行該模型,設備將需要與模型峰值相同的記憶體。由於大多數MCU的記憶體不超過幾百KB,所以它們無法運行MobileNetV2的現成版本。
MobileNetV2是一種針對邊緣裝置進行最佳化的神經網路,但它的記憶體峰值約為1.4兆位元組,這使得許多微控制器無法存取它。
另一種最佳化神經網路的方法是減少模型的輸入大小。較小的輸入影像需要較小的CNN即可執行預測任務。然而,減少輸入大小本身就存在挑戰,並不是對所有電腦視覺任務都有效。例如,物件偵測深度學習模型對影像大小非常敏感,當輸入解析度降低時,其效能會迅速下降。
由上圖易知,影像分類ML模型(橘色線)比目標偵測模型(藍色線)更容易降低解析度。
為了解決卷積神經網路的記憶體瓶頸問題,研究人員創建了一個名為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的影片中的一幅截圖。
在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等大數據開發技術。
以上是微型機器學習可望將深度學習嵌入微處理器的詳細內容。更多資訊請關注PHP中文網其他相關文章!