就在幾年前,人們普遍認為,機器學習(ML)甚至深度學習(DL)只能通過由網(wǎng)關、邊緣服務器或數(shù)據(jù)中心執(zhí)行的邊緣訓練和推理,在高端硬件上完成。這種想法在當時不無道理,因為在云端和邊緣之間分配計算資源的趨勢尚處于早期發(fā)展階段。但如今,得益于業(yè)界和學術界的艱苦研發(fā)和不懈努力,情況已然發(fā)生了翻天覆地的變化。
處理器不必提供每秒數(shù)萬億次操作(TOPS),也能執(zhí)行機器學習(ML)。越來越多的用例證明,只要使用最新的微控制器(部分帶有嵌入式 ML 加速器),就能在邊緣設備上開展機器學習。
只需極低的成本和極低的功耗,這些設備就能出色地完成 ML,僅在絕對必要時才連接到云。簡而言之,內(nèi)置 ML 加速器的微控制器代表著物聯(lián)網(wǎng)發(fā)展的下一階段:在生產(chǎn)數(shù)據(jù)的源頭,例如麥克風、攝像頭和監(jiān)控其他環(huán)境條件的傳感器中引入智能計算,并使物聯(lián)網(wǎng)應用受益。
邊緣有多深?
目前普遍認為邊緣是物聯(lián)網(wǎng)網(wǎng)絡的最遠點,但通常指先進的網(wǎng)關或邊緣服務器。不過,這并不是邊緣的盡頭。真正的盡頭是鄰近用戶的傳感器。所以,合乎邏輯的做法是將盡可能多的分析能力安排在鄰近用戶的位置,而這也正是微處理器所擅長的。
不同寬度乘數(shù)下的多個 MobileNet V1 模型。圖中可見,寬度乘數(shù)對參數(shù)的數(shù)量、計算結果和精度都有顯著影響。但是,如果只是將寬度乘數(shù)從 1.0 改為 0.75,TOP-1 精度并無太大變化,參數(shù)的數(shù)量和算力需求卻明顯不同。
可以說,單板計算機也能用于邊緣處理,因為它們具有出色的性能,其集群可媲美一臺小型超級計算機。但問題是尺寸依然過大,而且對于大規(guī)模應用所需的成百上千次部署而言,成本過于高昂。它們還需要連接外部直流電源,在某些情況下可能超出可用范圍;相比之下,MCU 的功耗只有幾毫瓦,并且可以使用紐扣電池或一些太陽能電池來供電。
毫無意外,用于在邊緣執(zhí)行 ML 的微控制器成為了十分熱門的研發(fā)領域。甚至還有專有名稱——TinyML。TinyML 的目標就是允許在資源受限的小型低功耗設備(尤其是微控制器),而不是在更大的平臺或云端上執(zhí)行模型推理,甚至最終能實現(xiàn)模型訓練。這就需要縮小神經(jīng)網(wǎng)絡模型的尺寸,以容納這些設備中相對較少的算力、存儲空間和帶寬資源,同時不會嚴重降低功能性和精度。
這些方案對資源進行了優(yōu)化,使設備可以采集充足的傳感器數(shù)據(jù)并發(fā)揮恰當作用,同時微調(diào)精度并降低資源要求。因此,雖然數(shù)據(jù)可能仍被發(fā)送到云端(或者可能是先發(fā)送到邊緣網(wǎng)關,然后再發(fā)送到云端),但數(shù)量少得多,因為相當大一部分的分析已經(jīng)完成。
現(xiàn)實中,一個十分常見的 TinyML 用例就是基于攝像頭的對象檢測系統(tǒng),盡管能夠捕獲高分辨率圖像,但由于存儲空間有限,只能降低圖像分辨率??墒牵绻麛z像頭內(nèi)置了數(shù)據(jù)分析功能,則只會捕獲所需的對象而非整個場景,而且因為相關的圖像區(qū)域更小,能保留高分辨率圖像。這種功能通常只見于更大型、性能更強大的設備,但是 TinyML 技術使得微控制器也能實現(xiàn)。
小巧卻不簡單!
盡管 TinyML 還只是相對較新的一種范式,但已經(jīng)表現(xiàn)出了不容小覷的推理能力(即便使用的是相對溫和的微控制器)和訓練(在性能更強大的微控制器上)成效,且精度損耗控制在最低限度。最近的示例包括:語音和面部識別、語音命令和自然語言處理,甚至同時運行多個復雜的視覺算法。
實際說來,這意味著一臺裝載 500MHz Arm Cortex-M7 內(nèi)核的微控制器,花費不超過 2 美元,內(nèi)存容量從 28 Kb 到 128 KB 不等,卻能提供強大的性能,使傳感器實現(xiàn)真正智能。例如,恩智浦的 i.MX RT 跨界 MCU 就使用運行 TensorFlow Lite 運行時引擎的小型 ML 模型實現(xiàn)了此種性能。以基本對象識別為例,通常在 200ms 內(nèi)即可完成,而且精度接近 95%。
即使在這個價格和性能水平上,這些微處理器配備了多個安全功能(包括 AES-128),并支持多個外部存儲器類型、以太網(wǎng)、USB 和 SPI,同時還包含或支持多種類型的傳感器以及藍牙、Wi-Fi、SPDIF 和 I2C 音頻接口。價格稍高一些的設備則是通常搭載 1GHz Arm Cortex-M7、400MHz Cortex-M4、2 Mbytes RAM 和圖形加速。采用 3.3 VDC 電源供電時,功耗一般遠低于單板計算機。
TOPS 有意義嗎?
會使用單一指標來評判性能的不僅是消費者;設計者和市場營銷部門也一直如此,因為作為一項主要規(guī)格,它可以輕松地區(qū)分設備。一個經(jīng)典示例就是 CPU,多年來人們一直通過時鐘速率來評判性能;幸運的是,現(xiàn)在的設計者和消費者已不再如此。只用一個指標評定 CPU 性能就像是按照發(fā)動機的峰值轉速來評估汽車性能。盡管峰值轉速有一定參考意義,但幾乎無法體現(xiàn)發(fā)動機的強勁或汽車的駕駛性能,這些特性取決于許多其他因素。
遺憾的是,同樣的尷尬也發(fā)生在以每秒數(shù)十億次或上萬億次操作來界定的神經(jīng)網(wǎng)絡加速器(包括高性能 MPU 或微控制器中的加速器),原因一樣,簡單的數(shù)字好記。在實踐中,單獨的 GOPS 和 TOPS 只是相對無意義的指標,代表的是實驗室而非實際操作環(huán)境中的一次測量結果(毫無疑問是最好的結果)。例如,TOPS 沒有考慮內(nèi)存帶寬的限制、所需要的 CPU 開支、預處理和后處理以及其他因素。如果將所有這些和其他因素都一并考慮在內(nèi),例如在實際操作中應用于特定電路板時,系統(tǒng)級別的性能或許只能達到數(shù)據(jù)表上 TOPS 值的 50%或 60%。
所有這些數(shù)字都是硬件中的計算單元乘以對應的時鐘速率所得到的數(shù)值,而不是需要運行時數(shù)據(jù)已經(jīng)就緒的頻率。如果數(shù)據(jù)一直即時可用,也不存在功耗問題和內(nèi)存限制,并且算法能無縫映射到硬件,則這種統(tǒng)計方式更有參考價值。然而,現(xiàn)實中并沒有這樣理想的環(huán)境。
當應用于微控制器中的 ML 加速器時,該指標更沒有價值。這些小型設備的 GOPS 值通常在 1-3 之間,但仍然能夠提供許多 ML 應用中所需要的推理功能。這些設備也依賴專為低功耗 ML 應用而設計的 Arm Cortex 處理器。除了支持整數(shù)和浮點運算以及微控制器中的許多其他功能之外,TOPS 或其他任何單一指標明顯無法充分定義性能,無論是單獨使用還是在系統(tǒng)中都是如此。
邊緣計算的未來
隨著物聯(lián)網(wǎng)領域進一步發(fā)展,在邊緣執(zhí)行盡可能多的處理,逐漸出現(xiàn)一種需求,即在直接位于或附著于傳感器上的微控制器上執(zhí)行推理。也就是說,微處理器中應用處理器和神經(jīng)網(wǎng)絡加速器的發(fā)展速度十分迅猛,更完善的解決方案也層出不窮。總體趨勢是將更多以人工智能為中心的功能(例如神經(jīng)網(wǎng)絡處理)與應用處理器一起整合到微處理器中,同時避免功耗或尺寸顯著增加。
如今,可以先在功能更強大的 CPU 或 GPU 上訓練模型,然后在使用推理引擎(例如 TensorFlow Lite)的微控制器上實施,從而減小尺寸以滿足微控制器的資源要求??奢p松擴展,以適應更高的 ML 要求。相信不久之后,推理和訓練就能在這些設備上同時執(zhí)行,讓微控制器的競爭力直追更大、更昂貴的計算解決方案。