更大的模型并不總是更好的模型,微型機器學習將是未來的方向
在NASA的推動下,電子產品的小型化成為一個完整的消費品行業。現在我們可以把貝多芬的全部作品放在翻領針上用耳機聽。
--天體物理學家兼科學評論員尼爾·德格拉斯·泰森(Neil deGrasse Tyson)
超低功耗嵌入式設備的普遍存在,再加上諸如針對微控制器的TensorFlow Lite的嵌入式機器學習框架的引入,將使AI驅動的IoT設備大規模普及。
--哈佛大學副教授Vijay Janapa Reddi

嵌入式設備的微型機器學習(TinyML)
本文的目的是向讀者介紹小型機器學習的概念及其未來潛力。在本系列的后續文章中,將對特定的應用程序,實現和教程進行深入討論。
介紹
在過去的十年中,我們見證了由于處理器速度的提高和大數據的出現,機器學習算法的規模呈指數增長。最初,模型足夠小,可以使用中央處理器(CPU)中的一個或多個內核在本地計算機上運行。
此后不久,由于引入了基于云的服務(例如SaaS平臺(例如Google Colaboratory)和IaaS(例如Amazon EC2實例)),使用圖形處理單元(GPU)的計算對于處理更大的數據集變得十分必要,并且變得更加容易獲得。此時,算法仍可以在單臺計算機上運行。
最近,我們已經看到了專用的專用集成電路(ASIC)張量處理單元(TPU)的開發,該模塊可以封裝約8個GPU的功能。這些設備已經增強了在多個系統之間分布學習的能力,以嘗試發展越來越大的模型。
最近,隨著GPT-3算法的發布(2020年5月發布)而達到了頂峰,該算法的網絡體系結構包含了驚人的1750億個神經元,是人腦中神經元數量的兩倍(約850億)。這是有史以來創建的第二大神經網絡Turing-NLG(于2020年2月發布,包含約175億個參數)的神經元數量的10倍以上。一些估計稱,該模型的培訓成本約為1000萬美元,并使用了約3 GWh的電力(大約三個小時的一小時核電站的輸出)。
盡管GPT-3和Turing-NLG的成就值得稱贊,但自然而然地,這引起了業內一些人士對AI行業日益增長的碳足跡的批評。但是,它也有助于激發AI界對更節能計算的興趣。這樣的想法,例如更高效的算法,數據表示和計算,一直是看似無關的領域的關注重點:微型機器學習。
微型機器學習(tinyML)是機器學習與嵌入式物聯網(IoT)設備的交叉點。該領域是一門新興的工程學科,具有革新許多行業的潛力。
tinyML的主要行業受益者是邊緣計算和節能計算。TinyML源自物聯網(IoT)的概念。物聯網的傳統思想是將數據從本地設備發送到云進行處理。一些人對此概念提出了某些擔憂:隱私、延遲、存儲和能源效率等等。
能源效率。(通過有線或無線方式)傳輸數據非常耗能,比機載計算(具體而言,乘累加單位)要高大約一個數量級。開發可以執行自己的數據處理的物聯網系統是最節能的方法。人工智能的先驅們已經討論了"以數據為中心"的計算思想(與云模型的"以計算為中心"相對),現在我們開始看到它正在發揮作用。
隱私。傳輸數據可能會侵犯隱私。此類數據可能被惡意行為者攔截,并且當存儲在單個位置(例如云)中時,其固有的安全性降低。通過將數據主要保留在設備上并最大程度地減少通信,這可以提高安全性和隱私性。
存儲。對于許多物聯網設備而言,它們獲取的數據毫無用處。想象一下一個安全攝像機每天24小時記錄著建筑物的入口。在一天的大部分時間里,相機鏡頭沒有任何用處,因為什么也沒發生。通過擁有僅在必要時才激活的更智能的系統,就需要較低的存儲容量,并減少了傳輸到云所需的數據量。
潛伏。對于標準IoT設備(例如Amazon Alexa),這些設備將數據傳輸到云中進行處理,然后根據算法的輸出返回響應。從這個意義上講,該設備只是通向云模型的便捷網關,就像您自己和亞馬遜服務器之間的信鴿。該設備非常笨拙,完全取決于互聯網的速度才能產生結果。如果您的網速較慢,Amazon Alexa也會變慢。對于具有機載自動語音識別功能的智能IoT設備,由于減少了對外部通信的依賴(如果不是這樣),因此可以減少延遲。
這些問題導致了邊緣計算的發展,即在邊緣設備(位于云"邊緣"的設備)上執行處理活動的想法。這些設備在內存,計算和功能方面都受到資源的高度限制,從而導致了更高效的算法,數據結構和計算方法的發展。
此類改進也適用于較大的模型,這可能導致機器學習模型的效率提高幾個數量級,而不會影響模型的準確性。
例如,Microsoft開發的算法可以小到2 KB,但比典型的40 MB kNN算法或4 MB神經網絡具有更好的性能。這個結果聽起來可能并不重要,但是在尺寸的1/10萬分之一的模型上,相同的精度令人印象深刻。如此小的模型可以在具有2 KB RAM的Arduino Uno上運行,總之,你現在可以在5美元的微控制器上構建這樣的機器學習模型。
我們正處于一個有趣的十字路口,機器學習在兩個計算范式之間分叉:以計算為中心的計算和以數據為中心的計算。在以計算為中心的范例中,數據是通過數據中心中的實例進行存儲和分析的,而在以數據為中心的范例中,處理是在數據的原始位置進行的。盡管我們似乎正在迅速邁向以計算為中心的范例的上限,但是以數據為中心的范例的工作才剛剛開始。
物聯網設備和嵌入式機器學習模型在現代世界中變得越來越普遍(到2020年底,預計將有200億以上的活動設備)。其中許多你甚至可能都沒有注意到。智能門鈴、智能恒溫器、智能手機,只要你說幾句話,甚至只是拿起電話,都可以"喚醒"。本文的其余部分將更深入地關注tinyML的工作方式以及當前和將來的應用程序。

