如何把機器學習這隻“大象”,放進MCU的“冰箱”?
人工智慧(AI)在很多人眼裡,是有如科幻片的存在,與普通人的生活之間隔著很遠的距離。但是這樣的局面正在被改變,在未來5-10年中,AI將會以超乎我們想像的速度快速滲透到我們生活當中。為什麼這麼講?一起跟著我們往下看。
人工智慧物聯網的基本模式
之所以我們與AI之間會有“距離感”,主要是因為以前玩AI是一件比較奢侈的事。這種“奢侈”主要展現在實現AI所依賴的機器學習(ML),在其訓練和推理的過程中對算力有非常高的要求。為了因應這樣的挑戰,透過雲端計算集中算力做資料處理,也就成為了實現機器學習的一個經典方法。
但是到了物聯網時代,這樣的模式受到了挑戰,集中式雲端計算頻寬和儲存資源消耗大、即時資料傳輸耗電量多、資料在終端和雲端之間傳輸延遲長、資料傳輸和雲端集中儲存過程中安全風險大……這些劣勢讓人們認識到單純的端計算不是一招打天下的萬能藥。
因此,與雲端計算互補的邊緣計算,越來越受到大家的重視。依照邊緣計算的定義,將大部分計算任務放在邊緣設備上直接進行處理,而只在必要的時候將一些經過預處理的資料傳輸至雲端進行“精加工”,這樣既能提升邊緣端即時回應的速度和智慧化的水準,又能為網路傳輸通路和雲端資料中心降低負載,因此這樣的混合計算模式顯然可以完美地解決傳統雲端計算的痛點。
這種計算架構的變遷,也對機器學習的模式產生了影響,使其從以計算為中心的模式向以資料為中心的模式轉變。這兩種模式中,前者是將機器學習的訓練和推理都放在雲端資料中心中完成,而後者則是由雲端完成模型的訓練,而將推理放在邊緣設備上完成,這也就形成了人工智慧物聯網(AIoT)架構的基本形式。
向MCU拓展機器學習的疆界
顯而易見,邊緣計算大幅拓展機器學習的疆界,使其從資料中心的機房走向了更多樣性的邊緣網路智慧。但對於物聯網應用來講,這似乎還不夠。因為在邊緣設備上進行推理,仍然需要相對強大的算力,這通常需要包含ML輔助處理器在內較為複雜的異構微處理器來實現加速,如此的配置在嵌入式領域已經算是很“高端”的了。僅此一條,就會將不少對於功耗、成本、即時性敏感度高的應用擋在機器學習的門外。
因此,機器學習想要繼續開疆闢土,一個主攻方向就是要讓資源更簡單、算力更有限的微控制器(MCU)也能夠跑得了、玩得起機器學習。根據IC Insights的研究資料顯示,2018年全球MCU的出貨量為281億顆,到2023年將這個數字將增長到382億顆,而全球的MCU存量將數以千億計,誰要是能夠讓如此量級的設備成功應用在機器學習上,其前途和錢途都將是不可限量的!
但對於任何一個夢想來說,現實往往顯得比較“骨感”。將機器學習部署到MCU運行,就好像是要將一隻大象塞進冰箱,而這個答案絕對不是一句腦筋急轉彎的玩笑話,而是需要在技術上,從兩個維度中去仔細考量。
為機器學習模型瘦身
第一個維度,就是要考慮如何為ML模型這隻“大象”進行“瘦身”,也就是說要發展出相對應的技術,能夠在微控制器上部署、運行“小型化”的機器學習推理模型。這種瘦身後的模型,需要滿足的條件包括:
- 運行模型的終端功耗一般在mW級別,甚至更低;
- 佔用的記憶體一般要在幾百kB以下;
- 推理時間為ms級別,一般需要在1s內完成。
為了實現這樣的目標,TinyML技術應運而生。故名思議,這就是一種能夠讓ML模型“變小”的技術。與上文提到的AIoT機器學習的基本模式一樣,TinyML也是要在雲端收集資料並進行訓練,而不同之處則在於訓練後模型的優化和部署,為了因應MCU有限的計算資源,TinyML必須對模型進行“深度壓縮”,通過模型的蒸餾(Distillation)、量化(Quantization)、編碼(Encoding)、編譯(Compilation)一系列操作後才能部署到邊緣終端上。
圖1:嵌入式設備中部署TinyML的示意圖(圖源:網路)
其中,一些關鍵的技術包括:
- 蒸餾:是指在訓練後通過剪枝(pruning)和知識蒸餾的技術手段,對模型進行更改,以創建更緊湊的表示形式。
- 量化:在模型蒸餾後,通過量化實現以更少位數的資料類型近似表示32位元浮點型資料,在可接受的精度損失範圍之內減少模型尺寸大小、記憶體消耗並加快模型推理速度。
- 編碼:就是通過更有效的編碼方式(如霍夫曼編碼)來儲存資料,進一步減小模型規模。
- 編譯:通過以上方式壓縮好的模型,將被編譯為可被大多MCU使用的C或C++代碼,通過設備上的羽量級網路編譯器(如TF Lite和TF Lite Micro)運行。
在過去的兩年中,我們已經明顯感覺到TinyML技術在升溫,廠商在該領域的投入也持續增加。根據Silent Intelligence的預測,未來5年中,TinyML將創造超過700億美元的經濟價值,並且保持超過27.3%的複合年均增長率。
打造機器學習MCU新物種
把“大象裝進冰箱“,除了要在“大象”(也就是ML模型)身上下功夫,另一個維度上的努力就是要改造“冰箱”,也就是對我們熟悉的MCU進行優化和改造,令其能夠符合運行ML的需要。
譬如為了滿足在IoT邊緣設備中實現複雜機器學習功能的需要,Maxim Integrated就推出一款專為低功耗設計的ML微控制器MAX78000。該元件內置Arm Cortex-M4F處理器(100MHz)和32位元 RISC-V輔助處理器(60MHz),以及支援64層深度網路的卷積神經網路加速器,可在電池供電應用中執行AI推理,而僅消耗微焦耳能量。與傳統的軟體方案相比,這種基於硬體加速的方案使得複雜的AI推理耗能降至前者的百分之一,而推理速度則可以快100倍。
預計具有類似ML特性的新物種,將成為未來各家MCU大廠產品藍圖中的重要分支。
圖2:Maxim Integrated推出的低功耗ML微控制器MAX78000(圖源:Maxim)
本文小結
綜上所述,與微處理器或者x86等嵌入式計算架構相比,MCU具有低功耗、低成本、開發週期短、上市快、高即時性、市場量體大等特點,這些特性如果能夠和高效能的機器學習結合在一起,無疑將可以創造巨大的想像空間
在促成兩者“結合”的過程中,如果能夠為開發者提供支援機器學習功能的MCU“新物種”,並能夠提供一個完整的開發工具鏈,讓ML模型的優化和部署更簡便,那麼把機器學習這隻“大象”放進MCU的“冰箱”,將成為信手拈來的輕鬆事。
更重要的是,這樣的趨勢剛剛萌芽,你完全有機會成為一隻early bird,在這個全新的領域中自由的飛翔。
