云中的機器學(xué)習:FPGA 上的深度神經(jīng)網(wǎng)絡(luò )
憑借出色的性能和功耗指標,賽靈思 FPGA 成為設計人員構建卷積神經(jīng)網(wǎng)絡(luò )的首選 XE XE XE XE 。新的軟件工具可簡(jiǎn)化實(shí)現工作。
本文引用地址:http://dyxdggzs.com/article/201808/386778.htm人工智能正在經(jīng)歷一場(chǎng)變革,這要得益于機器學(xué)習的快速進(jìn)步。在機器學(xué)習領(lǐng)域,人們正對一類(lèi)名為“深度學(xué)習”算法產(chǎn)生濃厚的興趣,因為這類(lèi)算法具有出色的大數據集性能。在深度學(xué)習中,機器可以在監督或不受監督的方式下從大量數據中學(xué)習一項任務(wù)。大規模監督式學(xué)習已經(jīng)在圖像識別和語(yǔ)音識別等任務(wù)中取得巨大成功。
深度學(xué)習技術(shù)使用大量已知數據找到一組權重和偏差值,以匹配預期結果。這個(gè)過(guò)程被稱(chēng)為訓練,并會(huì )產(chǎn)生大型模式。這激勵工程師傾向于利用專(zhuān)用硬件(例如 GPU)進(jìn)行訓練和分類(lèi)。
隨著(zhù)數據量的進(jìn)一步增加,機器學(xué)習將轉移到云。大型機器學(xué)習模式實(shí)現在云端的 CPU 上。盡管 GPU 對深度學(xué)習算法而言在性能方面是一種更好的選擇,但功耗要求之高使其只能用于高性能計算集群。因此,亟需一種能夠加速算法又不會(huì )顯著(zhù)增加功耗的處理平臺。在這樣的背景下,FPGA 似乎是一種理想的選擇,其固有特性有助于在低功耗條件下輕松啟動(dòng)眾多并行過(guò)程。
讓我們來(lái)詳細了解一下如何在賽靈思 FPGA 上實(shí)現卷積神經(jīng)網(wǎng)絡(luò ) (CNN)。CNN 是一類(lèi)深度神經(jīng)網(wǎng)絡(luò ),在處理大規模圖像識別任務(wù)以及與機器學(xué)習類(lèi)似的其他問(wèn)題方面已大獲成功。在當前案例中,針對在 FPGA 上實(shí)現 CNN 做一個(gè)可行性研究,看一下 FPGA 是否適用于解決大規模機器學(xué)習問(wèn)題。
卷積神經(jīng)網(wǎng)絡(luò )是一種深度神經(jīng)網(wǎng)絡(luò ) (DNN),工程師最近開(kāi)始將該技術(shù)用于各種識別任務(wù)。圖像識別、語(yǔ)音識別和自然語(yǔ)言處理是 CNN 比較常見(jiàn)的幾大應用。
什么是卷積神經(jīng)網(wǎng)絡(luò )?
卷積神經(jīng)網(wǎng)絡(luò )是一種深度神經(jīng)網(wǎng)絡(luò ) (DNN),工程師最近開(kāi)始將該技術(shù)用于各種識別任務(wù)。圖像識別、語(yǔ)音識別和自然語(yǔ)言處理是 CNN 比較常見(jiàn)的幾大應用。
2012 年,Alex Krishevsky 與來(lái)自多倫多大學(xué) (University of Toronto) 的其他研究人員 [1] 提出了一種基于 CNN 的深度架構,贏(yíng)得了當年的“Imagenet 大規模視覺(jué)識別挑戰”獎。他們的模型與競爭對手以及之前幾年的模型相比在識別性能方面取得了實(shí)質(zhì)性的提升。自此,AlexNet 成為了所有圖像識別任務(wù)中的對比基準。
AlexNet 有五個(gè)卷積層和三個(gè)致密層(圖 1)。每個(gè)卷積層將一組輸入特征圖與一組權值濾波器進(jìn)行卷積,得到一組輸出特征圖。致密層是完全相連的一層,其中的每個(gè)輸出均為所有輸入的函數。
卷積層
AlexNet 中的卷積層負責三大任務(wù),如圖 2 所示:3D 卷積;使用校正線(xiàn)性單元 (ReLu) 實(shí)現激活函數;子采樣(最大池化)。3D 卷積可用以下公式表示:

其中Y(m,x,y)是輸出特征圖m位置(x,y)處的卷積輸出,S是(x,y)周?chē)木植苦徲?,W是卷積濾波器組,X(n,x,y)是從輸入特征圖n上的像素位置(x,y)獲得的卷積運算的輸入。

圖 1 – AlexNet 是一種圖像識別基準,包含五個(gè)卷積層(藍框)和三個(gè)致密層(黃)。

圖 2 – AlexNet 中的卷積層執行 3D 卷積、激活和子采樣。
所用的激活函數是一個(gè)校正線(xiàn)性單元,可執行函數Max(x,0)。激活函數會(huì )在網(wǎng)絡(luò )的傳遞函數中引入非線(xiàn)性。最大池化是 AlexNet 中使用的子采樣技術(shù)。使用該技術(shù),只需選擇像素局部鄰域最大值傳播到下一層。
定義致密層
AlexNet 中的致密層相當于完全連接的層,其中每個(gè)輸入節點(diǎn)與每個(gè)輸出節點(diǎn)相連。AlexNet 中的第一個(gè)致密層有 9,216 個(gè)輸入節點(diǎn)。將這個(gè)向量乘以權值矩陣,以在 4,096 個(gè)輸出節點(diǎn)中產(chǎn)生輸出。在下一個(gè)致密層中,將這個(gè) 4,096 節點(diǎn)向量與另一個(gè)權值矩陣相乘得到 4,096 個(gè)輸出。最后,使用 4,096 個(gè)輸出通過(guò) softmax regression 為 1,000 個(gè)類(lèi)創(chuàng )建概率。
在 FPGA 上實(shí)現 CNN
隨著(zhù)新型高級設計環(huán)境的推出,軟件開(kāi)發(fā)人員可以更方便地將其設計移植到賽靈思 FPGA 中。軟件開(kāi)發(fā)人員可通過(guò)從 C/C++ 代碼調用函數來(lái)充分利用 FPGA 與生俱來(lái)的架構優(yōu)勢。Auviz Systems 的庫(例如 AuvizDNN)可為用戶(hù)提供最佳函數,以便其針對各種應用創(chuàng )建定制 CNN??稍谫愳`思 SD-Accel™ 這樣的設計環(huán)境中調用這些函數,以在 FPGA 上啟動(dòng)內核。
最簡(jiǎn)單的方法是以順序方式實(shí)現卷積和向量矩陣運算??紤]到所涉及計算量,因此順序計算會(huì )產(chǎn)生較大時(shí)延。
順序實(shí)現產(chǎn)生很大時(shí)遲的主要原因在于 CNN 所涉及的計算的絕對數量。圖 3 顯示了 AlexNet 中每層的計算量和數據傳輸情況,以說(shuō)明其復雜性。

圖 3 – 圖表展示了 AlexNet 中涉及的計算復雜性和數據傳輸數量。
評論