国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種嵌入式輕量化卷積神經網絡計算加速方法

2023-07-15 07:05謝媛媛劉一睿陳遲曉康曉洋張立華
小型微型計算機系統(tǒng) 2023年7期
關鍵詞:數據流處理器架構

謝媛媛,劉一睿,陳遲曉,康曉洋,張立華

1(復旦大學 工程與應用技術研究院,上海 200433) 2(復旦大學 信息科學與工程學院,上海 200433) 3(復旦大學 芯片與系統(tǒng)前沿技術研究院,上海 200433)

1 引 言

近年來,隨著以卷積神經網絡(Convolutional Neural Network,CNN)為代表的人工智能算法的深入研究與普及,智能電子設備與相關應用場景已隨處可見,例如目標檢測[1]、人臉識別[2]、智慧醫(yī)療[3]等.CNN通過增大網絡結構,以高的計算量為代價實現模型預測的高準確率.一些對實時性要求比較高的應用場景不僅對網絡的準確率有較高的要求,而且要求網絡有較高的處理速度.目前最常用的加速卷積運算的平臺有圖形處理器(Graphics Processing Unit,GPU),體積大,功耗高,且難于集成,很難在小型化的硬件設備上進行部署[4].專用集成電路(Application Specific Integrated Circuit,ASIC)具有性能高和功耗低的特點,且可以方便地部署在小型化的硬件設備上,但是靈活性和遷移性低,設計周期長,開發(fā)難度大、成本高.現場可編程門陣列(Field-Programmable Gate Array,FPGA)性能高、功耗低,且靈活性較好,但是需要開發(fā)者具備一定的硬件專業(yè)知識背景,對不是專門從事硬件工作的人來說開發(fā)難度較大[5].基于ARM處理器(Advanced RISC Machines)的嵌入式平臺體積小,功耗低,靈活性高,方便部署和遷移,對硬件相關知識要求相對較低,為CNN部署提供了一種有效的解決方案.但是傳統(tǒng)ARM處理器算力低,在一些應用場景中不能滿足實時運算的要求[4].

在卷積網絡加速的方法中,其中一種有效的解決方案就是使用低位寬的定點數來表示原來的32位浮點數進行卷積運算[6-13];另一種方法就是使用單指令多數據(Single Instruction Multiple Data,SIMD)的方法并行計算[14];此外,由于卷積運算中有大量的數據復用,且計算具有規(guī)則性,可以用數據流架構減少內存訪問,從而提升速度[15-18].

本文提出一種卷積神經網絡加速的方法,通過可學習步長量化的方法得到低位寬的網絡參數,提高推理的運算速度,降低功耗,采用數據流架構的SIMD卷積加速器在ARM上進行加速運算.將本文方法用于處理腦電信號(Electroencephalogram,EEG)來進行手術過程中麻醉深度監(jiān)測,實驗結果表明,該方法在幾乎不影響網絡預測準確率的情況下,顯著提高了EEG信號處理的速度,降低功耗.

2 相關工作

2.1 神經網絡低位寬量化

在進行神經網絡的乘累加運算時,使用低位寬可以減少存儲容量和內存訪問、加速運算、降低功耗,此外,把浮點數量化為整數之后,具有更好的硬件兼容性.有研究顯示,降低位寬能夠顯著減少加法和乘法運算的功耗和芯片占用空間[6].只要精度不降低太多,在能夠滿足計算目的的前提下,本文盡量采用低位寬量化來減少存儲空間和內存訪問,從而提升速度,降低功耗[6-13].

權重聚類[19]是一種典型的輕量化算法,比如應用k-means聚類來減少表示權重的值的數量[20].使用權重共享方法對權重進行量化,然后對量化后的權重應用Huffman編碼以獲得更高的壓縮率[7].然而,權重聚類方法需要特殊的數據索引,這種方法既耗時又不利于硬件實現.為了獲得更高的壓縮率,出現了二值化或三值化的方法,但是這種方法實現高壓縮率的同時也會帶來顯著的準確率損失[10,11,21].

