講到AI相信大家第一時(shí)間多半是聯(lián)想到大型語言模型(LLM)和生成式AI(genAI, AIGC)應(yīng)用,可以對(duì)話聊天、查詢數(shù)據(jù)、生成文章圖像和音樂,而這些應(yīng)用多半需要用到極大的云端算力才能完成。
對(duì)于微型AI應(yīng)用,如語音喚醒(語音命令)、異常偵測(cè)(振動(dòng)、異音、環(huán)境傳感器)、運(yùn)動(dòng)偵測(cè)(手勢(shì)、跌倒)、影像分類、影像對(duì)象偵測(cè)、影像姿態(tài)偵測(cè)(全身、手指)等,通常可利用單芯片(MCU)或微處理器(MPU)配合較小的AI模型就有機(jī)會(huì)辦到邊緣(離網(wǎng))就完成推論工作。
在之前的文章中提到,AI推論主要都是在進(jìn)行巨量的矩陣乘加運(yùn)算(MAC),就是「a×b+c」。而加速計(jì)算方式可使用「提高工作頻率速度」、「平行/向量指令集加速」、「多核心加速」、「NPU神經(jīng)網(wǎng)絡(luò)加速器」等硬件加速作法。
而一般單芯片在單核CPU的情況下,最容易達(dá)成的作法就是前兩項(xiàng),而本文將從「平行/向量指令集加速」的角度來為大家說明如何在沒有神經(jīng)網(wǎng)絡(luò)加速器NPU時(shí)也能順利玩微型AI應(yīng)用。
1. Arm精簡(jiǎn)指令集的演進(jìn)
目前市售32bit單芯片大約有八到九成都是使用Arm Cortex-M系列硅IP)完成的,不同系列分別對(duì)應(yīng)到不同的指令集(ARMv6-M~v8.1-M),而「-M」就是指將該版本指令集濃縮后專門提供給單芯片使用的。相關(guān)指令集對(duì)應(yīng)的IP如下所示。
ARMv6-M: Cortex M0(2009) / M0+(2012) /M1(2007)
ARMv7-M: Cortex M3(2004)
ARMv7E-M: Cortex M4(2010) / M7(2014)
ARMv8-M Baseline: Cortex M23(2016)
ARMv8-M Marnline: Cortex M33(2016) /M35P(2018)
ARMv8.1-M: Cortex M55(2020) / M85(2022) /M52(2023)
Fig. 1 Arm Cortex-M 系列指令集對(duì)照表。
2. Cortex-M指令如何加速計(jì)算
其中「v7-M」指令集就開始支持單頻率乘加指令MLA,即將原來需要二道指令MUL, ADD分別計(jì)算乘法和加法變成一道指令,如此就能將計(jì)算速度提升兩倍。到了「v7E-M」DSP擴(kuò)展指令集時(shí)開始支持單指令多數(shù)據(jù)流(Single Instruction Multiple Data, SIMD),如QADD,QADD16, QADD8等,可將32bit分拆成2個(gè)16bit或4個(gè)8bit數(shù)據(jù)一起計(jì)算,如此就能增加2~4倍計(jì)算速度。
當(dāng)再搭配工作頻率從數(shù)十MHz提升到數(shù)百M(fèi)Hz后,對(duì)于語音喚醒詞(Key Word Spotting, KWS), 傳感器異常偵測(cè)(AnomalyDetection, AD), 運(yùn)動(dòng)手勢(shì)辨識(shí)(Motion / Gesture Dectection)等微型AI應(yīng)用大概都能完成,但若遇到有影像類應(yīng)用則遠(yuǎn)遠(yuǎn)不夠。
Arm Cortex-A系列為64bit CPU,所以其上有NEON(進(jìn)階SIMD)指令集,可處理128bit或64bit的SIMD計(jì)算,讓計(jì)算速度更快,但這樣的指令在32bit的Cortex-M并沒有支持,所以Arm在v8.1M指令中加入Helium M型向量擴(kuò)展指令(M-Profile Vector Extension, MVE)來提升Cortex-M單芯片的算力。
Helium可以處理128bit的向量運(yùn)算(相當(dāng)于SIMD16x8bit, 8x16bit, 4x32bit),共有8個(gè)向量緩存器,可處理整數(shù)、定點(diǎn)數(shù)(Q7,Q15,Q31)及浮點(diǎn)數(shù)(半精度FP16/單精度FP32)計(jì)算,有超過150個(gè)新指令。
若為了處理128bit的向量計(jì)算就把數(shù)據(jù)總線(Data bus)及單芯片內(nèi)部靜態(tài)內(nèi)存(SRAM)都改成128bit寬是不合理的。最簡(jiǎn)單的作法是利用四個(gè)頻率周期將128bit數(shù)據(jù)當(dāng)成4個(gè)32bit的數(shù)據(jù)來處理,但這樣就會(huì)變成和單指令周期32bit SIMD指令沒什么不同。因此Helium在向量計(jì)算時(shí)可以將加載(VLDR)和乘加(VMLA)計(jì)算進(jìn)行重迭,一邊加載一邊計(jì)算,這樣就可以再加速一倍以上。如Fig. 2右下所示。
在Cortex-M55/M85采取雙節(jié)拍(Dual Beat)作法,就是1個(gè)頻率周期(Clock Cycle)讀取二個(gè)節(jié)拍(Beat),即2×32=64bit,所以128bit的向量要2個(gè)頻率周期才能處理完成,而1個(gè)頻率周期處理的內(nèi)容可以是下列組合。
2個(gè)32bit(Q31定點(diǎn)數(shù)或32位整數(shù)或32位浮點(diǎn)數(shù))
4個(gè)16bit(Q15定點(diǎn)數(shù)或16位整數(shù)或16位浮點(diǎn)數(shù))
8個(gè)8bit(Q7定點(diǎn)數(shù)或8位整數(shù))
而Cortex-M52則采單節(jié)拍(Single Beat)作法,可處理長(zhǎng)度則減半為32bit(1x32bit, 2x16bit, 4x8bit),128bit的向量需要4個(gè)頻率周期才能處理完成。
Fig. 2 Arm Cortex-M指令與加速計(jì)算示意圖。
3. Helium指令集效能比較
目前有支持Helium指令的MCU共有四家公司,如下所示。
Cortex-M55:
ALIF – Ensemble E1(@160MHz), E3(@160MHz),E5(dual core,@160MHz, 400MHz), E7(dual core,@160MHz, 400MHz)
奇景(Himax) – WiseEye2 HX6538(dual Core, @150MHz, 400MHz)
新唐(Nuvoton) – NuMicro M55M1(@200MHz)
Cortex-M85:
瑞薩(Renesas) – RA8D1(@480MHz), RA8M1(@480MHz)
Cortex-M52:
None
以下就以Cortex-M7為基準(zhǔn)(100%)和Cortex M55/M85/M52進(jìn)行比較。如Fig. 3所示,橫軸為傳統(tǒng)性能(DMIPS/MHz),縱軸則為機(jī)器學(xué)習(xí)推論性能(ML Performance)。以M55為例,雖然傳統(tǒng)性能較M7低,但機(jī)器學(xué)習(xí)性能卻高出3倍,由此可看出Helium指令集提供的效能提升。
Fig. 3 Arm Cortex-M 指令與加速計(jì)算示意圖。
以上算力對(duì)于非影像的微型AI應(yīng)用大致能滿足,但若遇到影像類應(yīng)用則單靠CPU的SIMD及MVE指令集可能還是不夠。幸運(yùn)地是以上提及的ALIF, Himax, Nuvoton的MCU都有內(nèi)建Arm Ethos U55 NPU,這樣就能將算力再推高數(shù)十倍,可以滿足低分辨率、低頻度的影像分類、對(duì)象偵測(cè)甚至姿態(tài)估測(cè)等應(yīng)用。
小結(jié)
隨著半導(dǎo)體技術(shù)的提升及配套的軟件開發(fā)工具逐漸到位,利用單芯片提高工作頻率及高度平行乘加運(yùn)算(SIMD, MVE),開啟了可以不依靠網(wǎng)絡(luò)就能完成微型AI運(yùn)算的契機(jī),使得平價(jià)、低耗能的邊緣智能裝置(Edge AI & TinyML Device)有了更大的創(chuàng)意發(fā)揮空間,讓智慧生活、智能照護(hù)、智能制造、智能建筑等更多應(yīng)用能快速實(shí)現(xiàn)。
審核編輯:劉清
-
傳感器
+關(guān)注
關(guān)注
2551文章
51207瀏覽量
754533 -
加速器
+關(guān)注
關(guān)注
2文章
802瀏覽量
37929 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100882 -
單芯片
+關(guān)注
關(guān)注
3文章
421瀏覽量
34591 -
NPU
+關(guān)注
關(guān)注
2文章
286瀏覽量
18653
原文標(biāo)題:誰說單芯片沒有神經(jīng)網(wǎng)絡(luò)加速器NPU就不能玩微型AI應(yīng)用?
文章出處:【微信號(hào):易心Microbit編程,微信公眾號(hào):易心Microbit編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論