本站小編為你精心準備了可重構電路圖編譯器設計分析參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
【摘要】本文基于AI領域面向終端應用中使用非常廣泛的CNN推理算法,以FPGA可重構電路芯片為硬件載體,設計一款可重構電路的圖編譯器,用來實現特定CNN網絡定制加速的功能,最大化的提高硬件電路利用效率。
目前硬件加速器中,分為如下幾大派別:(1)采用NVIDIA公司的云產品,但是功耗太高,延遲很大,在端側無法應用。(2)采用AI芯片,苦于算法還在不斷更新中,流片成本和風險高。(3)采用可重構電路結構,那就是FPGA芯片作為加速電路,FPGA加速電路本身具有一定的重構能力,但是面對眾多類型的神經網絡,最常用的屬于CNN卷積神經網絡,因此我們把目光投向了CNN神經網絡的推理加速任務上。考慮到CNN推理加速網絡,模型也繁多,如果做到既能考慮FPGA芯片的靈活性,又能準確適配各種神經網絡,面對這種需求和難點,本文提出了一種電路可重構的圖編譯器架構,對CNN神經網絡進行適配和優化,然后生成一組配置CNN加速器的參數接口,方便調度CNN加速器進行離線推理加速。
1CNN推理算法原理
CNN推理算法大部分是大量的密集乘加計算,該算法包括計算量最密集的卷積層、Relu激活層,池化層以及全連接層等信息。這里定義不同類別的層,命名為算子。面對大量的算子,每層算子中參數不一致等情況,國內外頂尖公司提出了TensorFlow、Caffe,Torch等深度學習平臺,將深度學習網絡層進行抽象和封裝,方便研發人員使用平臺,將權重信息,配置文件以及輸入圖像FeatureMaps信息導入到平臺后,即可進行大面積計算,這種方式適合GPU、CPU等平臺芯片產品,對于FPGA芯片來說,直接移植平臺架構會導致FPGA芯片利用率偏低,因此本文提出了電路可重構圖編譯器CRGC,目的在于將CNN網絡層數進行抽象化、網絡優化、數據量化、寄存器指令流生成等方式,最后得到能方便做FPGA加速的參數堆。一種可重構電路圖編譯器設計文/邱超1馮肖雄2本文基于AI領域面向終端應用中使用非常廣泛的CNN推理算法,以FPGA可重構電路芯片為硬件載體,設計一款可重構電路的圖編譯器,用來實現特定CNN網絡定制加速的功能,最大化的提高硬件電路利用效率。摘要除了配置FPGA對CNN網絡加速的參數外,還要配置FPGA電路可重構的參數信息,這樣能夠最大性能挖掘FPGA天然的電路可重構特性,接下來會重點介紹。
2電路可重構圖編譯器實現結構
2.1工作流程
電路可重構圖編譯器的重點在于,不僅需要配置CNN每層網絡信息,內存分配信息,定點化信息等參數數據。更為關鍵的是還提供了針對CNN加速器硬件ZCNNA的電路重構指令。接下來參考圖1的流程,重點介紹圖編譯器的工作流程。當外部權重數據、FeatureMap數據輸入到圖編譯器時,首先需要經過參數解析模塊,將參數、權重信息進行抓取,解析來進行網絡層優化工作,具體優化方法后文會介紹。網絡優化結束后,進行網絡參數的定點化,主要包括權重和FeatureMap兩類信息。接下來是寄存器配置流生成模塊,這部分包括網絡參數信息和可重構電路信息參數,可重構電路信息參數有,卷積核的KernelSize層信息,是否有Pooling層信息,是否有FC全連接層信息等模塊,FPGA會根據生成的配置信息,針對特定的網絡,生成不同的電路結構,進而最大化提升電路工作效率,并且達到降低功耗的目的。
2.2網絡優化
CNN加速器平臺中,優化的任務分成前端軟件優化和后端電路優化兩種,本節介紹軟件優化的方法。一般Conv卷積層后面的Relu層、Norm層等信息,可以通過合并的方法,直接合成Conv層,通過這種方式再網絡送給硬件加速器FPGA之前,達到了預處理加速的效果,從源頭上節省了計算量和帶寬開銷。
3結論
本文提出了基于電路可重構方式的圖編譯器框架,與GPU、ASIC、CPU等實現CNN的硬件加速相比,充分發揮了FPGA電路可重構的技術優勢,針對特定網絡生成定制化電路結構,峰值算力得到了很大提升,功耗也得到了有效降低,是一種非常高效的技術手段。
作者:邱超 馮肖雄 單位:中興通訊股份有限公司技術規劃部