• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種嵌入式輕量化卷積神經(jīng)網(wǎng)絡計算加速方法

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

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

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

      1 引 言

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

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

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

      2 相關工作

      2.1 神經(jīng)網(wǎng)絡低位寬量化

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

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

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

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

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

      2.3 數(shù)據(jù)復用

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

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

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

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

      3 實驗方法

      3.1 面向EEG的網(wǎng)絡結(jié)構

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

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

      3.2 網(wǎng)絡輕量化

      (1)

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

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

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

      (2)

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

      3.3 基于ARM處理器的卷積網(wǎng)絡SIMD計算加速方法

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

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

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

      4 實驗結(jié)果與分析

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

      4.1 實驗數(shù)據(jù)集

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

      4.2 結(jié)果與分析

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

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

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

      表3 量化網(wǎng)路各層參數(shù)Table 3 Layer parameters of the quantified network

      表4 量化網(wǎng)絡各層乘累加次數(shù)Table 4 Multiply and accumulate times of the quantified network

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

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

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

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

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

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

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

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

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

      5 結(jié) 論

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

      猜你喜歡
      數(shù)據(jù)流處理器架構
      基于FPGA的RNN硬件加速架構
      功能架構在電子電氣架構開發(fā)中的應用和實踐
      汽車工程(2021年12期)2021-03-08 02:34:30
      汽車維修數(shù)據(jù)流基礎(下)
      一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機制
      LSN DCI EVPN VxLAN組網(wǎng)架構研究及實現(xiàn)
      電信科學(2017年6期)2017-07-01 15:45:17
      基于數(shù)據(jù)流聚類的多目標跟蹤算法
      一種基于FPGA+ARM架構的μPMU實現(xiàn)
      Imagination的ClearCallTM VoIP應用現(xiàn)可支持Cavium的OCTEON? Ⅲ多核處理器
      北醫(yī)三院 數(shù)據(jù)流疏通就診量
      ADI推出新一代SigmaDSP處理器
      汽車零部件(2014年1期)2014-09-21 11:41:11
      远安县| 彩票| 思茅市| 安丘市| 金乡县| 泽普县| 闵行区| 唐河县| 和顺县| 治县。| 板桥市| 衢州市| 中山市| 浠水县| 安国市| 德惠市| 新泰市| 精河县| 应用必备| 杭州市| 二手房| 太仆寺旗| 襄樊市| 特克斯县| 财经| 正宁县| 宝鸡市| 甘泉县| 东乡族自治县| 灵寿县| 宽甸| 韩城市| 筠连县| 新邵县| 霞浦县| 乌拉特前旗| 大连市| 泽库县| 灵山县| 克东县| 华池县|