天天看點

使用專用硬體加速深度卷積神經網絡

英文論文連結:http://research.microsoft.com/apps/pubs/default.aspx?id=240715

翻譯:蔔居

轉載請注明出處:http://blog.csdn.net/kkk584520/article/details/47711755

【摘要】

最近在多層卷積神經網絡的突破導緻了識别任務(如大量圖檔分類和自動語音識别)準确率的大幅提升【1】。這些多層神經網絡很大,很複雜,需要大量計算資源來訓練和評估【2】。然而這些需求發生在目前這樣一個尴尬的時刻,商業處理器性能增長十分緩慢。

專用硬體形式有gpgpu,fpga和asic,提供了通往處理能力和高能效的坦途。微軟通過使用fpga增強型伺服器(類似已經內建到微軟資料中心的硬體【3】)加速深度卷積神經網絡駕馭了專用硬體。

開始隻是在中等規模fpga上實作了單節點cnn加速器,展示了優于遺忘fpga設計和高端gpgpu的性能,降低了功耗。未來會通過低延遲通信互聯多個fpga,進一步可能訓練和評估模型。

【背景】

目前深度卷積神經網絡一般組織為交替的卷積層、最大池化層後面加一系列稠密的全連接配接層,如圖1中經典的拓撲圖所示。

使用專用硬體加速深度卷積神經網絡

每個3d立方體表示一層的輸入,送入下一層會變換為新3d立方體。在例子中有5個卷積層,3個最大池化層,以及3個全連接配接層。

本文中我們主要讨論3d卷積問題,盡管其他操作如pooling和全連接配接層也會涉及。圖2展示了3d卷積的基本模型。一個n x n x d的3d輸入立方體被h個k x k x d維的卷積核卷積,輸出間隔為s,每個3d核用類似滑動視窗的形式移動(移動偏移量由參數s定義)。每次移動,3d卷積核的每個權值同映射到3d輸入立方體的輸入值進行乘加,卷積後,可選地進行pooling操作(由參數p和s定義)用來下采樣卷積輸出,選擇視窗的最大值或平均值

使用專用硬體加速深度卷積神經網絡

【在資料中心加速深度卷積神經網絡】

2014年微軟宣布了catapult項目,成功展示了用fpga在資料中心使bing ranking加速了近2倍【3】。利用這個基礎,我們團隊在微軟研究院開發了高吞吐cnn fpga加速器,在很低的伺服器功耗下獲得了優異性能。圖3給出了用于高效計算卷積層前向傳播的cnn fpga加速器高層次概覽。

使用專用硬體加速深度卷積神經網絡

關鍵特征如下:

(1)軟體可配置的引擎,支援多層運作時配置(無需硬體重程式設計);

(2)高效資料緩沖體制和片上分發網絡,将片外訪存降至最低;

(3)處理單元(pe)構成的空間分布陣列,可很容易擴充到上千個單元;

在正常操作下,cnn加速器可以擷取輸入圖像,連續處理多個卷積層。在初始階段,輸入圖像像素從本地dram流入片上,存儲到多個bank輸入緩沖區。之後,資料流入多個pe陣列,實作3d卷積步驟中的獨立點乘操作。頂層控制器完成序列化、尋址、分發資料到每個pe陣列。最終,累加結果發送到特定片上網絡,将計算輸出循環送入輸入緩沖區用于下一輪的計算(雖然圖3中沒有顯示,但存在額外的邏輯處理pooling和relu操作)。

圖3中高亮的加速器位于雙插槽xeon伺服器,裝備一個catapult fpga卡,包括中等規模stratix d5 fpga和8gb ddr3-1333[3]。每個fpga卡通過pcie 3x8支援高達8gb/s帶寬,同時本地dram支援21.3gb/s帶寬。更多硬體描述可參考catapult論文【3】。

表1顯示了使用著名模型(如基于cuda-convnet【4】的cifar-10,基于alex的imagenet-1k【1】等)進行圖像分類(隻有前向傳播過程)的吞吐情況。我們進一步評估了最大的和最具挑戰性的模型:imagenet-22k,在微軟adam項目中訓練的dcnn【2】。

使用專用硬體加速深度卷積神經網絡

總體上看,我們目前在裝備中等規模stratix v d5 fpga的catapult伺服器上獲得了最高處理吞吐。相比最近發表的fpga實作【5】和運作在高端gpgpu上的caffe+cudnn【6】。注意gpgpu解決方案需要高達235w功耗【7】,使得部署到功耗限制的資料中心不太現實。相反,fpga解決方案功耗不超過25w,占整個伺服器功耗的不到10%。我們的實作獲得了近3倍加速,相對最近發表的利用virtex 7 485t fpga的cnn加速器【5】。

(蔔居注:【5】隻說了處理能力達到61.62gflops,并沒有說處理圖檔速度,這篇文章怎麼算的?)

我們參數化的cnn加速器可靈活擴充到更新和更快的fpga。我們團隊正在将設計移植到altera的最新arria 10 fpga上,提供了對浮點處理支援,可以在高能效情況下達到1tflops處理能力【8】。表1列出了我們的預期性能。

總而言之,本文描述了使用fpga加速深度卷積神經網絡的研究。前期結果是很有希望的,顯示出專用硬體具有低功耗、高性能的優勢。未來我們希望在arria 10和stratix 10上設計更高性能的加速器,并考慮多片互聯并行訓練和評估。