卷積神經網路系列(3)

CNN硬體轉換解封邊緣AI潛力

作者: Ole Dreessen
2023 年 10 月 13 日

本系列文章由三部分組成,主要探討卷積神經網路(CNN)的特性和應用。CNN主要用於模式識別和物件分類。本文為系列文章的第三部分,重點解釋如何使用硬體轉換卷積神經網路,並特別介紹使用具有CNN硬體加速器的人工智慧(AI)微控制器在物聯網(IoT)邊緣實現人工智慧應用所帶來的好處。

AI應用通常需要消耗大量能源,並以伺服器農場或昂貴的現場可編程閘陣列(FPGA)為載體。AI應用的挑戰在於提高運算能力的同時保持較低功耗和成本。目前,強大的智慧邊緣運算正在使AI應用發生巨大轉變。相較於傳統基於韌體的AI運算,以基於硬體的卷積神經網路加速器為載體的智慧邊緣AI運算具備驚人的速度和強大的算力,開創了運算性能的新時代。

這是因為智慧邊緣運算能夠讓感測器節點在地自行決策而不受5G和Wi-Fi網路資料傳輸速率的限制,為實現之前難以實現的新興技術和應用場景提供了助力。例如,在偏遠地區,感測器級別的煙霧/火災探測或環境資料分析已成為現實。這些應用支援電池供電,能夠維持多年的運作。本文透過探討如何採用具有專用CNN加速器的AI微控制器實現CNN的硬體轉換來實現這些功能。

採低功耗CNN加速器的人工智慧MCU

MAX78000為一款具有超低功耗CNN加速器的AI微控制器系統單晶片,能在資源受限的邊緣裝置或物聯網應用中實現超低功耗的神經網路運算。其應用場景包括目標檢測和分類、音訊處理、聲音分類、雜訊消除、臉部辨識、基於心率等健康體徵分析的時間序列資料處理、多感測器分析以及預測性維護。

圖1為MAX78000的架構圖,其核心為具有浮點運算單元的Arm Cortex-M4F核心,工作頻率高達100MHz。為了使應用提供足夠的儲存資源,MAX78000並配備了512kB的快閃記憶體和128kB的SRAM。該元件提供多個外部介面,例如I2C、SPI、UART,以及用於音訊的I2S。此外,元件並整合了60MHz的RISC-V核心,可以作為一個智慧的直接存取記憶體(DMA)引擎從/向各個週邊模組和儲存(包括快閃記憶體和SRAM)複製/貼上資料。

圖1 MAX78000架構圖

由於RISC-V核心可以對AI加速器所需的感測器資料進行預處理,因而Arm核心在此期間可以處於深度睡眠模式。推理結果也可以透過中斷觸發Arm核心在主應用程式中執行操作,透過無線傳輸感測器資料或向使用者發送通知。

具備用於執行卷積神經網路推理的專用硬體加速器單元是MAX7800x系列微控制器的一個明顯特徵,這使其有別於標準的微控制器架構。該CNN硬體加速器可支援完整的CNN模型架構以及所有必需的參數(權重和偏置),配備了64個平行處理器和一個整合記憶體。整合記憶體中的442kB用於儲存參數,896kB則用於儲存輸入資料。不僅儲存在SRAM中的模型和參數可以透過韌體進行調整,網路也可以即時透過韌體進行調整。

元件支援的模型權重為1位元、2位元、4位元或8位元,記憶體支援容納多達350 萬個參數。加速器的儲存功能使得微控制器無需在連續的數學運算中每次都要透過匯流排獲取相關參數—如此的方式通常伴隨高延遲和高功耗,代價高昂。CNN加速器可以支援32層或64層的網路,具體層數取決於池化函數。每層的可編程圖像輸入/輸出大小最多為1024×1024像素。

CNN硬體轉換 功耗/推論速度權衡

CNN推論是一項包含大型矩陣線性公式運算的複雜運算任務。Arm Cortex- M4F微控制器可以使得CNN推論在嵌入式系統的韌體上運作。但此種方式也有一些缺點:在微控制器上運作基於韌體的CNN推論時,運算命令和相關參數都需要先從記憶體中檢索再被寫回中間結果,這會造成大量功耗和時延。

表1對三種不同解決方案的CNN推論速度和功耗進行了比較。所用的模型基於手寫數位識別訓練集MNIST開發,可對視覺輸入資料中的數字和字母進行分類以獲得準確的輸出結果。為確定功耗和速度的差異,本文對三種解決方案所需的推理論時間進行了測量。

