本發明涉及神經網絡處理器體系結構技術領域,特別涉及面向神經網絡處理器的自動化設計方法、裝置及優化方法。
背景技術:
深度學習及神經網絡技術的飛速發展為大規模數據處理任務提供了新的解決途徑,各種新型神經網絡模型在處理復雜抽象問題上有著出色表現,其在視覺圖像處理、語音識別及智能機器人等領域的新型應用層出不窮。
目前利用深度神經網絡進行實時任務分析大多依靠大規模高性能處理器或通用圖形處理器,這些設備成本高功耗大,面向便攜式智能設備應用時,存在電路規模大、能量消耗高和產品價格昂貴等一系列問題。因此,針對嵌入式設備及小型低成本數據中心等應用領域中高能效實時處理的應用,采用專用神經網絡處理器加速而不是軟件的方式進行神經網絡模型計算成為一種更有效的解決方案,然而神經網絡模型的拓撲結構及參數設計會根據不同的應用場景而改變,另外神經網絡模型的發展更迭速度很快,提供一種可以面向各種應用場景并覆蓋各種神經網絡模型的通用高效神經網絡處理器非常困難,這為高層應用開發者針對不同應用需求設計硬件加速解決方案帶來了極大不變。
目前現有的神經網絡硬件加速技術包括專用集成電路(applicationspecificintegratedcircuit,asic)芯片和現場可編程門陣列(fieldprogrammablegatearray,fpga)兩種方式。在同等工藝條件下,asic芯片運行速度快且功耗低,但設計流程復雜、投片周期長、開發成本高,無法適應神經網絡模型快速更新的特點;fpga具有電路配置靈活、開發周期短的特點,但運行速度相對低,硬件開銷及功耗相對較大。無論采用上述哪種硬件加速技術,均需要神經網絡模型及算法開發人員在了解網絡拓撲和數據流模式的同時掌握硬件開發技術,包括處理器架構設計、硬件代碼編寫、仿真驗證及布局布線等環節,這些技術對專注于研究神經網絡模型及結構設計、而不具備硬件設計能力的高層應用開發人員而言開發難度較高。因此,為了使高層開發者高效地進行神經網絡技術應用開發,提供一種面向多種神經網絡模型的神經網絡處理器自動化設計方法及工具是非常迫切的。
技術實現要素:
針對現有技術的不足,本發明提出面向神經網絡處理器的自動化設計方法、裝置及優化方法。
本發明提出一種面向神經網絡處理器的自動化設計方法,包括:
步驟1,獲取神經網絡模型描述文件、硬件資源約束參數,其中所述硬件資源約束參數包括硬件資源大小及目標運行速度;
步驟2,根據所述神經網絡模型描述文件與所述硬件資源約束參數,從已構建的神經網絡組件庫中查找單元庫,并根據所述單元庫生成對應于所述神經網絡模型的神經網絡處理器的硬件描述語言代碼;
步驟3,將所述硬件描述語言代碼轉化為所述神經網絡處理器的硬件電路。
所述神經網絡處理器包括存儲結構、控制結構、計算結構。
所述神經網絡模型描述文件包括基本屬性、參數描述與連接信息三部分,其中所述基本屬性包括層名稱與層類型,所述參數描述包括輸出層數、卷積核大小與步進大小,所述連接信息包括連接名稱、連接方向、連接類型。
所述神經網絡可復用單元庫包括硬件描述文件及配置腳本兩部分。
所述神經網絡可復用單元庫包括神經元單元、累加器單元、池化單元、分類器單元、局部響應歸一化單元、查找表單元、地址生成單元、控制單元。
所述神經網絡處理器包括主地址生成單元、數據地址生成單元與權重地址生成單元。
還包括根據用戶指定的神經網絡模型與硬件資源約束參數確定數據路徑,并根據神經網絡中間層特征確定數據資源共享方式;
根據硬件配置與網絡特征生成存儲器的地址訪問流,所述地址訪問流通過有限狀態機的方式描述;
生成硬件描述語言代碼,進而轉化為所述神經網絡處理器的硬件電路。
還包括根據所述神經網絡模型、所述硬件資源約束參數、所述硬件描述語言代碼,生成數據存儲映射與控制指令流。
本發明還包括一種面向神經網絡處理器的自動化設計裝置,包括:
獲取數據模塊,用于獲取神經網絡模型描述文件、硬件資源約束參數,其中所述硬件資源約束參數包括硬件資源大小及目標運行速度;
生成硬件描述語言代碼模塊,用于根據所述神經網絡模型描述文件與所述硬件資源約束參數,從已構建的神經網絡組件庫中查找單元庫,并根據所述單元庫生成對應于所述神經網絡模型的神經網絡處理器的硬件描述語言代碼;
生成硬件電路模塊,用于將所述硬件描述語言代碼轉化為所述神經網絡處理器的硬件電路。
所述神經網絡處理器包括存儲結構、控制結構、計算結構。
所述神經網絡模型描述文件包括基本屬性、參數描述與連接信息三部分,其中所述基本屬性包括層名稱與層類型,所述參數描述包括輸出層數、卷積核大小與步進大小,所述連接信息包括連接名稱、連接方向、連接類型。
所述神經網絡可復用單元庫包括硬件描述文件及配置腳本兩部分。
所述神經網絡可復用單元庫包括神經元單元、累加器單元、池化單元、分類器單元、局部響應歸一化單元、查找表單元、地址生成單元、控制單元。
所述神經網絡處理器包括主地址生成單元、數據地址生成單元與權重地址生成單元。
還包括根據用戶指定的神經網絡模型與硬件資源約束參數確定數據路徑,并根據神經網絡中間層特征確定數據資源共享方式;
根據硬件配置與網絡特征生成存儲器的地址訪問流,所述地址訪問流通過有限狀態機的方式描述;
生成硬件描述語言代碼,進而轉化為所述神經網絡處理器的硬件電路。
還包括根據所述神經網絡模型、所述硬件資源約束參數、所述硬件描述語言代碼,生成數據存儲映射與控制指令流。
本發明還提出一種基于如所述的一種面向神經網絡處理器的自動化設計方法的優化方法,包括:
步驟1,定義卷積核大小為k*k,步進為s,存儲器寬度為d,數據圖張數為t,如果k^2=d^2,將數據劃分為k*k大小的數據塊,數據寬度與存儲器寬度一致,保證數據在存儲器中連續存儲;
步驟2,如果k^2!=d^2,并且步進s是k與存儲器寬度d的最大公約數,將數據劃分為s*s大小的數據塊,保證在一張數據圖中數據在存儲器中連續存儲;
步驟3,若以上兩項都不滿足,則求出步進s、k、存儲器寬度d的最大公約數f,將數據分割為大小為f*f的數據塊,t張數據圖交替存儲。
由以上方案可知,本發明的優點在于:
本發明可以將神經網絡模型映射為硬件電路并根據硬件資源約束和網絡特征自動優化電路結構及數據存儲方式,同時生成相應的控制指令流,實現了神經網絡硬件加速器的硬件及軟件自動化協同設計,在縮短神經網絡處理器設計周期的同時提高了神經網絡處理器運算能效。
附圖說明
圖1是本發明提供的神經網絡處理器的fpga自動實現工具工作流程圖;
圖2是本發明本發明可自動生成的神經網絡處理器系統示意圖;
圖3是本發明采用的神經網絡可復用單元庫示意圖;
圖4是本發明采用的地址生成電路接口示意圖。
具體實施方式
為了使本發明的目的、技術方案、設計方法及優點更加清楚明了,以下結合附圖通過具體實施例對本發明進一步詳細說明,應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。
本發明旨在提供面向神經網絡處理器的自動化設計方法、裝置及優化方法,該裝置包括一硬件生成器和一編譯器,所述硬件生成器可根據神經網絡類型及硬件資源約束自動生成神經網絡處理器的硬件描述語言代碼,隨后設計人員利用已有硬件電路設計方法通過硬件描述語言生成處理器硬件電路;所述編譯器可根據神經網絡處理器電路結構生成控制和數據調度指令流。
圖1為本發明提供的神經網絡處理器自動化生成技術示意圖,具體步驟為:
步驟1,本發明裝置讀取神經網絡模型描述文件,描述文件內包括網絡拓撲結構和各個運算層定義;
步驟2,本發明裝置讀入硬件資源約束參數,硬件約束參數包括硬件資源大小及目標運行速度等,本發明裝置可根據硬件約束參數生成相應的電路結構;
步驟3,本發明裝置根據所述神經網絡模型描述腳本和硬件資源約束從已經構建好的神經網絡組件庫中索引適合的單元庫,該工具所包含的硬件電路生成器利用上述單元庫生成對應該神經網絡模型的神經網絡處理器硬件描述語言代碼;
步驟4,本發明裝置所包含的編譯器根據神經網絡模型、邏輯資源約束及生成的硬件描述語言代碼生成數據存儲映射和控制指令流;
步驟5,通過已有硬件設計方法將硬件描述語言轉化為硬件電路。
本發明可自動生成的神經網絡處理器基于存儲-控制-計算的結構;
存儲結構用于存儲參與計算的數據、神經網絡權重及處理器操作指令;
控制結構包括譯碼電路與控制邏輯電路,用于解析操作指令,生成控制信號,該信號用于控制片上數據的調度與存儲以及神經網絡計算過程;
計算結構包括計算單元,用于參與該處理器中的神經網絡計算操作。
圖2為本發明可自動生成的神經網絡處理器系統101示意圖,該神經網絡處理器系統101架構由七個部分構成,包括輸入數據存儲單元102、控制單元103、輸出數據存儲單元104、權重存儲單元105、指令存儲單元106、計算單元107。
輸入數據存儲單元102用于存儲參與計算的數據,該數據包括原始特征圖數據和參與中間層計算的數據;輸出數據存儲單元104存儲計算得到的神經元響應值;指令存儲單元106存儲參與計算的指令信息,指令被解析為控制流來調度神經網絡計算;權重存儲單元105用于存儲已經訓練好的神經網絡權重;
控制單元103分別與輸出數據存儲單元104、權重存儲單元105、指令存儲單元106、計算單元107相連,控制單元103獲得保存在指令存儲單元106中的指令并且解析該指令,控制單元103可根據解析指令得到的控制信號控制計算單元進行神經網絡計算。
計算單元107用于根據控制單元103產生的控制信號來執行相應的神經網絡計算。計算單元107與一個或多個存儲單元相關聯,計算單元107可以從與其相關聯的輸入數據存儲單元102中的數據存儲部件獲得數據以進行計算,并且可以向與其相關聯的輸出數據存儲單元104寫入數據。計算單元107完成神經網絡算法中的大部分運算,即向量乘加操作等。
本發明通過提供所述神經網絡描述文件格式描述神經網絡模型特征,該描述文件內容包括基本屬性、參數描述和連接信息三部分,其中基本屬性包括層名稱和層類型,參數描述包括,輸出層數、卷積核大小和步進大小,連接信息包括連接名稱、連接方向、連接類型。
為了適應各種神經網絡模型的硬件實現設計,本發明提供的神經網絡可復用單元庫如圖3,單元庫包括硬件描述文件及配置腳本兩部分。本發明提供的可復用單元庫包括但不局限于:神經元單元、累加器單元、池化單元、分類器單元、局部響應歸一化單元、查找表單元、地址生成單元、控制單元等。
本發明在利用上述可復用單元庫構成神經網絡處理器系統時,通過讀取神經網絡模型描述文件及硬件資源約束合理優化調用單元庫。
在神經網絡處理器工作過程中,處理器需要自動獲取片上和片外存儲器數據的地址流,在本發明中,存儲器地址流由編譯器確定生成,由存儲器地址流確定的存儲器訪問模式通過文本交互至硬件生成器,存儲器訪問模式包括主訪問模式、數據訪問模式和權重訪問模式等。
硬件生成器依據所述存儲器訪問模式地址生成單元(agu)。
利用本發明提供的神經網絡處理器自動設計工具設計的神經網絡處理器電路包括三種類型的地址生成單元,包括:主地址生成單元、數據地址生成單元和權重地址生成單元,其中,主地址生成單元負責片內存儲器與片外存儲器之間的數據交換,數據地址生成單元負責從片上存儲器讀取數據至計算單元以及將計算單元中間計算結果和最終計算結果存儲至存儲單元這兩部分數據交換,權重地址生成單元負責從片上存儲器讀取權重數據至計算單元。
在本發明中,硬件電路生成器與編譯器協同工作實現地址生成電路的設計,具體設計算法步驟為:
步驟1,本發明裝置根據設計人員指定的神經網絡模型和硬件約束確定數據路徑,并依據神經網絡中間層特征確定數據資源共享方式;
步驟2,編譯器根據硬件配置和網絡特征生成存儲器地址訪問流,所述地址訪問流由編譯器通過有限狀態機的方式描述;
步驟3,所述有限狀態機由硬件生成器映射為地址生成電路硬件描述語言,進而通過硬件電路設計方法映射為硬件電路。
圖4為本發明提供的地址生成電路通用結構示意圖。本發明所述地址生成電路具有通用信號接口,該接口包含的接口信號有:
起始地址信號,即數據首地址;
數據塊尺寸信號,取一次數據的數據量;
存儲器標志位信號,確定將數據存放的存儲器編號;
工作模式信號,分為大卷積核取數據模式、小卷積核取數據模式、池化模式、全卷積模式等;
卷積核尺寸信號,定義卷積核大小;
長度信號,定義輸出圖片大小;
輸入層數目信號,標記輸入層數目;
輸出層數目信號,標記輸出層數目;
復位信號,該信號為1時,初始化地址生成電路;
寫使能信號,指定被訪問存儲器進行寫操作;
讀使能信號,指定被訪問存儲器進行讀操作;
地址信號,給出訪問存儲器地址;
結束信號,訪問結束信號。
所述參數確保agu支持多種工作模式并保證在不同工作模式及神經網絡傳播過程中能夠生成正確的讀寫地址流。
針對不同的目標網絡,工具從所述模板中選取必要的參數構建地址發生器并提供片上及片外存儲器訪問模式。
本發明提供的神經網路處理器使用數據驅動的方式構建處理器架構,因此所述地址生成電路不僅提供訪問地址而且驅動不同神經層和及層數據塊的執行。
由于資源約束的限制,神經網絡模型在映射為硬件電路時無法按照其模型描述形式完整展開,因此本發明提出的自動設計工具采用軟硬件協同工作的方式優化數據存儲及訪問機制,包括兩部分內容:首先,編譯器分析神經網絡處理器的計算吞吐量和片上存儲器大小,將神經網絡特征數據和權重數據劃分為適當的數據塊集中存儲和訪問;其次,依據計算單元規模、存儲器及數據位寬在數據塊內進行數據分割。
本發明基于上述優化機制提出一種數據存儲及訪問的優化方法,具體實施步驟為:
步驟1,定義卷積核大小為k*k,步進為s,存儲器寬度為d,數據圖張數為t,如果k^2=d^2,將數據劃分為k*k大小的數據塊,數據寬度和存儲器寬度一致,保證數據在存儲器中連續存儲;
步驟2,如果k^2!=d^2,并且s是k和d的最大公約數,將數據劃分為s*s大小的數據塊,保證在一張數據圖中數據可在存儲器中連續存儲;
步驟3,若以上兩項都不滿足,則求出s、k、d的最大公約數f,將數據分割為大小為f*f的數據塊,t張數據圖交替存儲。
神經網絡的計算數據包括輸入特征數據和訓練好的權重數據,通過良好的數據存儲布局可以減小處理器內部數據帶寬并提高存儲空間利用效率。本發明提供的自動設計工具通過增加處理器數據存儲局部性提高處理器的計算效率。
綜上所述,本發明提供一款面向神經網絡處理器的自動化設計工具,該工具具有從神經網絡模型映射為描述神經網絡處理器的硬件代碼、依據硬件資源約束優化處理器架構和自動生成控制流指令等功能,實現了神經網絡處理器的自動化設計,降低了神經網絡處理器的設計周期,適應了神經網絡技術網絡模型更新快、運算速度要求塊、能量效率要求高的應用特點。
應當理解,雖然本說明書是按照各個實施例描述的,但并非每個實施例僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施例中的技術方案也可以經適當組合,形成本領域技術人員可以理解的其他實施方式。
本發明還提出一種面向神經網絡處理器的自動化設計裝置,包括:
獲取數據模塊,用于獲取神經網絡模型描述文件、硬件資源約束參數,其中所述硬件資源約束參數包括硬件資源大小及目標運行速度;
生成硬件描述語言代碼模塊,用于根據所述神經網絡模型描述文件與所述硬件資源約束參數,從已構建的神經網絡組件庫中查找單元庫,并根據所述單元庫生成對應于所述神經網絡模型的神經網絡處理器的硬件描述語言代碼;
生成硬件電路模塊,用于將所述硬件描述語言代碼轉化為所述神經網絡處理器的硬件電路。
所述神經網絡處理器包括存儲結構、控制結構、計算結構。
所述神經網絡模型描述文件包括基本屬性、參數描述與連接信息三部分,其中所述基本屬性包括層名稱與層類型,所述參數描述包括輸出層數、卷積核大小與步進大小,所述連接信息包括連接名稱、連接方向、連接類型。
所述神經網絡處理器包括主地址生成單元、數據地址生成單元與權重地址生成單元。
還包括根據用戶指定的神經網絡模型與硬件資源約束參數確定數據路徑,并根據神經網絡中間層特征確定數據資源共享方式;
根據硬件配置與網絡特征生成存儲器的地址訪問流,所述地址訪問流通過有限狀態機的方式描述;
所述神經網絡可復用單元庫包括硬件描述文件及配置腳本兩部分。
所述神經網絡可復用單元庫包括神經元單元、累加器單元、池化單元、分類器單元、局部響應歸一化單元、查找表單元、地址生成單元、控制單元。
將所述有限狀態機映射為地址,并生成硬件描述語言代碼,進而轉化為所述神經網絡處理器的硬件電路。
還包括根據所述神經網絡模型、所述硬件資源約束參數、所述硬件描述語言代碼,生成數據存儲映射與控制指令流。
以上所述僅為本發明示意性的具體實施方式,并非用以限定本發明的范圍。任何本領域的技術人員,在不脫離本發明的構思和原則的前提下所作的等同變化、修改與結合,均應屬于本發明保護的范圍。