











摘 要:針對卷積神經網絡(CNN)模型中大量卷積操作,導致網絡規模大幅增加,從而無法部署到嵌入式硬件平臺,以及不同粒度數據與底層硬件結構不協調導致計算效率低的問題,基于項目組開發的可重構陣列處理器,面向支持多種位寬的運算單元,通過軟硬件協同和可重構計算方法,采用KL(Kullback-Leibler)散度自定義量化閾值和隨機取整進行截斷處理的方式,尋找參數定長的最佳基點位置,設計支持多種計算粒度并行操作的指令及其卷積映射方案,并以此實現三種不同位寬的動態數據量化。實驗結果表明,將權值與特征圖分別量化到8 bit可以在準確率損失2%的情況下將模型壓縮為原來的50%左右;將測試圖像量化到三種位寬下進行硬件測試的加速比分別達到1.012、1.273和1.556,最高可縮短35.7%的執行時間和降低56.2%的訪存次數,同時僅帶來不足1%的相對誤差,說明該方法可以在三種量化位寬下實現高效率的神經網絡計算,進而達到硬件加速和模型壓縮的目的。
關鍵詞:卷積神經網絡; 數據量化; 可重構結構; 并行映射; 加速比
中圖分類號:TP301文獻標志碼: A文章編號:1001-3695(2024)04-017-1070-07
doi:10.19734/j.issn.1001-3695.2023.07.0378
CNN data quantization method based on reconfigurable array
Zhu Jiayang Jiang Linb, Li Yuanchengb, Song Jiac, Liu Shuaia
Abstract:Convolution operations lead to a significant increase in the network size, which makes CNN models difficult to deploy to the embedded hardware platform, and different granularity data is not coordinated with the underlying hardware structure, which leads to low computing efficiency. Based on the reconfigurable array with the computing units supporting multiple bit widths, through software hardware cooperation and reconfigurable computing methods, this paper defined the quantization threshold using KL divergence and random integer method, proposed a strategy for finding the best basis point, designed an instruction set and a parallel mapping scheme supporting multiple bit widths to realize three distinct bit widths in data quantization. The results show the quantization scheme with 8 bit weight and feature map can compress model parameter quantity to about 50% with 2% accuracy loss. The acceleration ratios of quantifying the test images to three different bit widths reach 1.012, 1.273, and 1.556, respectively, which can shorten the execution time by up to 35.7% and reduce memory access times by 56.2%, while only bringing less than 1% relative error. This indicates that this method can achieve efficient neural network computation under three quantization bit widths, thereby implementing hardware acceleration and model compression.
Key words: convolutional neural network(CNN); data quantization; reconfigurable structure; parallel mapping; acceleration ratio
0 引言
隨著卷積神經網絡的快速發展,越來越多的參數消耗了大量的存儲、帶寬和計算資源。借助GPU加速的CNN應用被廣泛地部署在服務器上,而對于嵌入式平臺,其解決方案仍然過于復雜,難以滿足現場應用需求。目前已有基于ASIC(application specific integrated circuit)或可重構平臺(如field programmable gate array,FPGA)的面向混合精度的CNN加速器設計,采用數據量化方法降低位寬至8 bit甚至更低的同時精度損失可以忽略不計,從而顯著提高計算效率。
文獻[1]提出一種Bit Fusion的加速深度神經網絡的位級動態組合架構,以動態融合的方式匹配單個DNN(deep neural network)層的位寬。該設計能夠實現位級微架構的組合和靈 活映射,但由于基礎運算單元的處理位寬僅有2 bit,對于非二次冪位寬參數的處理場景會提高陣列處理器控制單元和數據通路設計的復雜度,限制其加速性能。文獻[2]設計加速深度學習應用的可配置常系數乘法器,選擇有限的系數乘以輸入值,得到計算結果。該方法減少了資源的使用,在特定的系數下具有最優的結構,但是只能根據預定義的系數集設計乘法電路,故通用性受到了限制。文獻[3]將網絡參數量化到8 bit的同時,引入了誤差敏感的學習率調節方法,并且對量化造成的精度損失問題提出了方向自適應的梯度階段處理方法,但需要較長的搜索階段才能收斂。文獻[4]基于通用框架FILM-QNN(FPGA for intra-layer,mixed-precision quantized DNNs),提出一種層內混合精度量化算法。該算法可以為每層的濾波器分配不同的精度,但過低比特的數據量化無法準確地捕捉到原始模型中的細微特征和模式,從而導致模型性能的下降。
針對上述問題,本文面向神經網絡訓練和推理過程,聚焦不同粒度CNN計算和訪存特性,采用軟硬協同的方式實現混合精度數據量化。首先,提出一種尋找最佳基點位置與KL散度自定義量化閾值、隨機取整截斷誤差結合的動態量化策略。其次在PC端環境下搭建CNN模型,對其進行訓練,得到并提取較好的權值。在多種量化位寬組合方案下,統計其識別準確率和參數量。然后在FPGA端搭建可重構陣列處理器硬件平臺,利用可重構計算方法[5],實現在硬件平臺上通過匯編指令控制推理過程中三種不同位寬的數據量化。最后達到加速卷積運算和模型壓縮的目的。整體技術路線如圖1所示。
1 CNN卷積硬件適配性
卷積神經網絡通常由卷積層、池化層和全連接層等網絡層組成[6],其中卷積層操作占CNN模型總操作的大部分,時空復雜度遠高于其他層,計算性能幾乎決定整個卷積神經網絡的性能。以ResNet-34為例,其網絡結構包含33個卷積層和1個全連接層。因此應更加重視對卷積運算的加速。隨著模型的增大,參數量和計算量也呈指數級增長,當前大規模神經網絡模型參數量普遍達到千萬級甚至上億級別[7]。表1收集了幾種模型參數量、計算量等信息。
從表1可以看到,隨著算法精度的提升,模型中的參數越來越多,計算量越來越大,相應地對硬件實現的要求也會越來越高。CPU(central processing unit)平臺在并行計算方面存在缺陷,GPU平臺不適用移動設備環境,可重構平臺在并行計算方面具有優勢并兼具靈活性,但內部存儲資源仍然非常有限。
表2收集了Xilinx系列的FPGA器件的資源信息,其中Artix、Kintex、Vertix依次是低中高端的FPGA產品,Zynq系列是嵌入式SOC產品。可以看出,主流的FPGA通常僅有幾兆到幾十兆不等的存儲資源[8],有些甚至不能滿足一層卷積層所需存儲容量的需求,常常需要外存(如DDR)進行數據的存取,這會涉及到FPGA外接設備的調試,從而增大系統功耗和計算延時。
量化方法對于存儲資源的節省是顯而易見的,低位寬的定點數能減少內存與計算資源的使用[9]。例如,將32 bit的浮點類型數據量化到16 bit后,其占用的存儲空間將由4 Byte減少至2 Byte,更進一步量化到8 bit的內存占用空間只為原始的25%。由此可見,網絡的低位寬量化能顯著降低模型對存儲資源的需求,從而在有限的存儲資源上加載更多計算單元[10],提高計算的并行度。
2 量化策略研究
2.1 量化計算模型
量化計算模型采用線性模型對網絡中的輸入以及權值進行量化,計算過程如式(1)所示。其中:Xfloat表示真實的浮點值;Xquantized表示量化后的定點值;Xzero_point表示量化零點;Xscale表示量化尺度。
若Xquantized、Xfloat超出各自可表示的最大范圍,則需進行截斷處理。本文采用隨機取整的方法進行截斷處理,既能保證模型性能,又能使用更少的內存空間。給定原數x和其定點表示〈I,F〉(前者表示數據定點后的整數位寬,后者表示小數位寬),將[x]定義為小于或等于x(=2-F)的最大整數倍,并采用如下舍入方案,如式(2)所示。其中:p表示概率;Δ表示給定的定點數格式能夠表示的最小正數。隨機舍入round(x,〈I,F〉)是以一定概率(與向下取整點的距離成正比)確定向上還是向下取整。這樣設計的優勢是量化后概率分布的期望還是原來的高精度浮點數X。
2.2 參數定點化
數據類型對硬件設計的一致性和實現的關鍵度量指標都有直接的影響。在硬件平臺上實現定點運算單元比浮點運算單元效率高得多[11],因此CNN加速器大多使用定點數而不是浮點數。本節通過對卷積層的權值和特征圖參數定點動態量化,將卷積層的浮點卷積計算轉換為高效的定點卷積計算,提高運算速度。圖2是參數定點動態量化的示意圖,其計算過程可用式(3)表示。
其中:S表示符號位;B是量化的位寬長度;l是不同卷積層的量化指數位長度,即階碼;xD為動態量化后的定點數。
對于數據量化而言,關鍵在于確定量化后整型數據中的小數點位置,即基點位置階碼l。同等數據位寬下,l越大,數值范圍越小,但精度越高,否則相反。
2.2.1 權值偏置定點化
CNN模型的權值大致對稱分布在零點兩側,且不同卷積層的權值具有顯著的動態范圍,若將所有層的參數量化為同一個范圍,會造成較大的精度損失。本節提出權值偏置定點策略,試圖在給定位寬的情況下找到每層中的最佳基點位置。這是硬件友好的,因為只需要額外的移位器來對齊數據。
其中:xfloat表示在CNN訓練中某層權值參數的原始浮點值;xD表示在給定階碼l的情況下對xfloat定點后再轉換回浮點數的值。兩者差值最小的情況下得到該層的最佳基點位置。
實現過程如圖3所示。首先使用浮點數訓練網絡,收集每一層特征圖和權值參數的統計信息,以獲得其數值直方圖。然后將每種可能的基點位置應用于網絡,以獲得一個定點格式層,并在量化后測試其準確性。最后,在使用貪婪策略對所有層進行量化之后,微調基點以進一步提高精度。
2.2.2 特征圖參數定點化
數據量化在定點數與原浮點數之間建立有效的映射關系。圖4(a)中映射的邊界是原始數據的極值,實驗證明,絕對值極值量化的模型準確度大大降低[12]。本節采用KL散度自定義閾值T,并以其構建映射關系(圖4(b))。
32-bit浮點數映射到n-bit定點數即重新編碼[13],KL量化將浮點數定點數抽象成兩個分布,并用閾值|T|來更新。散度可以衡量兩個分布的相似性,值越小分布越相似。如式(5)所示,p[x]和Q[x]是量化前后兩個隨機變量的離散概率分布,x為量化到不同位寬的參數個數。式(5)取最小值時,得到閾值T。通過式(6)可以得到每層的量化尺度fl,結合式(3)可得最佳基點位置l。
3 硬件平臺量化策略研究
3.1 量化位寬選取
考慮硬件資源消耗,本節針對卷積運算主要是乘加操作且計算流程固定的特點[14],綜合實現乘法器和加法器,并調整輸入端口位寬,統計不同位寬下乘法器和加法器消耗的LUT數量,如圖5所示。隨著數據位寬的增加,加法器與乘法器所消耗的LUT也在增加,但7 bit位寬以下,資源消耗幾乎不再改變。過低的量化位寬會引起較高的計算誤差,為達到資源與精度的平衡,結合硬件平臺特點,本文將量化位寬選定在32 bit、16 bit、8 bit三種數據寬度。
3.2 可重構處理單元設計
3.2.1 處理器陣列總體結構
圖6為項目組開發的基于H型傳輸網絡的可重構陣列處理器。主機接口將上位機命令傳輸到全局控制器,后者將接收的信息分為數據流和指令流,通過H樹網絡進行調度并合理分配到每個PE(process element)中。輸入輸出存儲器用于保存計算時的輸入數據和輸出結果。
每組4×4的PE陣列構成一個簇,基于分布式共享存儲結構,相鄰PE之間通過鄰接互連傳遞數據[15],相鄰簇間通過路由方式傳遞數據。單個PE被設計為取指、譯碼、執行、寫回的四級流水線結構,以及指令存儲(instruction memory,IM)、數據存儲(data memory,DM)、指令寄存(instruction register,IR)、寄存器組(RegFile)和鄰接互連控制器等。其中,指令存儲和數據存儲的深度均為512,位寬分別是30 bit和32 bit。
取指單元從IM中獲取指令并傳輸到IR,譯碼單元根據操作碼和寄存器信息判定指令類型和數據來源,并送入執行單元。執行單元從RegFile或DM中讀取數據后執行算術邏輯、分支跳轉和粒度劃分等指令,計算完成后將結果送入寫回單元。寫回單元根據譯碼得到的目的寄存器地址選擇將數據送入寄存器。
該處理器通過可重構指令集實現各類應用,充分挖掘算法并行度,在可編程性和性能之間保持了平衡。軟件重構既能滿足量化動態位寬的靈活性及速度需求,又能避免專用器件較高的硬件資源消耗,具有較高的靈活性。
3.2.2 卷積單元架構設計
卷積運算加速的硬件設計重點考慮運算單元的并行性[16]。卷積操作數據輸入順序固定,輸出操作相同,可以考慮流水線并行方式執行。在嵌入式設備中完全實現卷積核之間與不同層神經網絡的并行執行幾乎是不可能的,本節針對最常用的3×3卷積核內的并行化完成設計,流水線運算架構如圖7所示。W代表核內參數,I代表輸入特征圖參數。卷積核內9個參數和9個輸入特征圖參數同時進行乘加運算,整體計算量包含9次乘法和8次加法。
3.2.3 乘法處理結構設計
卷積可以分解為連續的乘法和加法,其中加法較為簡單,在此不進行贅述。乘法操作為定點數乘法,當乘法因子放大x倍時,結果會放大x2倍。為統一計算精度,需要把相乘結果縮小x倍。以16 bit乘法(MUL-16)為例,計算結構如圖8所示,MUL-32、MUL-8也基于此設計。與一般的16 bit乘法輸出32 bit結果不同,該乘法結構截去最高位和低15 bit,輸出16 bit結果。因為存在截位誤差,所以要對數據四舍五入。截位處理模塊Cut_Bit根據后15 bit數值進行四舍五入得到截位處理后的進位,并與乘法計算的[30 ∶ 15]位數字相加,得到乘法計算的輸出。
3.3 粒度配置指令設計
為了將不同精度的卷積算法高效地映射到可重構陣列處理器,本節采用自頂向下的方法設計數據量化動態配置指令(表3)及其實現結構(圖9、10),以硬件平臺的并行計算實現不同位寬的靈活配置。
動態配置指令把計算粒度劃為8 bit、16 bit和32 bit,針對不同粒度提出相應的并行處理方法。數據組合/拆分命名為COMB/SPL,并行加法/乘法指令命名為PADD/PMUL。每種指令分為三類不同粒度的操作,其數字代表能夠并行操作的數據量。例如,COMB4指令從數據存儲器中以RS的值作為首地址依次讀取4個數據,然后每個數據取低8 bit,遵循先讀取先存放的原則依次完成數據拼接。SPL4指令把1個32 bit的數據分成4個8 bit數據,從目的寄存器RD的存儲地址開始寫入,每寫入一個數據地址加1。當指令中的數字改變時,意味著操作數的粒度發生了變化,即可實現計算粒度的動態配置。
動態配置結構基于四級流水線(取指、譯碼、執行、寫回)設計如圖6所示。數據組合和數據拆分互為逆過程,讀地址從數據存儲器讀出數據并賦值到信號idmu_data_rdata,使用寄存器完成輸入數據和控制信號的暫存。根據輸入的控制信號wbc_comb1/2/4、wbc_spl1/2/4分別完成COMB、SPL指令的操作。并行乘加模塊中,根據不同的計算粒度要求,在譯碼級信號opc和寫回級信號wbc的共同作用下,通過多路選擇器執行不同位寬的并行計算。
本節基于陣列處理器實現三種數據位寬的靈活配置,以此來展現良好的可重構性。位寬配置通過調整數據信號的位寬,提供一種靈活的方式來適應不同的計算需求和性能要求。可重構性則提供了動態配置和重新配置的能力,使位寬配置成為其中一種重要的配置手段。通過位寬配置和可重構性的結合,在不同應用需求和算法特性的情況下,可以滿足特定的設計要求和性能目標。
3.4 可重構平臺映射方案設計
3.4.1 數據預處理
計算模塊通過路由檢索指令接收存儲器中的輸入數據,并鄰接互連握手傳遞至預處理模塊,PE01、PE02、PE20握手后開始分配數據值。預處理就是將輸入特征圖數據和權值按照前文設計的計算粒度配置指令進行分割組合,形成一個新的32 bit數據,從而實現:8 bit計算粒度支持4個數據并行計算,16 bit計算粒度支持2個數據并行計算,32 bit計算粒度完成1個數據的計算,充分發掘數據集并行度。
3.4.2 PE映射
本節選用3×3卷積核,以適應CNN模型中的大多數層,其余尺寸卷積核可用3×3卷積核替代。同時基于卷積核內部并行計算(圖7),給出在可重構陣列上的映射關系,如圖11所示。
首先,將卷積操作分為三組,每組內分為1個預處理PE和3個乘加操作(MAC)PE。其中PE01、PE02、PE20執行數據預處理操作,剩余9個PE完成乘加操作,實現三個卷積操作中的1×3向量乘操作。組內相鄰PE計算模式相同,采用鄰接互連的蛇形數據傳輸方式,所以數據傳輸延遲得到了降低,數據計算的等待時間變少;其次,組內計算結果送入PE30、PE31、
PE33內執行加法操作,分組計算完成后,PE30數據傳入PE31繼續進行加法操作;最后,PE31和PE33相加,由PE32輸出計算結果。在單個簇中,使用16個PE并行完成3次卷積運算操作,PE的利用率達到最高。
4 實驗及結果分析
4.1 動態量化訓練測試
4.1.1 實驗環境與數據集
在EMnist和Cifar-10數據集上,使用LeNet和AlexNet驗證前文的量化方法。EMnist在數據集接口上與Mnist保持一致,該數據集將大小寫字母組合在一起,有A(a)~Z(z)共26組不同的手寫字母圖片,包括120 000組訓練圖像和20 000組測試圖像。Cifar-10數據集為3通道的彩色圖片圖像,包括50 000張訓練圖像和10 000張測試圖像,大小為32×32,由bird、cat、deer、dog等10組不同類別圖像組成,每個類別圖片6 000張,其中1 000張圖片用于測試。
4.1.2 實驗結果與分析
將(16,8)表示為權值數據和特征圖數據,分別量化為16 bit和8 bit,其余位寬情況同理。表4給出了在不同量化方案下模型訓練后的識別準確率和參數量的變化情況,并計算得出其準確率變化和壓縮率。
由表4可知,量化前兩種網絡的精準度分別為97.17%和96.13%,經過模型壓縮后網絡的精準度最多減少3.36%和2.04%;量化前的模型參數量分別為247.6 KB和121.9 MB,其壓縮率最大可以達到52.9%和49.7%。由此可得出結論,在損失一定的訓練精度情況下,采用本文設計的數據量化策略在軟件測試中可以有效壓縮模型參數量。同時本文還發現,權值的位寬變化對計算結果的影響更大。特征圖經過多次卷積操作后,其特征表示會逐漸被壓縮和抽象,較低的位寬可能對最終的計算結果產生較小的影響,而權值的位寬減少會導致模型在學習和推理過程中失去一些細節信息,從而影響模型的性能。因此在量化位寬的選擇上,權值的位寬一般不小于特征圖位寬。
4.2 可重構陣列推理卷積測試
為驗證本文提出的基于并行計算的數據量化方法,根據已訓練模型提取出權值等參數值,使用卷積算法進行推理測試。首先,利用Questasim對卷積算法基于可重構陣列處理器的并行映射方案進行仿真。然后,收集仿真數據并使用MATLAB軟件搭載分類器在EMnist數據集上進行推理實驗。最后,利用Vivado對映射后的陣列結構進行綜合實現及結果評估,并基于Xilinx公司的ZYNQ-7000AP系列ZC706評估套件進行FPGA測試。
4.2.1 QuestaSim仿真
為驗證本文方法的可行性及其計算結果的準確性,本節基于QuestaSim平臺搭建可重構陣列結構進行驗證。將輸入特 征圖數據寫入到可重構陣列的片外存儲器中,再將翻譯后的卷積算法二進制指令映射到當前簇的指令mif中,主處理器根據指令信息對PE進行指令下發,完成任務的動態調度,仿真結果如圖12所示。
從表5可以看出,在使用計算粒度配置指令后,大部分性能指標都得到了改善。其中,訪存次數減少了1.2%、33.4%和56.2%,輸出結果的平均相對誤差增加不到1%。單點輸出和全部輸出的加速度比均為1.012、1.273和1.556,其中單點輸出表示輸出一個采樣點所需的時鐘周期,全部輸出表示完成所有采樣點輸出所需的時鐘周期,算法執行時間分別減少了1.2%、21.4%、35.7%。
本節還基于仿真輸出的圖像數據及其保存的二進制文件進行推理測試。首先將FPGA端仿真圖像數據輸入到MATLAB環境中,確保正確讀取圖像并將其存儲在適當的變量中。其次將預先訓練好的LeNet模型加載進MATLAB,同時針對該模型各網絡層作出必要的裁剪,使其相當于一個分類器。最后,基于EMnist數據集完成推理實驗。部分結果如圖13所示。
本實驗結果表明,通過匯編指令來實現粒度配置的重構思路可以根據需求調整位寬,以適應不同的計算需求、資源約束和性能要求。基于粒度配置的可重構處理單元可以提高算法的兼容性,并在一定計算誤差允許范圍內減少算法的執行時間,同時本文設計的三種位寬的數據量化也可以支持常見的推理應用。
4.2.2 原型驗證與實時性分析
在Vivado 2018.3中搭建可重構陣列處理器平臺,將算法指令寫入處理器的片外存儲器中,對整個結構進行綜合實現,添加固有IP核嵌入式邏輯分析儀(integrated logic analyzer,ILA)對卷積結果進行板級采樣,表6給出了原型系統資源使用情況。可重構陣列處理器配置信息的改變只會改變硬件電路的功能,不會對硬件資源消耗造成影響,所以當可重構陣列處理器中PE的數量保持不變時,硬件資源的使用情況不隨配置信息的改變而變化。得益于可重構陣列結構的靈活性優勢,8 bit/16 bit/32 bit量化位寬均占用一組4×4的PE陣列便可完成運算,當涉及到具有更高計算復雜度的算法時,可在該架構上對PE陣列擴展。
可重構陣列在硬件資源配置為1個簇,即16個PE時,使用的LUT資源為69 088,FF資源為27 385,BRAM資源為136,DSP資源為256。各種資源的占用率均在30%左右,閑置資源為擴展可重構陣列處理器的功能和陣列數量提供了足夠的空間。
電路設計的實時性與頻率之間存在密切的關系,具有高頻率的電路系統可以更快地響應輸入信號的變化。本節利用STA(靜態時序分析)方法求解系統最小延時,求倒得到最大時鐘頻率,結果如表7所示。
從表7可以看出,整體電路工作頻率為133.5 MHz,最小延時7.490 ns。執行模塊承擔并行乘加等計算任務,計算延時最大,頻率最低。互連線路延遲等因素通常會導致整體延時大于各模塊的延時之和,但本文設計并不如此。一方面,本文的流水線架構可以將任務劃分為多個模塊,不同模塊在時鐘的驅動下依次執行各自任務。每個模塊選擇最短路徑來優化流水線各模塊互連,進而分攤任務延遲。另一方面,在邏輯綜合過程中,開發工具會對電路進行各種優化,如邏輯優化、時序優化和布局優化等,以此改善電路的性能和資源利用率。這些優化會減小某些模塊的延遲,使整體延遲小于各模塊延遲之和。
4.3 實驗結果對比
本文方法與國內外基于FPGA實現的數據量化配置結構對比如表8所示,表中對比了不同器件型號下硬件結構的工作頻率、計算粒度和硬件資源消耗情況。文獻[17]充分利用FPGA的計算能力,采用收縮陣列結構在FPGA上實現了CNN算法,在較高的工作頻率下實現8~16 bit位寬的靈活計算,但相應的硬件資源消耗也更多。文獻[18]的設計采用1 024個并行的1 bit乘累加處理器實現了1~16 bit的任意粒度乘加計算,雖然該設計通過流水線策略降低了組合邏輯產生的延時,但因為互聯的乘累加單元過多,導致工作頻率只能保持在100 MHz。文獻[19]中硬件電路的工作頻率與本文設計接近,相關硬件資源的消耗也更少,但其僅針對快速傅里葉變換算法(fast Fourier transform,FFT)進行了計算粒度的動態配置,未考慮其他算法的計算需求,導致其通用性和可擴展性不足。文獻[20]提出一種可重構的微處理單元,實現了在2~8 bit的并行乘法和并行加法操作。與本文相比均為可重構結構,且可重構微處理單元的工作頻率略高于本文設計,在硬件資源消耗上也與本文相當,但是本文設計的最大位寬為32 bit,具有比文獻[20]設計的2~8 bit粒度更高的計算精度,在需要高精度量化(如權值)場景下更具優勢。本文方法的計算粒度的跨度更大,靈活性更高,支持可重構計算,可以滿足在1~32 bit內大多數算法的數據量化和近似計算,同時在硬件資源消耗方面也具有優勢,因此能夠在可重構硬件平臺上滿足不同算法的計算需求。
5 結束語
針對卷積神經網絡中不同層計算粒度需求不同的問題,為達到模型壓縮的目的,本文研究參數定點與數據量化方法,設計支持多精度并行乘加運算的可重構處理單元,實現了適應于8 bit/16 bit/32 bit三種不同位寬的匯編指令及其計算結構,并基于可重構陣列處理器進行算法映射。實驗結果表明:將權值和輸入特征圖數據分別量化到8 bit位寬下最高可壓縮56.3%的參數量;可重構陣列可以在133.5 MHz的工作頻率下實現三種數據位寬的靈活配置,最高可達到1.5倍的加速比,并縮短了35.7%的算法執行時間。本文方法不僅可以以較高的計算精度在硬件平臺上實現三種不同數據位寬的靈活計算,而且在硬件資源消耗量方面也具有優勢。后續研究將對計算粒度動態配置的自由度和硬件結構進行優化,在數據位寬不變的情況下,通過將多個PE靈活地組合,實現更粗粒度的數據計算,進一步提高計算精度和執行效率。
參考文獻:
[1]Sharma H, Park J, Suda N,et al.Bit Fusion: bit-level dynamically composable architecture for accelerating deep neural networks[C]//Proc of the 45th Annual International Symposium on Computer Architecture. Piscataway, NJ: IEEE Press, 2018: 764-775.
[2]Faraone J, Kumm M, Hardieck M,et al.AddNet: deep neural networks using FPGA-optimized multipliers[J].IEEE Trans on Very Large Scale Integration Systems , 2020, 28 (1): 115-128.
[3]Zhu Feng, Gong Ruihao, Yu Fengwei,et al.Towards unified int8 training for convolutional neural network[C]//Proc of IEEE/CVF Conference on Computer Vision and Pattern Recognition. Piscataway, NJ: IEEE Press, 2020: 1969-1979.
[4]Sun Mengshu, Li Zhengang, Lu A,et al.FILM-QNN: efficient FPGA acceleration of deep neural networks with intra-layer, mixed-precision quantization[C]//Proc of the 28th ACM/SIGDA International Symposium on Field-Programmable Gate Arrays. New York: ACM Press, 2022: 134-145.
[5]Lu Yanan, Liu Leibo, Zhu Jianfeng,et al.Architecture, challenges and applications of dynamic reconfigurable computing[J].Journal of Semiconductors , 2020, 41 (2): 4-13.
[6]劉運韜, 李淵, 劉遜韻. 基于可重疊混淆樹的卷積神經網絡[J]. 計算機應用研究, 2022, 39 (3): 938-942. (Liu Yuntao, Li Yuan, Liu Xunyun. CT-CNN: overlapping confusion tree based convolutio-nal neural network[J].Application Research of Computers , 2022, 39 (3): 938-942.)
[7]鞏杰, 趙爍, 何虎, 等. 基于FPGA的量化CNN加速系統設計[J]. 計算機工程, 2022, 48 (3): 170-174,196. (Gong Jie, Zhao Shuo, He Hu,et al.Design of quantized CNN acceleration system based on FPGA[J].Computer Engineering , 2022, 48 (3): 170-174,196.)
[8]Savio P, Scionti Vitali G,et al.Accelerating legacy applications with spatial computing devices[J].The Journal of Supercompu-ting , 2023, 79 : 7461-7483.
[9]Huang Chenglong, Liu Puguang, Fang Liang. MXQN: mixed quantization for reducing bit-width of weights and activations in deep convolutional neural networks[J].Applied Intelligence,202 51 : 4561-4574.
[10]Sousa L. Nonconventional computer arithmetic circuits, systems and applications[J].IEEE Circuits and Systems Magazine , 202 21 (1): 6-40.
[11]Przyby A. Fixed-point arithmetic unit with a scaling mechanism for FPGA-Based embedded systems[J].Electronics , 202 10 (10): 1164.
[12]Migacz S. 8-bit inference with TensorRT[EB/OL]. (2017-05-08). https://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf.
[13]雷小康, 尹志剛, 趙瑞蓮. 基于FPGA的卷積神經網絡定點加速[J]. 計算機應用, 2020, 40 (10): 2811-2816. (Lei Xiaokang, Yin Zhigang, Zhao Ruilian, FPGA-based convolutional neural network fixed-point acceleration[J].Journal of Computer Applications , 2020, 40 (10):2811-2816.)
[14]常立博, 張盛兵. 面向混合量化CNNs的可重構處理器設計[J]. 西北工業大學學報, 2022, 40 (2): 344-351. (Chang Libo, Zhang Shengbing. A reconfigurable processor for mix-precision CNNs on FPGA[J].Journal of Northwestern Polytechnical University , 2022, 40 (2): 344-351.)
[15]Shan Rui, Jiang Lin, Wu Haoyue,et al.Dynamical self-reconfigurable mechanism for data-driven cell array[J].Journal of Shanghai Jiao Tong University(Science),202 26 (4): 511-521.
[16]Sun Sh Jiang Hanjun, Yin Mingchao,et al.Design of efficient CNN accelerator based on Zynq platform[C]//Proc of the 15th International Conference on Computer Science and Education. Piscataway, NJ: IEEE Press, 2020: 489-493.
[17]Wei Xuechao, Yu Codyhao, Zhang Peng,et al.Automated systolic array architecture synthesis for high throughput CNN inference on FPGA[C]//Proc of the 54th ACM/EDAC/IEEE Design Automation Conference. Piscataway, NJ: IEEE Press, 2017:1-6.
[18]Maki Miyashita D, Nakata K, et al. FPGA-based CNN processor with filter-wise-optimized bit precision[C]//Proc of IEEE Asian Solid-State Circuits Conference. Piscataway, NJ: IEEE Press, 2018: 47-50.
[19]Liu Weiqiang, Liao Qicong, Qiao Fei,et al.Approximate designs for fast Fourier transform(FFT) with application to speech recognition[J].IEEE Trans on Circuits and Systems I: Regular Papers,2019,66 (12): 4727-4739.
[20]Chen Yue,Du Huimin,Chang Libo. A reconfigurable micro-processing element for mixed precision CNNs[C]//Proc of the 14th International Conference on Measuring Technology and Mechatronics Automation. Piscataway, NJ: IEEE Press, 2022: 1-5.
收稿日期:2023-07-05;修回日期:2023-08-20基金項目:科技創新2030-“新一代人工智能”重大項目(2022ZD0119005);國家自然科學基金重點資助項目(61834005)
作者簡介:朱家揚(1999—),男,河南開封人,碩士研究生,主要研究方向為計算機體系結構、原型系統設計;蔣林(1970—),男(通信作者),陜西楊凌人,教授,博導,博士,主要研究方向為專用集成電路設計、計算機體系結構(jianglin@xust.edu.cn);李遠成(1981—),男,河南開封人,碩導,博士,CCF會員,主要研究方向為計算機體系結構、人工智能;宋佳(1999—),女,陜西咸陽人,碩士研究生,主要研究方向為神經網絡;劉帥(1998—),男,陜西延安人,碩士,主要研究方向為集成電路設計.