方案一使用整合Arm Cor tex-M4F處理器的MAX32630進行推論,其工作頻率為96MHz。方案二使用MAX78000的CNN硬體加速器進行推論,其推論速度(即資料登錄與結果輸出之間的時間) 比方案一加快了400倍,每次推論所需的能量也僅為方案一的1/1100。方案三對MNIST網路進行了低功耗優化,進而大幅降低了每次推論的功耗。雖然方案三推論結果的準確性從99.6%下降到了95.6%,但其速度快了很多,每次推論只需0.36ms,推論功耗降也低至僅1.1μW。兩節AA鹼性電池(總共6Wh能量)可以支援應用進行500萬次的推論(忽略系統其它部分的功耗)。

這些資料說明了硬體加速器的強大運算能力可以大幅助益無法利用或連接到連續電源的應用場景。MAX78000就是如此的一款產品,其支援邊緣AI處理,無需大量功耗和網路連接,也無需冗長的推論時間。

AI微控制器使用範例

MAX78000支援多種應用,下文圍繞部分案例展開討論。其中一個案例是設計一個電池供電的攝影機,需要能檢測到視野中是否有貓出現,並能夠透過數位輸出打開貓門允許貓進入房屋。

圖2為該設計的示例框圖。在本設計中,RISC-V核心會定期開啟圖像感測器並將圖像資料載入到MAX78000的CNN加速器中。如果系統判斷貓出現的概率高於預設的臨界值,則打開貓門然後回到待機模式。

圖2 智慧寵物門框圖

開發環境和評估套件

邊緣人工智慧應用的開發過程可分為以下幾個階段:

第一階段:AI—網路的定義、訓練和量化。

第二階段:Arm韌體—將第一階段產生的網路和參數導入C/C++應用程式,創建並測試韌體。

開發過程的第一階段涉及建模、訓練和評估A I模型等環節。此階段開發人員可以利用開源工具,例如PyTorch和 TensorFlow。MAX78000的GitHub網頁也提供全面的資源協助使用者在考慮其硬體規格的同時使用PyTorch建構和訓練AI網路。網頁也提供了簡單的AI網路和應用,例如臉部辨識(Face ID)供用戶參考。

圖3顯示了採用PyTorch進行AI開發的典型過程。首先是對網路進行建模。基於此可以進入下一步驟建構網路,使用訓練資料對網路進行訓練、評估和量化。這一步驟會生成一個檢查點檔,其中包含用於最終綜合過程的輸入資料。最後一步是將網路及其參數轉換為適合CNN硬體加速器的形式。值得注意的是,雖然任何PC(筆記型電腦、伺服器等)都可用於訓練網路,但如果沒有CUDA顯卡,訓練網路可能會花費很長的時間—即使對於小型網路而言也有可能需要幾天甚至幾周的時間。

圖3 AI開發過程

開發過程的第二階段是透過將資料寫入CNN加速器並讀取結果的機制來創建應用韌體。

第一階段創建的檔透過#include指令整合到C/C++專案中。微控制器的開發環境可使用Eclipse IDE和GNU工具鏈等開源工具。ADI提供的軟體發展套件(Maxim Micros SDK(Windows))也已經包含了所有開發必需的元件和配置,包括周邊驅動以及示例說明,協助用戶簡化應用開發過程。

成功透過編譯和連結的專案可以在目標硬體上進行評估。ADI開發了兩種不同的硬體平台可供選用:圖4為MAX78000EVKIT,圖5為MAX78000FTHR,一個稍小的評估板。每個評估板都配有一個VGA攝影機和一個麥克風。

圖4 MAX78000評估套件

以前,AI應用必須以昂貴的伺服器農場或FPGA為載體,並消耗大量能源。現在,借助具有專用CNN加速器的微控制器,AI應用依靠單組電池供電就可以長時間運作。微控制器在能效和功耗方面的性能突破大幅降低了邊緣AI的實現難度,使得新型邊緣AI應用的潛力得以釋放。

圖5 MAX78000FTHR評估套件

(本文作者為ADI現場應用工程師)

》想看更多內容?快來【免費加入會員】【登入會員】,享受更多閱讀文章的權限喔!
標籤
相關文章

AI應用水漲船高 FPGA邊緣運算完美達陣

2019 年 04 月 14 日

CNN網路建模精確特徵萃取

2023 年 09 月 06 日

深度訓練提升CNN網路精度

2023 年 09 月 29 日

克服SMT黏著問題 先進封裝晶片翹曲挑戰有解

2020 年 06 月 07 日

改善流程/控管品質 AI扭轉製造價值

2019 年 09 月 08 日

雅特力分享「AT32 MCU解密AIoT智慧終端芯時代」主題演講

2023 年 06 月 16 日
前一篇
新思/台積電加速2奈米先進SoC設計創新
下一篇
AMD收購開源AI軟體專家Nod.ai