2019 年有學者提出可學習步長量化算法,用訓練過程學習到的步長對網絡參數進行低位寬量化,將輕量化網絡參數用于推理.將該算法用于ImageNet數據集的幾種不同規(guī)模的ResNet網絡和VGG-16網絡的低位寬量化,將網絡量化為2bit,3bit和4bit時,該方法能夠得到目前已有量化算法中最高的網絡準確率[22].

2.2 基于ARM處理器的SIMD指令集

SIMD是一種最常用的加速神經網絡運算的并行架構[14].SIMD架構每次從指令存儲器讀取一條指令,從數據存儲器讀取多個數,運算完把多個結果都存起來.這種結構非常適用于神經網絡,因為在神經網絡中,有大量的突觸,存在大量并行運算,意味著需要加載很多組權重和輸入,然后進行乘累加,對于這種非常高度并行的架構,SIMD有很大優(yōu)勢.

2.3 數據復用

卷積運算中存在大量的數據復用,而且計算具有規(guī)則性,在用硬件實現卷積運算時,可以用數據流架構減少內存訪問,從而提升速度、降低功耗[15-17].基于數據流架構的數據復用方法包括Weight Stationary[16,17],Input Stationary[16],Row Stationary[15,16],Tunnel Stationary[16]和Pointwise Group Convolution[18],實際使用時,卷積網絡可以使用這幾種數據流模型之一或混合模型來減少輸入或權重的訪存,來提升性能.

2.4 EEG用于麻醉深度監(jiān)測

手術中對患者進行麻醉深度監(jiān)測對保障患者安全舒適意義重大.腦電雙頻指數(bispect ral index,BIS)是臨床上比較常用的評估麻醉深度的方法[23-28].BIS是在功率譜、頻譜分析的基礎上復合腦電相關函數譜分析技術,將成人的多個不同腦電變量綜合而成的一個單一的無量綱指數,用 0~100 表示[23],BIS值高代表大腦皮層功能完整性良好,處于清醒狀態(tài),而BIS值低則代表大腦皮層功能完整性下降,處于麻醉狀態(tài).傳統(tǒng)的BIS指數評估麻醉深度的方法有一定的缺點:由于連續(xù)EEG采集的時長及采集環(huán)境的影響,EEG信號必然存在干擾,例如肌肉活動及外來的電流或機械干擾,這些干擾會影響B(tài)IS的可靠性,從而影響麻醉深度的監(jiān)測[29-31];由于BIS指數需要進行內部運算,所以BIS值與對應的EEG之間有20~30s的滯后,即BIS顯示的數據至少是20秒以前的數據,而并非實時監(jiān)測[29].

有學者將人工智能(Artificial Intelligence,AI)的方法應用于麻醉深度監(jiān)測[29-32],海量的腦電數據通過AI學習,不僅節(jié)省了人力,還可以減少由于腦電信號存在干擾造成的誤差[29].采用AI的方法進行麻醉深度的監(jiān)測,由于卷積神經網絡中涉及到大量乘累加運算,想要實現EEG信號的實時處理,需要優(yōu)化算法,提升性能.

3 實驗方法

3.1 面向EEG的網絡結構

因為EEG信號時序較長,需要比較大的感受野,所以采用比較大的卷積核.通過訓練和調整,得到精度較高的網絡結構如圖1所示.網絡的輸入為每秒對應的EEG信號,每條數據的寬度為100.網絡包含4層卷積層,3層池化層和兩層全連接層.其中,第0層卷積核的大小是15,輸入輸出通道分別是1和32,第2層卷積核大小是11,輸入和輸出通道分別為32和64,第4層卷積核的大小是7,輸入和輸出通道分別是64和128,第6層卷積核的大小是5,輸入和輸出通道分別為128和256.整個網絡的輸出為根據EEG信號預測得出的BIS值.網絡采用均方誤差損失函數(Mean Squared Error,MSE).這個網絡在結構上相對簡單,但是已經包含了卷積神經網絡最主要的結構.如果后期想對網絡進行修改,只需要將加速部分的代碼進行修改,就可以繼續(xù)調用已經設計好的加速模塊.

