面向深度學習業務的加速裝置及方法與流程
2023-09-20 07:37:30 1
本發明涉及電路設計領域,具體涉及一種面向深度學習業務的加速裝置及方法。
背景技術:
:隨著深度學習算法在語音識別、圖像識別、自然語言理解等領域大規模成功應用,用戶使用深度學習相關業務的次數和頻率在逐漸增加;為了不降低用戶的使用體驗,企業也逐年增加深度學習相關業務響應的並發計算能力。現有的提升並發計算能力的方法主要有兩種:一種是單純增加CPU的方式,增加並發計算能力;另一種是採用CPU+GPU的異構系統,提升並發計算能力。單純增加CPU的提升並發計算能力的方式,會隨著業務的增長,線性增加CPU的數量,成本也隨之成線性增長,且CPU用於用戶程序的計算部件有限,如果用於深度學習計算,其CPU資源難以完全利用。採用CPU+GPU異構系統提升並發計算能力的方式,因GPU是專門為圖形計算設計的處理晶片,如將其用於深度學習計算,必會導致部分資源不適配、利用不完全等問題。技術實現要素:本發明提供一種面向深度學習業務的加速裝置及方法,可以有效提高計算效率,提升性能功耗比。為此,本發明提供如下技術方案:一種面向深度學習業務的加速裝置,用於對伺服器中的待處理數據進行深度學習計算,包括:設置於伺服器端的網卡、與所述伺服器通過總線連接的計算控制模塊、以及第一存儲器和第二存儲器;所述計算控制模塊為可編程邏輯器件,包括:控制單元、數據存儲單元、邏輯存儲單元、以及分別與所述網卡、第一存儲器和第二存儲器通信的總線接口、第一通信接口和第二通信接口;所述邏輯存儲單元用於存儲深度學習控制邏輯;所述第一存儲器用於存儲網絡各層的權重數據和偏置數據;在所述計算控制模塊上電後,所述控制單元運行所述深度學習控制邏輯,以進行深度學習計算;在進行深度學習計算時,所述控制單元通過所述總線接口和所述網卡從所述伺服器中讀取待處理數據,並將所述待處理數據通過所述第二通信接口存放到第二存儲器中,依照所述深度學習控制邏輯依次從第一存儲器和第二存儲器中獲取網絡當前層計算所需的數據,計算當前層的輸入參數和輸出參數,並將所述輸出參數存儲到所述第一存儲器或第二存儲器中;計算完成後,所述控制單元將網絡輸出參數通過所述總線接口傳送給伺服器。優選地,所述可編程邏輯器件為FPGA晶片或CPLD晶片。優選地,所述總線為PCI總線或PCI-E總線。優選地,所述第一存儲器為堆疊內存,所述第二存儲器為DDRSDRAM。優選地,所述待處理數據在所述第二存儲器中以行主序方式存儲;所述輸出參數在所述第一存儲器或第二存儲器中以行主序方式存儲;所述權重數據和偏置數據在所述第一存儲器中以列主序方式存儲。優選地,參與計算的所有數據採用32位全精度浮點型格式進行計算和存儲。優選地,所述總線接口通過直接內存存取方式從所述網卡中讀取待處理數據。一種面向深度學習業務的加速方法,包括:將網絡各層的權重數據和偏置數據預先加載到第一存儲器中;在進行深度學習計算時,可編程邏輯器件從伺服器中讀取待處理數據,並將其存放到第二存儲器中;可編程邏輯器件根據預置的深度學習控制邏輯依次從第一存儲器和第二存儲器中獲取網絡當前層計算所需的數據,計算當前層的輸入參數和輸出參數,並將所述輸出參數存儲到所述第一存儲器或第二存儲器中;計算完成後,可編程邏輯器件將網絡輸出參數通過所述總線接口傳送給伺服器。優選地,所述待處理數據在所述第二存儲器中以行主序方式存儲;所述輸出參數在所述第一存儲器或第二存儲器中以行主序方式存儲;所述權重數據和偏置數據在所述第一存儲器中以列主序方式存儲。優選地,所述可編程邏輯器件為FPGA晶片或CPLD晶片;所述第一存儲器為堆疊內存,所述第二存儲器為DDRSDRAM。本發明實施例提供的面向深度學習業務的加速裝置及方法,針對深度學習相關業務的需求,採用CPU+可編程邏輯器件的異構形式,並依據深度學習算法的特點設計可編程邏輯器件與CPU硬體結構以及可編程邏輯器件內部運行機制,使得可編程邏輯器件能將其全部電力消耗在深度學習程序計算中。與現有的單純CPU系統或CPU+GPU系統相比,在同等的投入成本時,本發明方案的CPU+可編程邏輯器件的異構結構能達到更優的性能功耗比。附圖說明為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明中記載的一些實施例,對於本領域普通技術人員來講,還可以根據這些附圖獲得其他的附圖。圖1是本發明實施例中DNN結構示意圖;圖2是本發明實施例面向深度學習業務的加速裝置的結構框圖。具體實施方式為了使本
技術領域:
的人員更好地理解本發明實施例的方案,下面結合附圖和實施方式對本發明實施例作進一步的詳細說明。為了便於對本發明方案的理解,下面以DNN(深度神經網絡)為例,簡要說明深度學習算法的計算流程。如圖1所示,DNN由一個輸入層、多個隱層(圖中所示為6個隱層)和一個輸出層組成,為一個全連接網絡,輸入層與第1隱層的連接權重有D*H個,隱層之間的權重各為H*H,第6隱層與輸出層間的權重有H*M個。此外,隱層和輸出層的每個節點還附有相應的偏置。深度學習計算流程如下:步一:初始化網絡模型:從初始模型文件中讀取網絡的初始權重W和偏置B;步二:讀取N個樣本作為輸入層的信號;XN×D=x1,1x1,2...x1,Dx2,1x2,2...x1,D............xN,1xN,2...xN,D]]>步三:計算第1隱層各節點的輸入和輸出:輸入信號為:輸出信號為:YN×H(1)=f(AN×H(1))=f(a1,1(1))f(a1,2(1))...f(a1,H(1))f(a2,1(1))f(a2,2(1))...f(a2,H(1))............f(aN,1(1))f(aN,2(1))...f(aN,H(1))]]>步四:計算第2隱層各節點的輸入和輸出:輸入信號為:輸出信號為:步五:以此類推,計算出其他四個隱層各節點的輸入和輸出:輸入信號為:輸出信號為:上述f為一個非線性變換函數,k=2,3,4,5,6;步六:計算輸出層的輸入和輸出:輸入信號為:輸出信號為:由上述計算流程可以分析出深度學習算法有以下特點:1.流水線方式計算從第一層開始,每層的輸出作為下一層各節點的輸入,在進行下下一層計算時,不需要保留上上一層的計算數據。為此,可以設計一個容量適中的存儲器進行此部分數據存儲;另外,模型參數和中間數據需要反覆的讀寫,可以採用具有高速讀寫性能的晶片。2.浮點矩陣運算涉及浮點的乘加操作,因此選用DSP(DigitalSignalProcessor,數位訊號處理器)資源較多的可編程邏輯器件作為計算部件。為此,本發明實施例提供一種面向深度學習業務的加速裝置及方法,針對深度學習相關業務的需求,採用CPU+可編程邏輯晶片的異構形式,並依據深度學習算法的特點設計可編程邏輯晶片與CPU硬體結構以及可編程邏輯晶片內部運行機制。如圖2所示,是本發明實施例面向深度學習業務的加速裝置的結構框圖。該裝置用於對伺服器中的待處理數據進行深度學習計算,包括:設置於伺服器端的網卡、與所述伺服器通過總線連接的計算控制模塊、以及第一存儲器和第二存儲器;所述計算控制模塊為可編程邏輯晶片,包括:控制單元、數據存儲單元、邏輯存儲單元、以及分別與所述網卡、第一存儲器和第二存儲器通信的總線接口、第一通信接口和第二通信接口。其中,所述邏輯存儲單元用於存儲深度學習控制邏輯;所述第一存儲器用於存儲網絡各層的權重數據和偏置數據。在所述計算控制模塊上電後,所述控制單元運行所述深度學習控制邏輯,以進行深度學習計算;在進行深度學習計算時,所述控制單元通過所述總線接口和所述網卡從所述伺服器中讀取待處理數據,並將所述待處理數據通過所述第二通信接口存放到第二存儲器中,依照所述深度學習控制邏輯依次從第一存儲器和第二存儲器中獲取網絡當前層計算所需的數據,計算當前層的輸入參數和輸出參數,並將所述輸出參數存儲到所述第一存儲器或第二存儲器中。需要說明的是,在實際應用中,所述總線可以為PCI(PeripheralComponentInterconnect,外設部件互連標準)總線或PCI-E(PCIExpress)總線,PCI-E設計標準可以為x8Gen3,其傳輸速度為6GB/s左右。所述可編程邏輯器件可以採用FPGA(現場可編程門陣列)晶片或CPLD(複雜可編程邏輯器件)晶片,如果採用FPGA晶片,還需要外部存儲器(比如EPROM),以存儲所述深度學習控制邏輯。在計算控制模塊上電後,將外部存儲器中的深度學習控制邏輯讀入邏輯存儲單元(即內部RAM)中,然後運行該邏輯。所述第一存儲器可以採用HMC(HybridMemoryCube,堆疊內存),所述第二存儲器可以採用DDRSDRAM(DoubleDataRateSynchronousDynamicRandom,雙倍數據速率同步動態隨機存儲器),比如DDR4。另外,為了更好地保證計算精度,參與計算的所有數據採用32位全精度浮點型格式進行計算和存儲。下面以第一存儲器採用HMC、第二存儲器採用DDR、針對DNN網絡為例,結合圖2詳細說明本發明裝置進行深度學習計算的過程,具體過程如下:1.初始化,將網絡各層的初始權重數據W和偏置數據B寫入第一存儲器。2.在進行深度學習計算時,控制單元通過總線接口,採用DMA(DirectMemoryAccess,直接內存存取)方式從網卡中讀取待處理數據,並將讀取的待處理數據通過第二通信接口存儲到DDR4上。3.控制單元根據深度學習控制邏輯,從DDR4上取一部分待處理數據(比如20幀的語音數據)存到FPGA的數據存儲單元(內部RAM)上,並將這些數據以行主序方式存放。4.進行第1隱層參數計算:從HMC上逐列讀取W矩陣數據和B矩陣存放在數據存儲單元(內部RAM)上,然後依次將W矩陣中列數據與數據存儲單元上存放的數據X的每一行進行乘加,再加上相應的B矩陣中的數據,依次得到第1隱層輸入A的列數據,對輸入A的列數據進行非線性變換,得到第1隱層輸出Y的列數據,並將這些數據按照行主序方式存放到HMC或DDR4上。需要說明的是,輸出Y的列數據的結果是按照列產生的,而要求的輸出Y是以行主序方式存入HMC或DDR4的,所以這裡輸出Y的當前列寫入HMC時並不是連續寫入的,而是跳著寫入,從而滿足行主序存放的要求。5.依次進行其他隱層的計算,直至神經網絡的所有層參數計算完成。6.計算完成後,控制單元將最終計算結果即網絡輸出參數通過總線接口傳送給伺服器。需要注意的是,FPGA適合流水處理,所以在開始計算第2隱層輸入輸出參數的時候,可以開始下一批數據X』和第1隱層的W矩陣的乘加計算。當流水滿載時,各層都在進行計算,只是計算所使用的輸入數據不是同一批而已,從而可以進一步提高計算效率。另外,需要說明的是,本發明實施例中的面向深度學習業務的加速裝置,不僅適用於利用網絡模型進行檢測階段的深度學習計算,而且同樣適用於網絡模型訓練階段的深度學習計算。相應地了,本發明實施例還提供一種面向深度學習業務的加速方法,包括以下步驟:(1)將網絡各層的權重數據和偏置數據預先加載到第一存儲器中;(2)在進行深度學習計算時,可編程邏輯器件從伺服器中讀取待處理數據,並將其存放到第二存儲器中;(3)可編程邏輯器件根據預置的深度學習控制邏輯依次從第一存儲器和第二存儲器中獲取網絡當前層計算所需的數據,計算當前層的輸入參數和輸出參數,並將所述輸出參數存儲到所述第一存儲器或第二存儲器中。(4)計算完成後,可編程邏輯器件將網絡輸出參數通過所述總線接口傳送給伺服器。優選地,所述可編程邏輯器件為FPGA晶片或CPLD晶片;所述第一存儲器為HMC,所述第二存儲器為DDRSDRAM。由於可見,本發明實施例提供的面向深度學習業務的加速裝置及方法,針對深度學習相關業務的需求,採用CPU+可編程邏輯器件的異構形式,並依據深度學習算法的特點設計可編程邏輯晶片與CPU硬體結構以及可編程邏輯器件內部運行機制,使得可編程邏輯器件能將其全部電力消耗在深度學習程序計算中。與現有的單純CPU系統或CPU+GPU系統相比,在同等的投入成本時,本發明方案的CPU+可編程邏輯器件的異構結構能達到更優的性能功耗比。本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。以上對本發明實施例進行了詳細介紹,本文中應用了具體實施方式對本發明進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及裝置;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。當前第1頁1 2 3