從監控和訪問控制到智能工廠和預測性維護,圍繞機器學習(ML)模型構建的人工智能(AI)的部署正在工業物聯網邊緣處理應用中變得無處不在。隨著這種無處不在,人工智能解決方案的構建已經變得“民主化”——從數據科學家的專業學科轉變為嵌入式系統設計師應該理解的學科。
這種民主化的挑戰是,設計者不一定能夠很好地定義要解決的問題,并最恰當地捕捉和組織數據。與消費者解決方案不同,工業人工智能實施的數據集很少,這意味著它們通常必須從用戶的數據中從頭開始創建。
融入主流
人工智能已經成為主流,深度學習和機器學習(分別是DL和ML)是我們現在認為理所當然的許多應用的背后,例如自然語言處理、計算機視覺、預測性維護和數據挖掘。早期的AI實現是基于云或服務器的,在AI/ML應用和邊緣(端點)之間需要巨大的處理能力、存儲和高帶寬。雖然ChatGPT、DALL-E和Bard等生成式人工智能應用程序仍然需要這種設置,但近年來已經出現了邊緣處理人工智能,即在捕捉點實時處理數據。
邊緣處理極大地減少了對云的依賴,使整個系統/應用更快,需要更少的電力,成本更低。許多人也認為安全性得到了提高,但更準確的說法是,主要的安全焦點從保護云和端點之間的動態通信轉移到使邊緣設備更加安全。
邊緣的AI/ML可以在傳統的嵌入式系統上實現,設計者可以使用強大的微處理器、圖形處理單元和大量的存儲設備;類似于個人電腦的資源。然而,對物聯網設備(商業和工業)在邊緣采用AI/ML的需求越來越多,它們通常具有有限的硬件資源,并且在許多情況下是電池供電的。
AI/ML在資源和功率受限的硬件上運行的潛力產生了術語TinyML。例如,工業(例如,預測性維護)、建筑自動化(環境監控)、建筑(監督人員安全)和安全。
數據流
AI(及其子集ML)需要一個從數據捕獲/收集到模型部署的工作流(圖1)。就TinyML而言,由于嵌入式系統內的資源有限,優化整個工作流是必不可少的。
例如,TinyML的資源要求是1到400 MHz的處理速度、2到512 KB的RAM和32 KB到2 MB的存儲空間(閃存)。此外,在150 W至23.5 mW的功率下,在如此小的功率預算內運行通常具有挑戰性。
在將人工智能嵌入資源有限的嵌入式系統時,還有一個更大的考慮因素,或者說是權衡。模型對系統行為至關重要,但設計者經常在模型質量/準確性之間做出妥協,這會影響系統的可靠性/可信性和性能;主要是運行速度和功率消耗。
另一個關鍵因素是決定采用哪種類型的人工智能/人工智能。一般來說,可以使用三種類型的算法:監督式、非監督式和強化式。
創建可行的解決方案
即使是非常了解AI和ML的設計師也可能難以優化AI/ML工作流程的每個階段,并在模型準確性和系統性能之間取得完美平衡。那么,以前沒有經驗的嵌入式設計師如何應對這些挑戰呢?
首先,不要忽視這樣一個事實:如果模型很小,人工智能任務僅限于解決一個簡單的問題,部署在資源有限的物聯網設備上的模型將是高效的。
幸運的是,ML(尤其是TinyML)進入嵌入式系統領域帶來了新的(或增強的)集成開發環境(ide)、軟件工具、架構和模型——其中許多是開源的。例如,用于微控制器的tensor flow Lite(TF Lite Micro)是一個用于ML和AI的免費開源軟件庫。它被設計用于在只有幾KB內存的設備上實現ML。此外,程序可以用Python編寫,Python也是開源和免費的。
至于ide,Microchip的MPLAB X就是這樣一個環境的例子。該IDE可與該公司的MPLAB ML一起使用,MPLAB ML是一種專門為構建優化的AI物聯網傳感器識別代碼而開發的MPLAB X插件。由AutoML提供動力,MPLAB ML完全自動化AI ML工作流程的每個步驟,消除了重復、繁瑣和耗時的模型構建需求。特征提取、訓練、驗證和測試確保優化模型滿足微控制器和微處理器的內存限制,允許開發人員在基于Microchip Arm Cortex的32位MCU或MPU上快速創建和部署ML解決方案。
優化工作流程
從現成的數據集和模型開始,可以簡化工作流優化任務。例如,如果支持ML的物聯網設備需要圖像識別,那么從已標記的靜態圖像和視頻剪輯的現有數據集開始進行模型訓練(測試和評估)是有意義的;注意有監督的ML算法需要標記數據。
許多圖像數據集已經存在于計算機視覺應用中。然而,由于它們旨在用于基于PC、服務器或云的應用程序,因此它們往往很大。例如,ImageNet包含超過1400萬張帶注釋的圖像。
根據ML應用程序,可能只需要幾個子集;說許多人的圖像,但只有一些無生命的物體。例如,如果在建筑工地上使用支持ML的攝像機,如果沒有戴安全帽的人進入其視野,它們可以立即發出警報。ML模型將需要訓練,但可能只使用一些戴或不戴安全帽的人的圖像。但是,帽子類型可能需要更大的數據集,并且數據集中的范圍要足夠大,以便考慮各種因素,例如不同的光照條件。
有了正確的實時(數據)輸入和數據集,準備數據和訓練模型說明了圖1中的步驟1到3。模型優化(步驟4)通常是一種壓縮,這有助于減少內存需求(處理過程中的RAM和存儲的NVM)和處理延遲。
關于處理,許多人工智能算法,如卷積神經網絡(CNN),與復雜的模型進行斗爭。一種流行的壓縮技術是剪枝(見圖2),有四種類型:權重剪枝、單元/神經元剪枝和迭代剪枝。
量化是另一種流行的壓縮技術。此過程將高精度格式(如浮點32位(FP32))的數據轉換為低精度格式(如8位整數(INT8))。量化模型的使用(見圖3)可以以兩種方式之一納入機器訓練。
訓練后量化包括使用FP32格式的模型,當訓練完成時,量化部署。例如,標準TensorFlow可用于PC上的初始模型訓練和優化。然后,該模型可以量化,并通過TensorFlow Lite嵌入到物聯網設備中。
量化感知訓練模擬推理時間量化,創建模型下游工具將用于產生量化模型。
雖然量化很有用,但不應過度使用,因為它類似于通過用更少的位或使用更少的像素來表示顏色來壓縮數字圖像。
摘要
人工智能現在已經完全進入了嵌入式系統領域。然而,這種民主化意味著以前不需要理解人工智能和ML的設計工程師面臨著在他們的設計中實現基于人工智能的解決方案的挑戰。
雖然創建ML應用程序的挑戰令人望而生畏,但這并不新鮮,至少對于經驗豐富的嵌入式系統設計師來說是這樣。好消息是,在工程社區、ide(如MPLAB X)、模型構建器(如MPLAB ML)以及開源數據集和模型中可以獲得大量信息(和培訓)。這一生態系統有助于工程師從不同層面理解速度AL和ML解決方案,這些解決方案現在可以在16位甚至8位微控制器上實施。