云的層次結構
TinyML的例子
以前,復雜的電路是設備執行各種動作所必需的。現在,機器學習使將這種硬件"智能"抽象為軟件變得越來越可能,從而使嵌入式設備變得更加簡單,輕巧和靈活。
嵌入式設備的機器學習所面臨的挑戰是巨大的,但是在這一領域已經取得了巨大的進步。在微控制器上部署神經網絡的關鍵挑戰是低內存占用,有限的功率和有限的計算。
TinyML最明顯的例子也許是在智能手機中。這些設備會永久地積極聆聽"喚醒詞"
例如Android智能手機的" Hey Google"或iPhone的" Hey Siri"。通過智能手機的主中央處理器(CPU)運行這些活動,現代iPhone的主中央處理器(CPU)為1.85 GHz,將在短短幾個小時內耗盡電池。對于大多數人每天最多使用幾次的這種程度的降級是不可接受的。
為了解決這個問題,開發人員創建了專用的低功耗硬件,該硬件可以用小電池(例如,環形CR2032"硬幣"電池)供電。這些功能使電路即使在CPU未運行時(基本上在屏幕不亮時)也保持活動狀態。
這些電路消耗的功率僅為1 mW,使用標準CR2032電池可供電長達一年。
看起來好像不對,但這很重要。能量是許多電子設備的限制因素。任何需要主電源的設備都限于帶有布線的位置,當同一位置有十幾個設備時,這些位置很快就會變得不堪重負。市電也效率低下且價格昂貴。將電源電壓(在美國大約為120 V)轉換為典型的電路電壓范圍(通常約為5 V)會浪費大量能量。擁有筆記本電腦充電器的任何人在拔出充電器時都可能知道這一點。充電器內部變壓器產生的熱量在電壓轉換過程中被浪費掉了能量。
即使是帶電池的設備,電池壽命也有限,因此需要頻繁對接。許多消費類設備的設計使電池可持續使用一個工作日。TinyML設備可以使用硬幣大小的電池繼續運行一年,這意味著它們可以放置在偏遠的環境中,僅在必要時進行通信以節省能源。
喚醒詞并不是我們看到的無縫嵌入在智能手機中的唯一TinyML。加速度計數據用于確定是否有人剛拿起電話,這會喚醒CPU并打開屏幕。
顯然,這些并不是TinyML的唯一可能應用。實際上,TinyML為企業和業余愛好者提供了許多令人興奮的機會,以生產更智能的IoT設備。在當今世界,數據變得越來越重要的情況下,將機器學習資源分配到偏遠地區受內存限制的設備的能力可能會給農業,天氣預報或地震等數據密集型行業帶來巨大好處。
毫無疑問,賦予邊緣設備執行數據驅動的處理能力的能力將為工業過程帶來范式轉變。舉例來說,能夠監測農作物并在檢測到諸如土壤濕度,特定氣體(例如蘋果成熟時會散發出乙烷)等特征或特定大氣條件(例如大風,低溫或高濕度),將大大促進作物生長并因此提高作物產量。
作為另一個示例,智能門鈴可能裝有攝像頭,該攝像頭可以使用面部識別來確定誰在場。這可以用于安全目的,甚至可以用于當有人在場時將門鈴的攝像頭饋送到房屋中的電視,以便居民知道誰在門口。
目前,tinyML的兩個主要重點領域是:
- 關鍵字發現。大多數人已經熟悉此應用程序。" Hey Siri"和" Hey Google"是關鍵字的示例(通常與" hotword"或" wake word"同義使用)。這樣的設備連續收聽來自麥克風的音頻輸入,并且被訓練為僅響應特定的聲音序列,這些特定的聲音序列與學習的關鍵字相對應。這些設備比自動語音識別(ASR)應用程序更簡單,并且相應地使用了更少的資源。某些設備(例如Google智能手機)利用來提供揚聲器驗證以確保安全性。
- 視覺喚醒詞。喚醒詞有一個基于圖像的類似物,稱為視覺喚醒詞。將它們視為圖像的二進制分類,以表示存在或不存在。例如,可以設計智能照明系統,使得其在檢測到人的存在時啟動,并在他們離開時關閉。同樣,當存在特定的動物時,野生動物攝影師可以使用它來拍照,而當他們發現有人時,可以使用安全攝像機拍攝照片。
下面顯示了TinyML當前機器學習用例的更廣泛概述。

