新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 云中的機器學(xué)習(xí):FPGA 上的深度神經(jīng)網(wǎng)絡(luò)

云中的機器學(xué)習(xí):FPGA 上的深度神經(jīng)網(wǎng)絡(luò)

作者: 時間:2018-08-14 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201808/386778.htm

因此,很有必要采用并行計算。有很多方法可將實現(xiàn)過程并行化。圖 6 給出了其中一種。在這里,將 11x11 的權(quán)值矩陣與一個 11x11 的輸入特征圖并行求卷積,以產(chǎn)生一個輸出值。這個過程涉及 121 個并行的乘法-累加運算。根據(jù) 的可用資源,我們可以并行對 512 抑或 768 個值求卷積。

為了進一步提升吞吐量,我們可以將實現(xiàn)過程進行流水線化。流水線能為需要一個周期以上才能完成的運算實現(xiàn)更高的吞吐量,例如浮點數(shù)乘法和加法。通過流水線處理,第一個輸出的時延略有增加,但每個周期我們都可獲得一個輸出。

使用 AuvizDNN 在 上實現(xiàn)的完整 CNN 就像從 C/C++ 程序中調(diào)用一連串函數(shù)。在建立對象和數(shù)據(jù)容器后,首先通過函數(shù)調(diào)用來創(chuàng)建每個卷積層,然后創(chuàng)建致密層,最后是創(chuàng)建 softmax 層,如圖 4 所示。

圖 4 - 實現(xiàn) CNN 時的函數(shù)調(diào)用順序。

圖 5 – 使用 AuvizDNN 創(chuàng)建 AlexNet 的 L1 的代碼片段。

圖 6 – AlexNets 的性能因 類型不同而不同。

AuvizDNN 是 Auviz Systems 公司提供的一種函數(shù)庫,用于在 FPGA 上實現(xiàn) CNN。該函數(shù)庫提供輕松實現(xiàn) CNN 所需的所有對象、類和函數(shù)。用戶只需要提供所需的參數(shù)來創(chuàng)建不同的層。例如,圖 5 中的代碼片段顯示了如何創(chuàng)建 AlexNet 中的第一層。

AuvizDNN 提供配置函數(shù),用以創(chuàng)建 CNN 的任何類型和配置參數(shù)。AlexNet 僅用于演示說明。CNN 實現(xiàn)內(nèi)容作為完整比特流載入 FPGA 并從 C/C++ 程序中調(diào)用,這使開發(fā)人員無需運行實現(xiàn)軟件即可使用 AuvizDNN。

FPGA 具有大量的查找表 (LUT)、DSP 模塊和片上存儲器,因此是實現(xiàn)深度 CNN 的最佳選擇。在數(shù)據(jù)中心,單位功耗性能比原始性能更為重要。數(shù)據(jù)中心需要高性能,但功耗要在數(shù)據(jù)中心服務(wù)器要求限值之內(nèi)。

像賽靈思 Kintex® UltraScale™ 這樣的 FPGA 器件可提供高于 14 張圖像/秒/瓦特的性能,使其成為數(shù)據(jù)中心應(yīng)用的理想選擇。圖 6 介紹了使用不同類型的 FPGA 所能實現(xiàn)的性能。

一切始于 c/c++

卷積神經(jīng)網(wǎng)絡(luò)備受青睞,并大規(guī)模部署用于處理圖像識別、自然語言處理等眾多任務(wù)。隨著 CNN 從高性能計算應(yīng)用 (HPC) 向數(shù)據(jù)中心遷移,需要采用高效方法來實現(xiàn)它們。

FPGA 可高效實現(xiàn) CNN。FPGA 的具有出色的單位功耗性能,因此非常適用于數(shù)據(jù)中心。

AuvizDNN 函數(shù)庫可用來在 FPGA 上實現(xiàn) CNN。AuvizDNN 能降低 FPGA 的使用復(fù)雜性,并提供用戶可從其 C/C++ 程序中調(diào)用的簡單函數(shù),用以在 FPGA 上實現(xiàn)加速。使用 AuvizDNN 時,可在 AuvizDNN 庫中調(diào)用函數(shù),因此實現(xiàn) FPGA 加速與編寫 C/C++ 程序沒有太大區(qū)別。


上一頁 1 2 下一頁

關(guān)鍵詞: FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