圖1 處理面向麻醉深度監(jiān)測的EEG信號的網絡結構Fig.1 Network structurefor processing EEG signals which is used for monitoring the depth of anesthesia

3.2 網絡輕量化

(1)

其中,函數clip(z,rmin,rmax)把z限定在rmin和rmax之間,當z小于rmin時返回rmin,當z大于rmax時返回rmax,當z∈[rmin,rmax]時返回z,取整函數[z]返回最接近z的整數.對于給定的量化位寬b,對于無符號數的量化(輸入),QP=2b-1,QN=0,對于有符號數(權重)的量化,QP=2b-1-1,QN=2b-1.

圖2 量化算法每一層實現的步驟Fig.2 Steps to implement each layer of the quantization algorithm

把高位寬參數量化為低位寬參數,減小網絡參數存儲空間、提升速度的同時,由于參數的精度下降,從而導致網絡預測的準確率下降.因此在量化時,對量化步長的選擇至關重要,本文采用可學習步長的量化方案,采用隨機梯度下降算法,使用直通估計器來推導取整函數的梯度,從而使用反向傳播算法更新網絡參數.更新參數時,對于損失函數L,使用直通估計器,按照:

(2)

來更新量化步長s,這樣能夠提高模型的準確率[22].其中?是梯度算子,Nw表示權重W的數量.

3.3 基于ARM處理器的卷積網絡SIMD計算加速方法

ARMv8 有32個128bit寄存器,本文基于ARMv8 用嵌入式匯編編程來實現SIMD卷積加速器設計,一條指令實現8組數據的乘累加運算.表1列出了幾種常見的指令,分別是加法,減法,乘法,乘累加,數據加載和存儲指令.

表1 幾種常見的SIMD指令Table 1 Several common SIMD instructions

第0層卷積采用Input Stationary的數據流架構來減少訪存次數,實現加速,第2層和第4層卷積采用類似于Row Stationary的數據流架構,第6層卷積由于卷積核通道數太大,受到寄存器數量的限制,只能采用Pointwise Group Convolution的架構來加速卷積運算.

4 實驗結果與分析

本文網絡訓練是在計算機上,基于Windows10系統(tǒng)(版本號20H2),顯卡為NVIDIA GeForce RTX 2080,環(huán)境為GPU版本的Pytorch1.3.1.推理階段是在Ultra 96-V2開發(fā)板的ARM處理器上完成的.

4.1 實驗數據集

實驗數據集是昆士蘭大學生命體征公開數據集[34],EEG信號為單通道數據,采樣率為100Hz.把數據集中各個患者連續(xù)采樣的數據截取為時長為1秒的數據,用每秒鐘中間時刻的BIS指數當作標簽,共得到57732條EEG信號數據和對應的BIS指數,4/5作為訓練集,1/5作為測試集.

4.2 結果與分析

表2分別是全精度網絡和不同方案的量化網絡在測試集上的結果,準確率表示預測值和真實值相差小于5,即能夠準確預測出麻醉過程病人狀態(tài)的概率,std表示預測值與真實值差值的標準差,它的大小能夠反映網絡預測的準確率.Quan 8表示整個網絡都量化為8bit,Quan 3 表示整個網絡都量化為3 bit,Quan 838表示網絡的第0層卷積和最后一層全連接層量化為8 bit,其余各層均量化為3 bit,Quan 83表示網絡的第0層卷積量化為8 bit,其余各層均量化為3 bit.表2中,Quan8的準確率最高,但是用匯編實現數據流架構的SIMD卷積加速器時,相比Quan 83,第2,4,6層卷積運算的位寬都要加倍,使SIMD并行計算的數據量減少,導致運算時間和調用加速模塊時參數傳遞時間加倍,從而使網絡總的處理時間加倍.選擇量化方案時,也試過將整個網絡量化為16bit,得到的量化網絡標準差std為3.99,準確率為89.14%,但是實現這種網絡的時間代價是8bit網絡的幾倍,無法實現實時處理.Quan 3 的std太大,不能滿足預測要求.Quan 838與Quan 83 相比,雖然最后一層全連接層的量化位寬有所增加,但是網絡準確率降低,原因可能是最后一層網絡參數冗余,出現了過擬合,導致網絡準確率降低.綜合考慮速度和準確率,本文最終采取Quan 83的量化方案,即網絡的第0層卷積量化為8 bit,其余各層均量化為3 bit.

