亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的深度強(qiáng)化學(xué)習(xí)硬件加速技術(shù)研究

        2022-07-09 06:45:00王賓濤李喜鵬
        關(guān)鍵詞:設(shè)計(jì)

        鳳 雷,王賓濤,劉 冰,李喜鵬

        (哈爾濱工業(yè)大學(xué) 電子與信息工程學(xué)院,哈爾濱 150001)

        0 引言

        強(qiáng)化學(xué)習(xí)(RL,reinforcement learning)是指從環(huán)境狀態(tài)到動(dòng)作映射的學(xué)習(xí),以使動(dòng)作從環(huán)境中獲得累計(jì)獎(jiǎng)賞值最大[1],經(jīng)常被用于序貫決策層問(wèn)題。與監(jiān)督學(xué)習(xí)[2]不同,RL算法主要強(qiáng)調(diào)智能體與環(huán)境的交互,在二者的交互的過(guò)程中,環(huán)境會(huì)根據(jù)智能體所處的狀態(tài)以及所決策的動(dòng)作給予其一定的獎(jiǎng)懲信號(hào),智能體則會(huì)根據(jù)所獲得的獎(jiǎng)懲信號(hào)對(duì)自身的決策策略進(jìn)行優(yōu)化,從而最大化決策過(guò)程中所獲得的累計(jì)獎(jiǎng)勵(lì)。

        2013年,DeepMind團(tuán)隊(duì)將深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)(CNN,convolutional neural network)[3]算法與傳統(tǒng)強(qiáng)化學(xué)習(xí)Q學(xué)習(xí)[4]相結(jié)合,設(shè)計(jì)了DQN算法[5],在雅達(dá)利游戲平臺(tái)中取得了比人類(lèi)玩家更高的游戲分?jǐn)?shù),從此掀起了一股深度強(qiáng)化學(xué)習(xí)[6]的研究浪潮。后續(xù)DeepMind團(tuán)隊(duì)基于DRL算法所研發(fā)的AlphaGo[7]和AlphaGo Zero[8]在機(jī)器博弈領(lǐng)域取得了巨大成功,更是成為了人工智能領(lǐng)域的里程碑事件。目前,DRL除了在游戲中進(jìn)行應(yīng)用外,直接在邊緣設(shè)備上實(shí)現(xiàn)DRL同樣有巨大的應(yīng)用價(jià)值和廣泛的應(yīng)用前景,例如為充當(dāng)巡邏機(jī)器人的無(wú)人機(jī) (UAV, unmanned aerial vehicle)[9]提供自主避障和航路規(guī)劃的能力,為無(wú)人車(chē)輛[10-11]提供自主駕駛分析決策能力。

        DQN算法作為DRL領(lǐng)域的開(kāi)山之作,被后續(xù)許多的DRL算法所借鑒。其解決了傳統(tǒng)Q學(xué)習(xí)的“維度災(zāi)難”問(wèn)題,采用多層神經(jīng)網(wǎng)絡(luò)來(lái)完成值函數(shù)的非線性逼近功能,替代傳統(tǒng)的Q表查詢(xún)決策方式,將神經(jīng)網(wǎng)絡(luò)的感知能力和強(qiáng)化學(xué)習(xí)的決策能力結(jié)合,實(shí)現(xiàn)端到端的感知與決策。在智能體與環(huán)境交互的過(guò)程中,同時(shí)存在神經(jīng)網(wǎng)絡(luò)的推理與訓(xùn)練兩類(lèi)運(yùn)算,這兩類(lèi)運(yùn)算都具備計(jì)算密集型的特點(diǎn),需要較強(qiáng)的算力才能保證算法的實(shí)時(shí)性。

        DQN計(jì)算密集型的特點(diǎn),對(duì)于計(jì)算資源和功耗都受限的邊緣設(shè)備而言,直接實(shí)現(xiàn)深度強(qiáng)化學(xué)習(xí)算法存在一定的挑戰(zhàn)。這種挑戰(zhàn)主要來(lái)自于兩方面:一方面是DQN算法本身計(jì)算密集型特點(diǎn)和計(jì)算數(shù)據(jù)之間較強(qiáng)的依賴(lài)關(guān)系;另一方面是大多數(shù)嵌入式計(jì)算平臺(tái)本身單指令單數(shù)據(jù)流計(jì)算架構(gòu)的局限性,無(wú)法支持面向DQN的高性能計(jì)算。這導(dǎo)致有關(guān)在嵌入式設(shè)備部署DQN算法的研究進(jìn)展十分緩慢,相關(guān)研究現(xiàn)狀在1.2節(jié)中得到闡述。面向邊緣在線決策應(yīng)用,本文提出一種基于FPGA平臺(tái)的DQN算法實(shí)現(xiàn)方法,可以在FPGA平臺(tái)上完成DQN算法的推理和訓(xùn)練。主要工作如下:

        1)提出了一種基于FPGA平臺(tái)的DQN算法的硬件實(shí)現(xiàn)架構(gòu),架構(gòu)中的加速器IP核采用流式架構(gòu)設(shè)計(jì),可以靈活配置算法的訓(xùn)練超參數(shù)。

        2)在FPGA平臺(tái)計(jì)算資源和存儲(chǔ)資源的約束下,提出了一種設(shè)計(jì)空間的探索方法。通過(guò)定量分析DQN算法實(shí)現(xiàn)所需的存儲(chǔ)資源和計(jì)算資源,獲得DQN算法在FPGA中進(jìn)行加速部署時(shí)每一層的并行計(jì)算參數(shù)。

        3)面向典型應(yīng)用Cartpole搭建了應(yīng)用驗(yàn)證平臺(tái), 在FPGA平臺(tái)上進(jìn)行了設(shè)計(jì)的功能驗(yàn)證和性能測(cè)試,并在網(wǎng)絡(luò)的訓(xùn)練時(shí)間和功耗方面同CPU平臺(tái)和GPU平臺(tái)進(jìn)行了實(shí)驗(yàn)對(duì)比。

        1 背景

        1.1 DQN算法

        RL的基本模型可以用圖1表示,通過(guò)智能體與環(huán)境的信息交互,實(shí)現(xiàn)決策功能。整個(gè)過(guò)程可用四元組描述,式中A為智能體動(dòng)作集合;S為智能體感知的環(huán)境信息;R為智能體得到的獎(jiǎng)勵(lì)或懲罰;P為智能體交互的環(huán)境。

        圖1 強(qiáng)化學(xué)習(xí)基本模型

        Q學(xué)習(xí)算法[4]作為一種經(jīng)典的RL算法,使用Q查詢(xún)表存儲(chǔ)各個(gè)動(dòng)作對(duì)應(yīng)的Q值,通過(guò)查詢(xún)每個(gè)動(dòng)作的Q值,指導(dǎo)智能體做出相應(yīng)決策。受限于計(jì)算機(jī)存儲(chǔ)的限制,Q表在處理高維狀態(tài)數(shù)據(jù)方面表現(xiàn)不佳[12]。

        (1)

        1.2 FPGA加速?gòu)?qiáng)化學(xué)習(xí)算法

        近年來(lái),機(jī)器學(xué)習(xí)在嵌入式邊緣設(shè)備上的加速實(shí)現(xiàn)[14],已經(jīng)成為人工智能領(lǐng)域[15]的熱門(mén)話(huà)題,F(xiàn)PGA由于其低功耗、高能效和可重構(gòu)的特點(diǎn),在硬件加速領(lǐng)域[16]備受青睞,目前最先進(jìn)的機(jī)器學(xué)習(xí)加速器大多支持監(jiān)督學(xué)習(xí),如CNN[17]、循環(huán)神經(jīng)網(wǎng)路(RNN,recurrent neural network)[18]等,但對(duì)深度強(qiáng)化學(xué)習(xí)的硬件加速目前還處于剛剛興起的狀態(tài)。

        Shengjia S等人在Stratix系列FPGA上對(duì)TPRO算法(TRPO, trust region policy optimization)進(jìn)行了硬件加速以應(yīng)用于機(jī)器人控制應(yīng)用[19],后續(xù)提出了一種設(shè)計(jì)空間探索方法對(duì)TRPO 算法加速進(jìn)行進(jìn)一步的優(yōu)化[20]。S.Jiang等人采用單引擎架構(gòu),在Altera Arria 10上實(shí)現(xiàn)了Deep Q-Learing算法的硬件加速[21]。但是上述研究,在計(jì)算架構(gòu)和設(shè)計(jì)空間探索等方面仍有很大提升空間。

        2 基于DQN的FPGA硬件架構(gòu)和加速器設(shè)計(jì)

        2.1 總體硬件架構(gòu)

        如圖2所示,總體硬件架構(gòu)主要包括外部存儲(chǔ)器(DDR, direct digital radiography)、處理單元(PS,processing system)、可編程邏輯部分(PL, processing logic)的加速器和片內(nèi)外總線互聯(lián)。我們通過(guò)PS和PL協(xié)同工作來(lái)高效的完成DQN算法的計(jì)算,其中PS部分主要負(fù)責(zé)與環(huán)境進(jìn)行交互,獎(jiǎng)勵(lì)函數(shù)的計(jì)算,DDR中訓(xùn)練經(jīng)驗(yàn)池的維護(hù),以及對(duì)PL進(jìn)行超參數(shù)和工作模式的配置;PL部分定制化設(shè)計(jì)DQN算法加速器,用于實(shí)現(xiàn)算法中神經(jīng)網(wǎng)絡(luò)的前向推理、誤差反向傳播和權(quán)值更新等計(jì)算密集部分,PL部分加速器結(jié)構(gòu)設(shè)計(jì)、加速算子設(shè)計(jì)及相關(guān)設(shè)計(jì)空間探索方法是研究的核心。

        圖2 總體硬件架構(gòu)

        2.2 加速器結(jié)構(gòu)設(shè)計(jì)

        整個(gè)加速器采用流式架構(gòu),針對(duì)DQN算法的各個(gè)模塊進(jìn)行硬件定制化設(shè)計(jì)。DQN算法加速器IP核的結(jié)構(gòu)如圖3所示,定制化設(shè)計(jì)了Target_Q模塊、Current_Q模塊、損失函數(shù)計(jì)算模塊、權(quán)值更新和替換模塊、控制模塊和參數(shù)存儲(chǔ)單元。其中Target_Q模塊用于完成Target_Q網(wǎng)絡(luò)的前向推理;Current_Q模塊用于完成Current_Q網(wǎng)絡(luò)的前向推理和反向傳播;控制模塊用于對(duì)加速器的工作模式和訓(xùn)練參數(shù)進(jìn)配置,使得各個(gè)模塊能夠協(xié)同工作;權(quán)值更新與替換模塊用于實(shí)現(xiàn)Current_Q網(wǎng)絡(luò)的權(quán)值更新和Target_Q網(wǎng)絡(luò)的權(quán)值替換;損失計(jì)算模塊主要用于實(shí)現(xiàn)損失函數(shù)的計(jì)算。

        圖3 DQN加速器結(jié)構(gòu)圖

        加速器存在兩種工作模式:一種是直接利用學(xué)習(xí)好的權(quán)值參數(shù),與環(huán)境交互后,智能體只做出決策但不進(jìn)行學(xué)習(xí);另一種是做出決策后智能體會(huì)根據(jù)環(huán)境給予的獎(jiǎng)勵(lì)反饋進(jìn)行學(xué)習(xí),調(diào)整自身權(quán)重參數(shù)。

        Target_Q模塊和Current_Q模塊是整個(gè)硬件加速過(guò)程中的設(shè)計(jì)重點(diǎn),在本設(shè)計(jì)中,Target_Q模塊和Current_Q模塊均由加速算子(VMPU, vector matrix processing unit)通過(guò)流式先入先出寄存器(FIFO, first in first out)級(jí)聯(lián)組成,加速算子的具體細(xì)節(jié)將會(huì)在2.3節(jié)中介紹,同時(shí)將在2.4節(jié)介紹本設(shè)計(jì)的設(shè)計(jì)空間探索方法。

        2.3 加速算子VMPU設(shè)計(jì)

        DQN算法中的神經(jīng)網(wǎng)絡(luò)選擇多層感知機(jī),針對(duì)多層感知機(jī)中向量矩陣乘法計(jì)算密集型的特點(diǎn),以及前向推理和反向傳播計(jì)算過(guò)程間的數(shù)據(jù)依賴(lài),基于FPGA硬件資源的特點(diǎn),設(shè)計(jì)了單指令多數(shù)據(jù)(SIMD, single instruction multiple data)運(yùn)算和多處理單元(PE,processing element)兩種加速模式,其設(shè)計(jì)示意圖如圖4所示。SIMD主要用于完成CNN中的層累加單元,即通過(guò)在FPGA內(nèi)部定制化設(shè)計(jì)SIMD,通過(guò)硬件實(shí)現(xiàn)基礎(chǔ)的層累加模塊,完成基于指令集的硬件加速;PE主要用于實(shí)現(xiàn)多個(gè)SIMD的并行計(jì)算;在單個(gè)PE內(nèi)實(shí)SIMD并行的同時(shí),VMPU單元內(nèi)還實(shí)現(xiàn)了多個(gè)PE的并行計(jì)算,以達(dá)到最大化硬件加速性能的目的。

        圖4 VMPU設(shè)計(jì)示意圖

        VMPU的輸入是上一個(gè)計(jì)算單元的輸出或者最原始的輸入,經(jīng)過(guò)FIFO寄存器被存儲(chǔ)在VMPU內(nèi)置輸入向量寄存器,用于神經(jīng)網(wǎng)絡(luò)卷積計(jì)算的權(quán)重已經(jīng)部署到FPGA內(nèi)部,此使輸入向量寄存器的元素與已經(jīng)部署好的權(quán)重展開(kāi)并行計(jì)算,并將結(jié)果放到輸出向量寄存器內(nèi),進(jìn)而經(jīng)過(guò)激活、矩陣求導(dǎo)等操作后,作為輸出被傳送到下一計(jì)算單元。

        在FPGA實(shí)現(xiàn)VMPU的過(guò)程中,前向推理與反向訓(xùn)練的計(jì)算過(guò)程之間存在相關(guān)度較高的依賴(lài)關(guān)系,為了解決DQN中層間推理與訓(xùn)練的數(shù)據(jù)依賴(lài)關(guān)系,同時(shí)實(shí)現(xiàn)FPGA并行計(jì)算,需要在FPGA片上對(duì)權(quán)重矩陣進(jìn)行分區(qū)存儲(chǔ),基于計(jì)算過(guò)程中權(quán)值矩陣維度設(shè)計(jì)了兩類(lèi)VMPU,分別是以列為主的VMPU(A)和以行為主的VMPU(B),兩類(lèi)VMPU的存儲(chǔ)方式劃分示意如圖5所示。在VMPU(A)中,SIMD并行對(duì)應(yīng)矩陣的行維度,PE并行對(duì)應(yīng)矩陣的列維度;由于兩類(lèi)VMPU的權(quán)重矩陣存儲(chǔ)方式互為轉(zhuǎn)置,在VMPU(B)中,并行計(jì)算對(duì)應(yīng)的維度與A模式相反。在部署DQN網(wǎng)絡(luò)時(shí),對(duì)于奇數(shù)層而言,前向推理時(shí)使用VMPU(A),反向傳播時(shí)使用VMPU(B);對(duì)于偶數(shù)層而言,前向推理時(shí)采用VMPU(B),反向傳播時(shí)采用VMPU(A)。

        圖5 片上權(quán)值存儲(chǔ)方式

        如圖6所示,以VMPU(A)為例,具體說(shuō)明矩陣加速算子的計(jì)算過(guò)程。假設(shè)網(wǎng)絡(luò)第一層的神經(jīng)元個(gè)數(shù)為8,第二層的神經(jīng)元個(gè)數(shù)為4,在進(jìn)行前向推理時(shí),相當(dāng)于執(zhí)行一個(gè)1*8的向量與8*4的矩陣的乘法。在VMPU(A)中,如圖6(a)所示,假定SIMD取4,PE取2,則行維度的折疊因子SF為2,則列維度的折疊因子PF為2,折疊因子的計(jì)算方式將在2.4節(jié)闡述。由SF和PF可算得總折疊因子為4,即循環(huán)4次便可完成整個(gè)向量矩陣乘法的計(jì)算。在第一次循環(huán)中,如圖6(b)所示,首先計(jì)算輸入向量前4個(gè)元素a1-a4與權(quán)值矩陣對(duì)應(yīng)元素的乘積累加,生成c1和c2的中間結(jié)果,第二個(gè)循環(huán)繼續(xù)計(jì)算權(quán)值矩陣當(dāng)前列未進(jìn)行計(jì)算的元素,生成的乘積累加結(jié)果與之前的中間結(jié)果相加,生成c1和c2的最終結(jié)果,然后加上偏置,進(jìn)行激活函數(shù)的計(jì)算。同時(shí),激活函數(shù)的梯度也將在此時(shí)計(jì)算,并存儲(chǔ)在片上以供反向傳播使用。最后,將兩個(gè)最終計(jì)算結(jié)果c1和c2流入FIFO中。

        圖6 VMPU(A)計(jì)算示意圖

        VMPU(A)將兩個(gè)最終結(jié)果流入FIFO后,后續(xù)連接的VMPU(B)將在此刻收到啟動(dòng)信號(hào),從FIFO中取出上一層的輸出數(shù)據(jù),存入輸入寄存器中,開(kāi)始第二層的計(jì)算。與VMPU(A)類(lèi)似,VMPU(B)的內(nèi)部同樣為乘累加樹(shù)結(jié)構(gòu),但其計(jì)算邏輯是以行為主,每完成一次循環(huán),生成的都是中間結(jié)果,直到最后一次循環(huán)結(jié)束,VMPU(B)將會(huì)累加出最終的計(jì)算結(jié)果。通過(guò)選取合適的并行參數(shù),便能讓級(jí)聯(lián)的VMPU(A)和VMPU(B)之間形成流水,只要VMPU(A)的計(jì)算不中斷,每隔一段時(shí)間,VMPU(B)便會(huì)接收來(lái)自VMPU(A)的數(shù)據(jù)并進(jìn)行下一層的計(jì)算,兩層之間形成數(shù)據(jù)流水后,兩層整體的計(jì)算時(shí)間大概等于VMPU(A)的計(jì)算時(shí)間。

        2.4 設(shè)計(jì)空間探索

        為了滿(mǎn)足DQN算法特性和FPGA硬件平臺(tái)資源約束,確定網(wǎng)絡(luò)部署的并行計(jì)算參數(shù),對(duì)設(shè)計(jì)空間探索方法進(jìn)行研究是十分必要的。不同于研究[21]中僅考慮了DSP資源,本設(shè)計(jì)在建立資源模型的同時(shí)考慮了DSP資源和BRAM資源,達(dá)到對(duì)計(jì)算資源和存儲(chǔ)資源設(shè)計(jì)空間探索的目的。

        Target Q模塊和Current Q模塊的計(jì)算過(guò)程最為耗時(shí),對(duì)于以上兩個(gè)模塊,其內(nèi)部的VMPU單元采用A-B-A-B的方式級(jí)聯(lián)而成,通過(guò)對(duì)總循環(huán)次數(shù)FoldCycle進(jìn)行建模,完成設(shè)計(jì)空間探索問(wèn)題中性能模型的尋優(yōu),此處FoldCycle可用于表征VMPU模塊的計(jì)算時(shí)間。如公式(2)所示,設(shè)計(jì)空間探索問(wèn)題,在軟硬件資源約束的情況下,尋求最小的總循環(huán)展開(kāi)次數(shù)。本文首先將先對(duì)VMPU單元的A模式和B模式分別進(jìn)行建模,然后再對(duì)整個(gè)系統(tǒng)進(jìn)行建模。

        (2)

        式(2)中,FoldCycle代表總循環(huán)展開(kāi)次數(shù);P代表循環(huán)展開(kāi)參數(shù)的集合,該集合可用VMPU中的循環(huán)展開(kāi)參數(shù)PE和SIMD表示;LayerSizei代表神經(jīng)網(wǎng)絡(luò)第i層的大?。籇SPtotal、BRAMtotal代表設(shè)計(jì)實(shí)際消耗的總的計(jì)算資源和存儲(chǔ)資源個(gè)數(shù);DSPFPGA_Limit、BRAMFPGA_Limit代表FPGA平臺(tái)的計(jì)算資源和存儲(chǔ)資源的限制。

        首先對(duì)VMPU(A)進(jìn)行分析,在向量矩陣乘法中,使用RowSize表示權(quán)重矩陣的行維度大小,SIMDA為VMPU(A)的行循環(huán)展開(kāi)參數(shù),sfA為其對(duì)應(yīng)的行并行折疊因子;使用ColSize表示權(quán)重矩陣的列維度大小,PEA為VMPU(A)的列循環(huán)展開(kāi)參數(shù),pfA為其對(duì)應(yīng)的列并行折疊因子;則VMPU(A)的總循環(huán)展開(kāi)因子FoldCycleA為sfA和pfA的乘積,相關(guān)計(jì)算關(guān)系可用公式(3)~(5)表示:

        sfA=RowSize/SIMDA

        (3)

        pfA=ColSize/PEA

        (4)

        FoldCycleA=sfA*pfA

        (5)

        然后對(duì)VMPU(B)進(jìn)行分析,在向量矩陣乘法中,同樣使用RowSize表示權(quán)重矩陣的行維度大小,PEB為VMPU(B)的行循環(huán)展開(kāi)參數(shù),pfB為其對(duì)應(yīng)的行并行折疊因子;使用ColSize表示權(quán)重矩陣的列維度大小,SIMDB為VMPU(B)的列循環(huán)展開(kāi)參數(shù),sfB為其對(duì)應(yīng)的列并行折疊因子;則VMPU(B)的總循環(huán)展開(kāi)因子FoldCycleB為pfB和sfB的乘積,相關(guān)計(jì)算關(guān)系可用公式(6)~(8)表示:

        pfB=RowSize/PEB

        (6)

        sfB=ColSize/SIMDB

        (7)

        FoldCycleA=pfA*sfA

        (8)

        采用A-B級(jí)聯(lián)模式,可以實(shí)現(xiàn)層間的流水計(jì)算與并行計(jì)算,進(jìn)而增加硬件加速的性能。為了實(shí)現(xiàn)A-B級(jí)聯(lián)模式,級(jí)聯(lián)的兩層應(yīng)當(dāng)滿(mǎn)足公式(9)的要求,這樣可以解決VMPU(B)對(duì)VMPU(A)的數(shù)據(jù)依賴(lài)。當(dāng)VMPU(A)與VMPU(B)之間形成層間的計(jì)算流水后,A模式的計(jì)算時(shí)間便能掩蓋B模式的計(jì)算時(shí)間,如公式(10)所示,式(11)中FoldCycleAB表示級(jí)聯(lián)的兩層計(jì)算所需的循環(huán)數(shù)。

        sfA≥sfB

        (9)

        FoldCycleAB=FoldCycleA

        (10)

        在本設(shè)計(jì)中,我們實(shí)現(xiàn)了3個(gè)層次的流水以及并行設(shè)計(jì),第一個(gè)是VMPU內(nèi)部的乘積累加流水以及多個(gè)乘累加樹(shù)的并行;第二個(gè)是VMPU通過(guò)A-B級(jí)聯(lián)時(shí),形成層與層之間的計(jì)算流水;第三個(gè)是在訓(xùn)練時(shí),Target_Q模塊與Current_Q模塊之間形成并行計(jì)算,Target_Q模塊的計(jì)算時(shí)間將被Current_Q模塊的計(jì)算時(shí)間掩蓋。因此,整個(gè)系統(tǒng)的時(shí)間消耗主要由Current_Q模塊決定。系統(tǒng)處理決策樣本所用的循環(huán)數(shù)如公式(11)所示,式中FoldCycleFP表示前向推理在Current_Q模塊所消耗的時(shí)間,F(xiàn)oldCycleBP表示反向傳播在Current_Q模塊所消耗的時(shí)間。

        FoldCycle=FoldCycleFP+FoldCycleBP

        (11)

        除運(yùn)行時(shí)間參數(shù)進(jìn)行建模外,設(shè)計(jì)還對(duì)DSP計(jì)算資源和BRAM存儲(chǔ)資源進(jìn)行建模。VMPU中DSP資源的消耗量與流水計(jì)算的啟動(dòng)間隔(II,initiation interval)有關(guān),當(dāng)II為1時(shí),消耗的DSP資源最多,當(dāng)II大于1時(shí),VMPU將對(duì)DSP資源進(jìn)行復(fù)用,所消耗的DSP資源如式(12)和(13)所示,式中常系數(shù)5表示浮點(diǎn)型層累加單元所消耗的最小DSP個(gè)數(shù)。設(shè)計(jì)采用了FPGA空間換取時(shí)間的并行加速思想,存儲(chǔ)單元采用BRAM實(shí)現(xiàn),其使用數(shù)量和加速結(jié)構(gòu)有關(guān)。算子并行度為SIMD*PE,則需要2*SIMD*PE個(gè)BRAM單元來(lái)存儲(chǔ)輸入向量和權(quán)重,同時(shí)需要PE個(gè)BRAM來(lái)存儲(chǔ)偏置變量。故對(duì)于VMPU中BRAM資源的消耗可用公式(14)和(15)表示:

        DSPA=ceil((SIMDA/IIA)*PEA)*5

        (12)

        DSPB=ceil((SIMDB/IIB)*PEB)*5

        (13)

        BRAMA=(SIMDA*PEA+PEA)*2

        (14)

        BRAMB=(SIMDB*PEB+PEB)*2

        (15)

        本設(shè)計(jì)中消耗BRAM資源和DSP資源的主要模塊為T(mén)arget_Q模塊、Current_Q模塊和權(quán)值更新與替換模塊,因此,可以按照公式(16)估計(jì)系統(tǒng)相關(guān)資源消耗的總體情況。

        BRAM=Target_QBRAM+Current_QBRAM+UpdateBRAM

        DSP=Target_QDSP+Current_QDSP+UpdateDSP

        (16)

        3 實(shí)驗(yàn)評(píng)估

        3.1 應(yīng)用介紹

        使用OPEN AI Gym提供的Cartpole環(huán)境對(duì)設(shè)計(jì)進(jìn)行測(cè)試,Cartpole游戲環(huán)境如圖7所示。 CartPole是一個(gè)非常經(jīng)典的車(chē)桿游戲,游戲里面有一個(gè)小車(chē),車(chē)上有豎著一根可以旋轉(zhuǎn)的桿子,每回合中車(chē)桿的初始狀態(tài)都會(huì)有所不同,小車(chē)需要左右移動(dòng)來(lái)保持桿子豎直。為了保證游戲繼續(xù)進(jìn)行,需要滿(mǎn)足以下兩個(gè)條件:

        圖7 Cartpole應(yīng)用

        1)桿子傾斜的角度φ不能大于15°.

        2)小車(chē)移動(dòng)的位置x需保持在一定范圍內(nèi)(±2.4個(gè)單位長(zhǎng)度)。

        3.2 實(shí)驗(yàn)過(guò)程與參數(shù)設(shè)置

        本文所搭建的應(yīng)用驗(yàn)證平臺(tái)如圖8所示,用于對(duì)設(shè)計(jì)進(jìn)行功能驗(yàn)證和性能分析。應(yīng)用驗(yàn)證平臺(tái)分為兩個(gè)部分,分別是PC機(jī)和ZYNQ7100平臺(tái)。我們?cè)赯YNQ的ARM端搭建了Linux操作系統(tǒng)并編寫(xiě)了Cartpole應(yīng)用程序,在PC機(jī)上運(yùn)行g(shù)ym中的Cartpole環(huán)境,邊緣側(cè)的ZYNQ與PC機(jī)中的環(huán)境通過(guò)網(wǎng)口進(jìn)行通信,以模擬智能體與環(huán)境的交互過(guò)程。訓(xùn)練開(kāi)始后,ZYNQ將會(huì)向PC機(jī)中的環(huán)境傳遞動(dòng)作信息,環(huán)境收到信息會(huì)后向ZYNQ反饋執(zhí)行動(dòng)作后的獎(jiǎng)勵(lì)、下一刻的狀態(tài)信息和當(dāng)前回合是否結(jié)束的標(biāo)志。

        圖8 Cartpole應(yīng)用驗(yàn)證平臺(tái)

        我們使用含有一個(gè)隱藏層的多層感知機(jī)作為DQN算法的基礎(chǔ)網(wǎng)絡(luò),來(lái)進(jìn)行Cartpole游戲的控制,網(wǎng)絡(luò)的結(jié)構(gòu)為4-320-2。針對(duì)三層的感知機(jī)網(wǎng)絡(luò),可以使用4個(gè)VMPU進(jìn)行A-B級(jí)聯(lián)完成Current_Q模塊的搭建,使用2個(gè)VMPU完成Target_Q模塊的搭建。根據(jù)本文所提的設(shè)計(jì)空間探索方法,對(duì)Cartpole應(yīng)用中DQN網(wǎng)絡(luò)在ZYNQ 7100上的部署實(shí)現(xiàn)進(jìn)行尋優(yōu),求得各個(gè)單元的循環(huán)展開(kāi)參數(shù)大小:SIMDA=4,PEA=PEB=32,SIMDB=2。

        3.3 實(shí)驗(yàn)結(jié)果與分析

        FPGA中加速器部分的設(shè)計(jì)使用賽靈思公司的Vivado HLS(v2018.3)開(kāi)發(fā)工具,表1為Cartpole應(yīng)用加速器的資源使用情況,從表中可以看出,通過(guò)設(shè)計(jì)空間探索預(yù)估的BRAM和DSP資源與實(shí)際消耗的相差無(wú)幾,稍微的誤差存在于預(yù)估過(guò)程未加入損失計(jì)算單元消耗的相關(guān)資源。通過(guò)對(duì)資源利用率的觀察,證明了所提出的設(shè)計(jì)空間探索方法的高效性。

        表1 資源使用報(bào)告

        為了探究本文FPGA加速器的對(duì)DQN算法的整體加速性能,進(jìn)行了與CPU、GPU的對(duì)比實(shí)驗(yàn),相關(guān)硬件平臺(tái)的型號(hào)、頻率如表2所示。時(shí)間測(cè)量采用時(shí)間戳計(jì)數(shù)的方式;GPU和CPU的功耗采用各自額定功率表示,加速器的的運(yùn)行功耗使用Vivado軟件綜合預(yù)估的額定功率表示;相比于FPGA的運(yùn)行時(shí)間,計(jì)算3種平臺(tái)的加速比,相關(guān)實(shí)驗(yàn)結(jié)果如表2所示。

        表2 3種硬件平臺(tái)訓(xùn)練32個(gè)樣本處理時(shí)間對(duì)比

        從表2可以看出,與GPU、CPU對(duì)比,本文提出的FPGA加速器運(yùn)行速度提高了28.08和12.03倍;基于FPGA設(shè)計(jì)的加速器在運(yùn)行功耗方面也具有明顯的優(yōu)勢(shì)。

        4 結(jié)束語(yǔ)

        本文提出了一種用于DQN算法加速的硬件架構(gòu)及其設(shè)計(jì)空間探索方法,其采用流式結(jié)構(gòu)實(shí)現(xiàn)加速器IP核設(shè)計(jì)。通過(guò)設(shè)計(jì)空間探索,我們可以針對(duì)不同和DQN網(wǎng)絡(luò)和芯片平臺(tái)進(jìn)行硬件加速實(shí)現(xiàn)。以Cartpole應(yīng)用為例,我們?cè)O(shè)計(jì)了一個(gè)三層的DQN網(wǎng)絡(luò),通過(guò)設(shè)計(jì)空間探索尋得了全局最優(yōu)的并行計(jì)算參數(shù),然后在ZYNQ 7100平臺(tái)上完成了設(shè)計(jì)的部署測(cè)試,測(cè)試結(jié)果表明,F(xiàn)PGA在訓(xùn)練時(shí)的計(jì)算時(shí)間和功耗方面相對(duì)于GPU/CPU具有明顯的優(yōu)勢(shì)。

        猜你喜歡
        設(shè)計(jì)
        二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:36
        基于89C52的32只三色LED搖搖棒設(shè)計(jì)
        電子制作(2019年15期)2019-08-27 01:11:50
        基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
        電子制作(2019年7期)2019-04-25 13:18:16
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專(zhuān)
        Coco薇(2017年5期)2017-06-05 08:53:16
        從平面設(shè)計(jì)到“設(shè)計(jì)健康”
        商周刊(2017年26期)2017-04-25 08:13:04
        国产精品高清网站| 无码人妻精品中文字幕免费| 精品国产车一区二区三区| 国产一区二区三区不卡在线观看| 亚洲热线99精品视频| 亚洲男人天堂2019| 人妖熟女少妇人妖少妇| 国产91成人精品高潮综合久久 | 亚洲成a人无码| 狠狠久久久久综合网| 亚洲国产精品第一区二区三区| 成熟妇女毛茸茸性视频| 内射人妻少妇无码一本一道| 女人被做到高潮免费视频| 中文字幕乱码中文乱码毛片 | 强开小婷嫩苞又嫩又紧视频韩国| 无码中文字幕日韩专区视频| 国产精品无码久久久一区蜜臀 | 国产精品白浆在线观看免费| 香蕉久久久久久久av网站| 亚洲无线码1区| 国产成人亚洲精品91专区高清| 人成午夜免费视频无码| 麻豆国产人妻欲求不满| 亚洲国产精品成人久久av| 国产一区二区三区在线视频观看| 屁屁影院ccyy备用地址| 国产一区二区精品在线观看| 丰满少妇又爽又紧又丰满动态视频| 亚洲综合极品美女av| 精品人妻人人做人人爽| 99久久久精品免费| 蜜桃传媒免费在线观看| 玩弄丰满奶水的女邻居| 国产白丝在线| 亚洲一区二区三区麻豆| 国产极品粉嫩福利姬萌白酱| 免费a级毛片无码a| 久久久诱惑一区二区三区| 干日本少妇一区二区三区| 国产伦久视频免费观看视频|