FPGA上優(yōu)化的DNN框架介紹_第1頁
FPGA上優(yōu)化的DNN框架介紹_第2頁
FPGA上優(yōu)化的DNN框架介紹_第3頁
FPGA上優(yōu)化的DNN框架介紹_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

FPGA上優(yōu)化的DNN框架介紹低計算成本技術首先,我們將討論如何降低計算成本本身。量化量化是權重或激活(每層的輸入和輸出)中比特的減少,通常在fp32中構建。眾所周知,深度學習在推理過程中能夠以比訓練過程更低的位精度進行處理,盡管這取決于模型,但即使是8位定點數(shù)和位數(shù)更少的定點數(shù)也具有實用的精度。FPGA與1位左右的低精度網(wǎng)絡特別兼容,因為可以使用LUT將卷積運算替換為查找表。修剪修剪是在卷積層等使用的權重矩陣中,稀疏化(移至0)足夠接近0的值的過程。足夠接近0的系數(shù)對卷積運算的最終結果影響很小,因此將其設置為0不會顯著影響推理結果。在實踐中,我們會設置剪枝的閾值等參數(shù),給出測試模式,檢查允許的誤差范圍。修剪主要應用于兩個粒度。1、粗粒:每通道2、細粒度:單位因子1的粗粒度修剪只是簡單地刪除了通道,因此可以在不特別注意計算硬件的情況下提高速度。另一方面,2的細粒度修剪只會增加矩陣內(nèi)部0元素的數(shù)量,同時保持矩陣的大小不變。在這里我們將限制在這個級別,但是還有其他方法可以減少計算量,例如拓撲調整可以減少模型本身的計算量。FPGA上優(yōu)化的DNN框架在GPU上做深度學習時,無論前端選擇哪種框架,后端幾乎都是跑NVIDIA優(yōu)化過的cuDNN庫(/cudnn)。cuDNN庫經(jīng)過優(yōu)化,幾乎可以榨干GPU的峰值性能。出于這個原因,在不實現(xiàn)卷積等功能的情況下在后端使用這些庫是很常見的。FPGA也是如此,例如Xilinx提供了一個名為Vitis-AI的推理框架,而英特爾FPGA提供了OpenVINO工具包。在本節(jié)中,根據(jù)DPUVitis-AI中用于邊緣設備DPUDPU是DeepLearningProcessingUnit的縮寫,顧名思義就是深度學習的處理器。與我們目前創(chuàng)建的架構不同,其中電路來處理每一層,DPU實現(xiàn)了一個巨大的算術單元塊,并通過在算術單元塊上連續(xù)執(zhí)行每一層的處理來執(zhí)行推理過程。DPU的硬件架構如下圖所示。如圖所示,DPU具有類似于普通處理器的架構,例如指令調度器。DPU只支持8bit的量化網(wǎng)絡,其量化工具在Vitis-AI(原DNNDK)中提供。下面我們挑選DPU架構中的一些有趣的點簡單說一下。數(shù)據(jù)并行度提取在上一篇文章中,我們提取了像素之間和輸出通道之間的2軸數(shù)據(jù)并行性以進行加速。DPU還提取輸入通道之間的數(shù)據(jù)并行性。DPU有幾種配置,可以根據(jù)要實現(xiàn)的芯片大小進行更改,如下表所示。性能最高的B4096架構共有2048個算子,像素并行度8,輸入通道方向16個,輸出通道方向16個。雖然有2048個運算單元,但總共是4096次運算/時鐘,因為每個運算單元同時執(zhí)行乘法和加法。上次創(chuàng)建的架構中,運算次數(shù)最多的卷積層只有4*8=32個運算單元,兩個卷積層加起來就有32+16=48個單元,性能簡直快了近40倍,區(qū)別蠻大的。用于DSP的DDR(雙倍數(shù)據(jù)速率)在DPU中,通過僅以雙倍工作頻率運行DSP來提高性能,如下圖所示。每個周期可能的操作數(shù)翻了一番,從而使DSP的使用量減半。DPU方面主要針對ZynqUltrascale+,工作頻率為300~400MHz。所以DSP運行在600-800MHz范圍內(nèi),速度非常快。特別是,這種時鐘分頻的優(yōu)化在像這次這樣用HLS開發(fā)時很難重現(xiàn),需要在RTL中進行調整。另外,在像DPU這樣的架構中,每個周期持續(xù)向計算單元提供數(shù)據(jù)是一個問題,但我的印象是這也得到了很好的優(yōu)化。這是作者的經(jīng)驗,但是在對1K圖像進行3×3卷積時,運算單元能夠在90%以上的周期內(nèi)運行(當通道數(shù)是并行數(shù)的倍數(shù)時)。由于很難創(chuàng)建優(yōu)化到這種程度的HLS,因此在FPGA上實際執(zhí)行深度學習時,在某些框架上執(zhí)行推理會更有效。但是,我認為有些模式在現(xiàn)有框架上無法很好地處理,例如使用更優(yōu)化的架構來切換每一層的量化位數(shù)。在這種情況下,可能需要構建自己的硬件來處理數(shù)據(jù)。總結在本系列教程中,我們專注于在FPGA上實際編寫代碼和執(zhí)行處理。說到FPGA開發(fā),大家可能會有這樣的印象,寫RTL很難,還得懂硬件。然而,就像我一開始創(chuàng)建的推理電路一樣,如果我不關心性能,我可以將高級綜合應用于普通的C代碼并且它可以工作。

此外,在隨后的加速中,我們主要通過簡單地添加#pragma.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論