表2 全精度網絡和量化網絡精確度對比Table 2 Comparison of accuracy between full-precision network and quantized network

表3列出了輕量化網絡各層參數,浮點數網絡總參數量為993.216kB,而量化后網絡總參數量為97.39kB,下降了90.19%,極大地降低了網絡參數存儲空間.表4列出了量化網絡各卷積層乘累加的次數和卷積層間乘累加的次數.量化之前網絡的卷積層是浮點數乘累加,需進行1.53M次;量化之后卷積層是整數乘累加,卷積層間是浮點數運算,只需要進行6.42k次浮點數的運算.所以量化之后浮點數乘累加的次數下降了99.58%,網絡的運算速度得到很大提升.

表3 量化網路各層參數Table 3 Layer parameters of the quantified network

表4 量化網絡各層乘累加次數Table 4 Multiply and accumulate times of the quantified network

Ultra 96-V2開發(fā)板上HDMI接口連接在FPGA部分,需要在FPGA上配置相應的IP核才能使用HDMI接口輸出圖像.由于本實驗的輸出結果BIS只是一個數字,比較簡單,不需要輸出視頻圖像,所以為了減少開發(fā)難度,使用串口與PC連接,把神經網絡模型的運行結果通過串口輸出到PC端進行顯示.

表5分別是在計算機上和在Ultra 96-V2開發(fā)板的ARM處理器上各卷積層運行時間,Ops表示每層的乘累加次數,PC表示在計算機上用numpy 1.18.0計算,PS表示在ARM處理器上只用numpy 1.13.3計算,C表示在ARM處理器上直接使用C語言對卷積運算進行加速,ASM表示在ARM處理器上采用嵌入式匯編實現數據流架構的SIMD卷積加速器.由表5可以看出,第0層卷積運算,相對PS,ASM方法速度可提升12550倍,相對C,ASM方法速度可提升368倍,這是因為第0層卷積采用Input Stationary的數據流架構,極大地減少了訪存次數,實現加速.由于參數量增加,寄存器數量有限,第2層和第4層卷積采用類似于Row Stationary的數據流架構,加速效果略差于第0層卷積,相對PS,第2層和第4層采用ASM方法速度可分別提升677倍和338倍,相對C,第2層和第4層采用ASM方法速度可分別提升403倍和251倍.第6層卷積由于卷積核通道數太大,寄存器數量嚴重制約數據流架構的加速效果,采用的是Pointwise Group Convolution的架構,相對PS,ASM方法速度可提升72倍,相對C,ASM方法速度可提升81倍.另外可以看出,在ARM處理器上ASM的方法比計算機的運算速度還要高很多倍.

表5 各卷積層計算時間Table 5 Calculation time of each convolutional layer

由表5可知,在ARM處理器上采用嵌入式匯編實現數據流架構的SIMD卷積加速器,速度比直接使用C語言對卷積網絡進行加速快很多,可能的原因是直接使用C語言進行編譯,優(yōu)化加速的時候并沒有采用SIMD并行,也沒有采用數據流架構來減少訪存,所以運算速度不高.另外,本文中卷積運算的模式并不支持GPU加速,所以在ARM處理器上和在計算機上直接進行推理,速度都很低.