TinyML的機器學習用例
TinyML如何工作
TinyML算法的工作方式與傳統機器學習模型幾乎相同。通常,通常在用戶計算機或云中對模型進行訓練。后期訓練是真正的tinyML工作開始的地方,在此過程中通常稱為深度壓縮。

深度學習模型壓縮流程圖
模型蒸餾
訓練后,然后以創建具有更緊湊表示形式的模型的方式更改模型。修剪和知識蒸餾是用于此目的的兩種此類技術。
知識提煉的基礎思想是,較大的網絡內部具有稀疏性或冗余性。雖然大型網絡具有較高的表示能力,但如果網絡容量未達到飽和,則可以在具有較低表示能力的較小網絡(即較少的神經元)中進行表示。Hinton等,2015將教師模型中嵌入的信息稱為"黑暗知識",轉移給學生模型。
下圖說明了知識提煉的過程。

深度壓縮過程圖。在此圖中,"老師"是經過訓練的卷積神經網絡模型。教師的任務是將其"知識"轉移到參數較少的較小卷積網絡模型中,即"學生"。此過程稱為知識提取,用于將相同的知識包含在較小的網絡中,從而提供了一種壓縮網絡的方式,以便可以將其用于更多受內存限制的設備上。
在此圖中,"老師"是訓練有素的神經網絡模型。教師的任務是將其"知識"轉移到參數較少的較小的網絡模型中,即"學生"。此過程用于將相同的知識包含在較小的網絡中,從而提供一種壓縮知識表示的方式,從而壓縮神經網絡的大小,以便可以將其用于更多受內存限制的設備。
同樣,修剪可以幫助使模型的表示更加緊湊。廣義上講,修剪嘗試刪除對輸出預測幾乎沒有用的神經元。這通常與較小的神經權重相關聯,而由于在推理過程中它們的重要性較高,因此會保留較大的權重。然后在修剪后的體系結構上對網絡進行再培訓,以微調輸出。

用于提取模型的知識表示形式的修剪
量化
蒸餾后,然后將模型量化后訓練成與嵌入式設備的體系結構兼容的格式。
為什么需要量化?想象一下使用ATmega328P微控制器的Arduino Uno,該微控制器使用8位算術。要在Uno上運行模型,理想情況下,模型權重必須存儲為8位整數值(而許多臺式機和筆記本電腦使用32位或64位浮點表示法)。通過對模型進行量化,權重的存儲大小將減少4倍(對于從32位到8位值的量化),準確性通常受到的影響可以忽略不計(通常約為1-3%)。

