雖然雲端的機器學習已經取得了巨大的成功,但它並不適用於所有情況,許多應用還是需要在終端裝置上進行處理。
在一般人的認識中,所謂的人工智慧或深度學習往往意味著天量的計算能力,也就代表著需要擁有大量記憶體和GPU叢集的大型伺服器。所以擁有幾乎無限雲資源的科技巨頭在大型神經網路領域始終保持遙遙領先的位置,甚至還順勢催生了面向深度神經網路的整個雲計算服務產業。
但與此同時,最近幾年也出現了一種相反的趨勢,即為邊緣裝置建立機器學習模型的潮流愈加明顯。這些模型被統稱為微型機器學習(Tiny Machine Learning,TinyML),適用於記憶體和處理能力有限的裝置,而且對網際網路連線的依賴也並不十分強烈。
作為TinyML的最新代表性成果,IBM和麻省理工學院(MIT)的一項聯合工作解決了卷積神經網路(CNN)的峰值記憶體瓶頸,這種深度學習架構對計算機視覺(CV)應用尤為關鍵。在NeurIPS 2021會議上發表的一篇論文中詳細介紹了這個模型,它被稱為MCUNetV2,可以在低記憶體和低功耗的微控制器上執行CNN。
▍為什麼是TinyML?
雖然雲端的機器學習已經取得了巨大的成功,但它並不適用於所有情況,許多應用還是需要在終端裝置上進行處理。例如,在某些情況下,如無人機救援任務,網際網路連線是無法得到保證的。在其他一些領域,如醫療保健,隱私要求和法規使得將資料傳送到雲端進行處理非常困難。而且,對於需要實時機器學習處理的應用來說,往返雲端造成的延遲是令人望而卻步的。
以上這些背景使得終端裝置上的機器學習在技術上和商業上都具備了實施的可能。目前,你可以在日常生活中頻繁接觸到TinyML,最典型的就是智慧手機上的面部識別和語音識別、語言翻譯以及智慧手錶上的運動檢測和心電圖模式。
這些在裝置上的機器學習模型在一定程度上得益於使神經網路更緊湊、計算和儲存效率更高的技術進步。與此同時,硬體的進步也功不可沒,我們現在的智慧手機和可穿戴裝置比30年前的伺服器擁有更強的計算能力,有些甚至有專門用於機器學習處理的協處理器。
而TinyML將邊緣人工智慧的發展向前推進了一步,使得在微控制器(MCU)上執行深度學習模型成為可能,因為微控制器比我們的智慧手機和可穿戴裝置更受計算資源的限制。
以當下最典型的微控制器為例,其平均銷售價格僅為0.5美元以下,而且它們廣泛存在於消費級和工業裝置中。同時,它們只有一個小的CPU,僅限於幾百KB的低功耗記憶體(SRAM)和幾MB的儲存,並且沒有任何網路裝置。而且它們大多沒有主電源,必須靠電池和紐扣電池才能執行多年。更可憐的是,它們中的大多數都沒有作業系統。
但這就意味著,在微處理器上建立深度學習模型可以為許多應用開闢新的道路。
▍CNN的記憶體瓶頸
當然,在TinyML之前,人們也已經嘗試各種方法來將深度神經網路縮小到適用於小記憶體計算裝置的規模。然而,這些方案大多集中在減少深度學習模型中的引數數量。例如,“剪枝”(Pruning)一類流行的最佳化演算法是透過刪除模型輸出中不重要的引數來壓縮神經網路。
很顯然,這一類方案的問題是它們沒有解決神經網路的記憶體瓶頸。深度學習庫的標準實現需要將整個網路層和啟用圖載入到記憶體中。遺憾的是,傳統的最佳化方法並沒有對網路的早期層做出任何重大改變,尤其是在卷積神經網路中。
這就造成了網路不同層的大小不平衡,並導致了“記憶體峰值”問題——即使網路在刪減後變得更輕,但執行它的裝置必須有和最大層一樣多的記憶體。例如,在一個流行的TinyML模型MobileNetV2中,早期層塊的記憶體峰值達到1.4 MB左右,而後期層的記憶體佔用非常小。為了執行該模型,裝置將需要與模型的峰值一樣多的記憶體。由於大多數MCU的記憶體不超過幾百KB,導致它們無法執行現成的MobileNetV2版本。
另一種最佳化神經網路的方法是減少模型的輸入大小。一個較小的輸入影象需要一個較小的CNN來執行預測任務。然而,減少輸入規模又會帶來新的麻煩,而且並不是對於所有的計算機視覺任務來說都是有效的。例如,物體檢測深度學習模型對影象尺寸非常敏感,當輸入解析度降低時,其效能會迅速下降。
▍大有可為的MCUNetV2
為了解決卷積神經網路的記憶體瓶頸,研究人員建立了名為MCUNetV2的深度學習架構,它可以根據微控制器的限制調整其記憶體頻寬。
MCUNetV2背後的主要思想是“基於補丁的推理”,這種技術可以減少CNN的記憶體佔用同時又不會降低它們的準確性。MCUNetV2不是將整個神經網路層載入到記憶體中,而是在任何時候載入並計算該層的一個較小的區域(即“補丁”)。然後,它在整個層上逐片迭代,合併數值,直到計算出整個層的啟用值。
由於MCUNetV2一次只需要儲存一個神經元“補丁”,所以它在不降低模型的解析度或引數的情況下大大降低了記憶體峰值。研究人員的實驗表明,MCUNetV2可以將記憶體峰值降低7/8。
可以看出,基於補丁的推理所帶來的記憶體節省也會增加計算方面的開銷。來自麻省理工學院和IBM的研究人員發現,在不同的架構中,整個網路的計算量可能增加10%-17%,這就使其不適合低功率的微控制器了。
為了克服這一限制,研究人員重新分配了網路不同區塊的“感受野”(Receptive Field)。在CNN中,感受野是指在任何一個時刻被處理的影象的區域。較大的感受野需要較大的“補丁”和“補丁”之間的重疊,這就產生了較高的計算開銷。透過縮小網路初始區塊的感受野和擴大後期的感受野,研究人員能夠將計算開銷減少三分之二以上。
最後,研究人員觀察到,MCUNetV2的調整主要取決於ML模型架構、應用以及目標裝置的記憶體和儲存容量。為了避免為每個裝置和應用手動調整深度學習模型,研究人員使用了“神經演算法搜尋”,這是一個使用機器學習來自動最佳化神經網路架構和推理排程的過程。
研究人員在幾個具有小記憶體容量的微控制器模型上測試了不同應用中的深度學習架構。結果顯示,MCUNetV2優於其他TinyML技術,在影象分類和物體檢測方面達到了更高的精度,而且記憶體需求更小,延遲更低。
▍結語
在2018年一篇題為《為什麼機器學習的未來是微型化?》的文章中,軟體工程師Pete Warden認為,在微控制器上進行機器學習是極其重要的。“我相信機器學習可以在微小的、低功耗的晶片上執行,這種組合將解決大量我們目前無法解決的問題。”Warden寫道。
得益於感測器和CPU的進步,我們從全世界範圍內捕捉資料的能力已經大大增加。但我們透過機器學習模型來處理和使用這些資料的能力一直受到網路連線和雲伺服器訪問的限制。正如Warden所認為的,處理器和感測器比藍芽和WIFI等無線電發射器要節能得多。
“資料的傳輸需要大量能量,一般來說資料傳輸所消耗的能量與資料傳輸的的距離成正比。”Warden寫道,“CPU和感測器的資料傳輸距離是幾毫米,而且很便宜,無線電的資料傳輸距離是幾米或更遠,而且很昂貴。很明顯這有一個巨大的未開發的市場等待著用正確的技術去解鎖,而這種技術就是TinyML。”
由於MCUNetV2和其他TinyML的進展,Warden的預測正在迅速變成現實。在未來幾年,我們可以看到TinyML進入家庭、辦公室、醫院、工廠、農場、道路、橋樑等的數十億個微控制器,以實現以前不可能實現的應用。