表6是ARM處理器處理每組EEG信號所需總時間和功耗,其中C和ASM的方法是通過Python調用加速模塊實現的,整個流程除了卷積之外,還有對浮點數的量化、最大池化、 RBR運算和全連接層的運算,這些都是直接用numpy 1.13.3來實現的.由表6可知,本文提出的方法能夠加速EEG信號的處理,降低功耗,僅需39.64ms就可以處理時間跨度為1s的EEG單通道信號,且功耗僅為0.1J.對于多通道的EEG信號,只要通道數不超過25,就能夠實現實時處理.

表6 處理每組EEG信號所需總時間和功耗Table 6 Total time and power consumption required to process each group of EEG signals

另外,測得在ARM處理器上用numpy 1.13.3進行浮點數量化、最大池化、RBR運算和全連接層運算的總時間為9.1ms,所以由表5和表6對比計算可得,用本文提出的ASM方法,四層卷積層所用總時間為0.771ms,所以調用加速模塊時參數傳遞需要的時間為29.8ms.

測試集中BIS最小值為17,最大值為93,這里從中隨機抽取BIS值不同大小的6組數據,給出表2中所示幾種不同的網絡對應的EEG波形圖,如圖3所示,圖中標注了對應的BIS的真實值Label和不同網絡得到的預測值.由圖3可知,總體來說,全精度網絡預測的結果最接近真實值,Quan 8 是預測結果最接近真實值的量化網絡,Quan 83次之.但也有特殊情況,例如,Label為27的數據,Quan 8 和Quan 3網絡預測值和真實值都相差很大,用這兩個網絡訓練過程學習到的參數來處理這組數據,結果不太理想.而Label為90的數據,Quan 83 網絡預測值最接近真實值,甚至優(yōu)于全精度網絡的預測值.綜合考慮準確率和處理速度,本文方法能夠很好地預測不同麻醉深度的BIS值.

圖3 測試集中代表性的EEG波形圖和計算得到的BIS值Fig.3 Representative EEG waveform and calculated BIS value from test set

5 結 論

本文提出了一種基于SIMD指令集的卷積神經網絡計算加速方法,旨在解決傳統(tǒng)ARM處理器算力低,不適用于實時性需求比較高的應用場景的問題.并將該方法用于處理EEG信號來進行手術過程中麻醉深度監(jiān)測.本文通過可學習步長量化的方法得到低位寬的網絡參數,網絡參數量由993.216kB下降到 97.39kB,下降了90.19%,極大地降低了網絡參數存儲空間;浮點數的乘累加次數由1.53M次下降到6.42k次,下降了99.58%,網絡的運算速度得到很大提升.采用數據流架構的SIMD卷積加速器,各卷積層可分別加速幾十倍、幾百倍,甚至一萬多倍,在Ultra 96-V2開發(fā)板的ARM處理器上用Python調用加速模塊實現整個網絡的運算,僅需39.64ms就可以處理時間跨度為1s的EEG單通道信號,速度提高到原來的10.5倍,且功耗僅為0.1J.極大地提高了處理速度,在ARM處理器上能夠實現最多25通道EEG信號的實時處理.采用可學習步長的量化方法,在提升速度、降低功耗的同時,基本保持網絡預測的準確率,能夠很好地預測出麻醉深度.同時本文中用Python調用加速模塊,參數傳遞比較耗時,優(yōu)化調用部分的設計,進一步提高整個網絡的速度,仍是未來有待研究的問題.

猜你喜歡
數據流處理器架構
基于FPGA的RNN硬件加速架構
功能架構在電子電氣架構開發(fā)中的應用和實踐
汽車維修數據流基礎(下)
一種提高TCP與UDP數據流公平性的擁塞控制機制
LSN DCI EVPN VxLAN組網架構研究及實現
基于數據流聚類的多目標跟蹤算法
一種基于FPGA+ARM架構的μPMU實現
Imagination的ClearCallTM VoIP應用現可支持Cavium的OCTEON? Ⅲ多核處理器
北醫(yī)三院 數據流疏通就診量
ADI推出新一代SigmaDSP處理器