8位編碼期間的量化誤差插圖(然后用于重建32位浮點數)
由于某些信息可能會在量化過程中丟失(例如,在基于整數的平臺上,浮點表示形式的值為3.42可能會被截斷為3)。為了解決這個問題,還提出了量化感知(QA)培訓作為替代方案。QA訓練從本質上將訓練期間的網絡限制為僅使用量化設備上可用的值。
霍夫曼編碼
編碼是一個可選步驟,有時會通過最大有效地存儲數據(通常通過著名的來進一步減小模型大小。
匯編
對模型進行量化和編碼后,將其轉換為可由某種形式的輕型神經網絡解釋器解釋的格式,其中最受歡迎的可能是(〜500 KB大小)和(〜大小為20 KB)。然后將模型編譯為C或C ++代碼(大多數微控制器使用的語言以有效利用內存),并由解釋器在設備上運行。

TInyML應用程序的工作流程
tinyML的大多數技能來自處理微控制器的復雜世界。TF Lite和TF Lite Micro非常小,因為已刪除了所有不必要的功能。不幸的是,這包括有用的功能,例如調試和可視化。這意味著,如果在部署過程中出現錯誤,可能很難分辨正在發生什么。
另外,盡管模型必須存儲在設備上,但模型還必須能夠執行推理。這意味著微控制器必須具有足夠大的內存以使其能夠運行(1)其操作系統和庫,(2)神經網絡解釋器(例如TF Lite),(3)存儲的神經權重和神經體系結構,以及(4)推理過程中的中間結果。因此,tinyML研究論文中經常引用量化算法的峰值內存使用量,以及內存使用量,乘法累加單位(MAC)的數量,準確性等。
為什么不在設備上訓練?
在設備上進行訓練會帶來更多的并發癥。由于數值精度降低,要保證足夠的網絡訓練所需的精度水平變得極為困難。標準臺式計算機上的自動區分方法對于機器精度大約是準確的。以10 ^ -16的精度計算導數是令人難以置信的,但是對8位值使用自動微分將導致較差的結果。在反向傳播過程中,這些導數會復合并最終用于更新神經參數。在如此低的數值精度下,這種模型的精度可能很差。
話雖如此,神經網絡已經使用16位和8位浮點數進行了訓練。
Suyog Gupta及其同事在2015年發表的第一篇有關降低深度學習中的數值精度的論文是""。本文的結果很有趣,表明32位浮點表示形式可以減少為16位定點表示形式,而精度幾乎沒有降低。但是,這是使用的唯一情況, 因為平均而言,它會產生無偏結果。
在2018年,Naigang Wang及其同事在其論文"使用8位浮點數"中使用8位浮點數訓練了神經網絡。由于需要在反向傳播期間保持梯度計算的保真度(在使用自動微分時能夠實現機器精度),因此使用8位數字而不是推理來訓練神經網絡要實現的挑戰明顯更大。
計算效率如何?
還可以對模型進行定制,以使它們的計算效率更高。在移動設備(例如MobileNetV1和MobileNetV2)上廣泛部署的模型體系結構就是很好的例子。這些本質上是卷積神經網絡,已經重塑了卷積運算以使其具有更高的計算效率。這種更有效的卷積形式稱為深度可分離卷積。還可以使用和來針對延遲優化。
下一次AI革命
在資源受限的設備上運行機器學習模型的能力為許多新的可能性打開了大門。發展可能有助于使標準機器學習更加節能,這將有助于消除對數據科學對環境影響的擔憂。此外,tinyML允許嵌入式設備具有基于數據驅動算法的新智能,該智能可用于從預防性維護到檢測森林中的鳥聲的任何事物。
盡管某些機器學習從業者無疑將繼續擴大模型的規模,但一種新的趨勢正在朝著內存,計算和能源效率更高的機器學習算法發展。TinyML仍處于起步階段,有關該主題的專家很少。這個空間正在快速增長,并將在未來幾年內成為人工智能在工業中的新的重要應用。