圖片來源: 

圖片來源: 2021 台灣人工智慧年會

近幾年,因應AI與ML應用趨勢浪潮,越來越多企業開始嘗試將這樣的能力帶到靠近資料源的邊緣設備或IoT裝置,來發展各種Edge AI或AIoT應用。例如結合語音指令來控制機器人作業,或是透過AI邊緣攝影機來偵測機臺設備有無故障。但受限於CPU效能、資料吞吐量、記憶體及資料儲存的影響,想要在資源有限的IoT或嵌入式裝置跑AI或ML推論模型,現在仍然不是一件容易的事。

近年來,一種微型機器學習新技術TinyML順勢而起,試圖從優化硬體或模型來實現裝置上的AI或ML應用,讓ML的推論功能能夠在資源有限的終端裝置上來實現,可說是加速實現Edge AI或AIoT應用的重要關鍵。

TinyML是什麼?Arm應用工程總監徐達勇引用Google Tensorflow 行動部門負責人Pete Warden的定義,指的是每次執行ML模型推論時,其功耗必須小於1毫瓦(1mW)。

除了考慮到功耗,運算力不足也是實現Edge AI或AIoT應用的關鍵問題。以Inception v4深度學習模型為例,硬體需要的運算量就有240個GOPS(每秒執行10億次運算)  但一般single issue處理器,僅提供個位數的GOPS,甚至不只運算能力,連在記憶體中存取資料也會影響功耗,例如要從SRAM快取記憶體來存取1TB的資料,一顆16奈米CPU每秒所消耗的功耗就超過1瓦。這些都是TinyML的挑戰。

現階段TinyML技術發展,主要是從ML模型與硬體優化來實現低功耗裝置上的ML應用。徐達勇也歸納出實現TinyML的5種常見ML模型架構和優化的方法,包括降低精度(Reduce Precision)、資料重覆利用(Data re-use)、權重壓縮(Weight compression)、轉換(Transforms)、稀疏運算(Sparse computation)。

他表示,第一種作法是轉換ML模型及權重的資料儲存格式,來降低推論執行所需的運算量,例如將模型的權重從高精度FP32轉成較低精度的FP16或INT8格式。他解釋,因ML模型需要很多乘加法運算,而高精度ML模型又比低精度ML模型需要的運算量更高,也因此,改用較低精度的ML模型來執行運算,能大幅降低功耗,甚至因運算資料變少,也能因應更高的吞吐量需求。這是第一個可以運用到TinyML的方法。

除了從資料儲存格式著手,減少資料重覆使用是另一個可行方法。例如可以將CNN神經網路模型中經常重覆使用的權重參數的數值,暫時集中存放到一處,不用每次都從記憶體來撈取資料,減少不必要任務處理,也能達到降低功耗的作用。

由於現在神經網路模型體積越來越大,結構越來越複雜,因推論執行需處理的模型參數數量也就越多,大量使用記憶體來存放這些龐大數據,也造成了不少功耗的損失,也因此有了第3種作法是,透過權重壓縮技術,對於存入記憶體前的權重參數先進行壓縮,需要時再解壓縮拿來使用,他表示,這樣做好處是,一來可以減少記憶體的用量,二來能獲得更高的頻寬和更低功耗。

第4種作法則是採用轉換矩陣運算domain的方式,來降低乘法運算的複雜度。他表示,一般AI或ML模型運算過程有6成以上都是矩陣的乘法運算,所以只要讓乘法運算變少,就能減少運算量,這是能夠降低運算和功耗的另一種方式。例如將複雜的矩陣運算domain轉換到較簡易Winograd卷積算法的domain做運算,就能降低乘法運算的複雜度。

他提到最後一種方法是稀疏運算,像是運用Relu的激勵函數,在CNN模型運算過程中,使其部分神經元的輸出為零,可以讓神經網路變得稀疏,在運算時只針對激勵函數輸入數值非零部分做運算,不處理數值為零的部分,透過這樣的處理方式,同樣能達到運算量與功耗降低的效果。

除了優化ML模型和架構外,現在硬體設計過程中,也有一些新作法,來因應TinyML需求。徐達勇提出常見3種TinyML硬體平臺,前兩種是以低功耗和AI加速或優化的硬體設計為主,包括有低功耗通用SoC、低功耗micro-NPU,可分別對應到Arm Cortex-M55與Arm Ethos-U55系列IP產品。Arm Cortex-M55最大特色是支援最新的向量擴充指令,與Cortex-M44相比,在語音模型處理性能表現高出8倍之多。Arm Ethos-U55是ARM推出的另一款神經網路處理器IP產品,不僅省電,在AI處理效能獲得百倍提升,甚至最新一款Arm Ethos-U6產品中,其運算能力可達到1 TOPS。

他指出的第3種硬體平臺是採取記憶體運算的硬體架構平臺,如Mythic IPU處理器等,就是採用快閃記憶體內運算來執行ML推論,足以支撐113M (百萬)權重數量和每瓦4 TOPs運算能力。

他也提到目前TinyML技術上遇到的挑戰,越來越多AI與ML應用, 開始追求更高準確度,需要使用資源越來越多,包括運算、記憶體、功耗等,「但TinyML卻又是要在有限資源下來實現或執行不同的模型或神經網路,這就是最大的Gap。」

舉例來說,想要提高神經網路模型準確度,除了需要有大量的資料做訓練,資料量越大需要做的矩陣運算就更多,還有大量的參數需要調整,而且隨著架構越複雜,需要做很多層神經網路計算,使用大量記憶體存取資料、參數和每一層計算結果。

儘管TinyML發展才剛起步,隨著AIoT或Edge AI應用越來越火紅,未來將會有越來越多嵌入式裝置結合AI或ML功能,徐達勇認為,想要真正實現TinyML,這些裝置硬體必須具備每秒兆次(trillions)的乘加法運算能力,而且這樣的運算能力須考慮到硬體空間設計,還有兼顧功耗才行。

熱門新聞

Advertisement