亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于執(zhí)行RMSprop梯度下降算法的裝置及方法與流程

文檔序號(hào):12863475閱讀:254來源:國(guó)知局
一種用于執(zhí)行RMSprop梯度下降算法的裝置及方法與流程

本發(fā)明涉及rmsprop算法應(yīng)用技術(shù)領(lǐng)域,具體地涉及一種用于執(zhí)行rmsprop梯度下降算法的裝置及方法,是有關(guān)于rmsprop梯度下降優(yōu)化算法的硬件實(shí)現(xiàn)的相關(guān)應(yīng)用。



背景技術(shù):

梯度下降優(yōu)化算法在函數(shù)逼近、優(yōu)化計(jì)算、模式識(shí)別和圖像處理等領(lǐng)域被廣泛應(yīng)用,rmsprop算法作為梯度下降優(yōu)化算法中的一種,由于其易于實(shí)現(xiàn),計(jì)算量小,所需存儲(chǔ)空間小以及對(duì)mini-batch數(shù)據(jù)集進(jìn)行處理時(shí)效果好等特征被廣泛的使用,并且使用專用裝置實(shí)現(xiàn)rmsprop算法可以顯著提高其執(zhí)行的速度。

目前,一種執(zhí)行rmsprop梯度下降算法的已知方法是使用通用處理器。該方法通過使用通用寄存器堆和通用功能部件執(zhí)行通用指令來支持上述算法。該方法的缺點(diǎn)之一是單個(gè)通用處理器的運(yùn)算性能較低,而多個(gè)通用處理器并行執(zhí)行時(shí),通用處理器之間相互通信又成為了性能瓶頸。另外,通用處理器需要把rmsprop算法對(duì)應(yīng)的相關(guān)運(yùn)算譯碼成一長(zhǎng)列運(yùn)算及訪存指令序列,處理器前端譯碼帶來了較大的功耗開銷。

另一種執(zhí)行rmsprop梯度下降算法的已知方法是使用圖形處理器(gpu)。該方法通過使用通用寄存器堆和通用流處理單元執(zhí)行通用單指令多數(shù)據(jù)流(simd)指令來支持上述算法。由于gpu是專門用來執(zhí)行圖形圖像運(yùn)算以及科學(xué)計(jì)算的設(shè)備,沒有對(duì)rmsprop梯度下降算法相關(guān)運(yùn)算的專門支持,仍然需要大量的前端譯碼工作才能執(zhí)行rmsprop梯度下降算法中相關(guān)的運(yùn)算,帶來了大量的額外開銷。另外,gpu只有較小的片上緩存,rmsprop梯度下降算法運(yùn)行中所需的中間變量數(shù)據(jù)如均方向量等需要反復(fù)從片外搬運(yùn),片外帶寬成為了主要性能瓶頸,同時(shí)帶來了巨大的功耗開銷。



技術(shù)實(shí)現(xiàn)要素:

(一)要解決的技術(shù)問題

有鑒于此,本發(fā)明的主要目的在于提供一種用于執(zhí)行rmsprop梯度下降算法的裝置及方法,以解決數(shù)據(jù)的通用處理器運(yùn)算性能不足,前段譯碼開銷大的問題,并避免反復(fù)向內(nèi)存讀取數(shù)據(jù),降低內(nèi)存訪問的帶寬。

(二)技術(shù)方案

為達(dá)到上述目的,本發(fā)明提供了一種用于執(zhí)行rmsprop梯度下降算法的裝置,該裝置包括直接內(nèi)存訪問單元1、指令緩存單元2、控制器單元3、數(shù)據(jù)緩存單元4、數(shù)據(jù)處理模塊5,其中:

直接內(nèi)存訪問單元1,用于訪問外部指定空間,向指令緩存單元2和數(shù)據(jù)處理模塊5讀寫數(shù)據(jù),完成數(shù)據(jù)的加載和存儲(chǔ);

指令緩存單元2,用于通過直接內(nèi)存訪問單元1讀取指令,并緩存讀取的指令;

控制器單元3,用于從指令緩存單元2中讀取指令,將讀取的指令譯碼為控制直接內(nèi)存訪問單元1、數(shù)據(jù)緩存單元4或數(shù)據(jù)處理模塊5行為的微指令;

數(shù)據(jù)緩存單元4,用于在初始化及數(shù)據(jù)更新過程中緩存均方矩陣;

數(shù)據(jù)處理模塊5,用于更新均方向量和待更新參數(shù),并將更新后的均方向量寫入到數(shù)據(jù)緩存單元4中,將更新后的待更新參數(shù)通過直接內(nèi)存訪問單元1寫入到外部指定空間中。

上述方案中,所述直接內(nèi)存訪問單元1是從外部指定空間向指令緩存單元2寫入指令,從外部指定空間讀取待更新參數(shù)和對(duì)應(yīng)的梯度值到數(shù)據(jù)處理模塊5,并將更新后的參數(shù)向量從數(shù)據(jù)處理模塊5直接寫入外部指定空間。

上述方案中,所述控制器單元3將讀取的指令譯碼為控制直接內(nèi)存訪問單元1、數(shù)據(jù)緩存單元4或數(shù)據(jù)處理模塊5行為的微指令,用以控制直接內(nèi)存訪問單元1從外部指定地址讀取數(shù)據(jù)和將數(shù)據(jù)寫入外部指定地址,控制數(shù)據(jù)緩存單元4通過直接內(nèi)存訪問單元1從外部指定地址獲取操作所需的指令,控制數(shù)據(jù)處理模塊5進(jìn)行待更新參數(shù)的更新運(yùn)算,以及控制數(shù)據(jù)緩存單元4與數(shù)據(jù)處理模塊5進(jìn)行數(shù)據(jù)傳輸。

上述方案中,所述數(shù)據(jù)緩存單元4在初始化時(shí)初始化均方矩陣rmst,在每次數(shù)據(jù)更新過程中將均方矩陣rmst-1讀出到數(shù)據(jù)處理模塊5中,在數(shù)據(jù)處理模塊5中更新為均方矩陣rmst,然后再寫入到數(shù)據(jù)緩存單元4中。在裝置運(yùn)行過程中,所述數(shù)據(jù)緩存單元4內(nèi)部始終保存著均方矩陣rmst的副本。

上述方案中,所述數(shù)據(jù)處理模塊5從數(shù)據(jù)緩存單元4中讀取均方向量rmst-1,通過直接內(nèi)存訪問單元1從外部指定空間中讀取待更新參數(shù)向量θt-1、梯度向量全局更新步長(zhǎng)α和均方向量更新率δ,將均方向量rmst-1更新為rmst,通過rmst更新待更新參數(shù)θt-1為θt,并將rmst回寫到數(shù)據(jù)緩存單元4中,將θt通過直接內(nèi)存控制單元1回寫到外部指定空間。

上述方案中,所述數(shù)據(jù)處理模塊5將均方向量rmst-1更新為rmst是根據(jù)公式實(shí)現(xiàn)的,所述數(shù)據(jù)處理模塊5將待更新向量θt-1更新為θt是根據(jù)公式實(shí)現(xiàn)的。

上述方案中,所述數(shù)據(jù)處理模塊5包括運(yùn)算控制子模塊51、向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55和基本運(yùn)算子模塊56,其中向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55以及基本運(yùn)算子模塊56并聯(lián)連接,運(yùn)算控制子模塊51分別與向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55以及基本運(yùn)算子模塊56串聯(lián)連接。

上述方案中,該裝置在對(duì)向量進(jìn)行運(yùn)算時(shí),向量運(yùn)算均為element-wise運(yùn)算,同一向量執(zhí)行某種運(yùn)算時(shí)不同位置元素是并行執(zhí)行運(yùn)算。

為達(dá)到上述目的,本發(fā)明還提供了一種用于執(zhí)行rmsprop梯度下降算法的方法,該方法包括:

初始化一個(gè)均方向量rms0,并從指定存儲(chǔ)單元中獲取待更新參數(shù)向量θt和對(duì)應(yīng)的梯度向量

在進(jìn)行梯度下降操作時(shí),先利用均方向量rmst-1、梯度向量和均方向量更新率δ更新均方向量rmst,然后將梯度向量除以均方向量的平方根再乘以全局更新步長(zhǎng)α得到對(duì)應(yīng)的梯度下降量,更新待更新向量θt-1為θt并輸出;重復(fù)此過程,直至待更新向量收斂。

上述方案中,所述初始化一個(gè)均方向量rms0,并從指定存儲(chǔ)單元中獲取待更新參數(shù)向量θt和對(duì)應(yīng)的梯度向量包括:

步驟s1,在指令緩存單元2的首地址處預(yù)先存入一條指令預(yù)取指令(instruction_io),該instruction_io指令用于驅(qū)動(dòng)直接內(nèi)存單元1從外部地址空間讀取與rmsprop梯度下降計(jì)算有關(guān)的所有指令。

步驟s2,運(yùn)算開始,控制器單元3從指令緩存單元2的首地址讀取該條instruction_io指令,根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部地址空間讀取與rmsprop梯度下降計(jì)算有關(guān)的所有指令,并將這些指令緩存入指令緩存單元2中;

步驟s3,控制器單元3從指令緩存單元2讀入一條超參量讀取指令(hyperparameter_io),根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部空間讀取全局更新步長(zhǎng)α,均方向量更新率δ、收斂閾值ct,然后送入數(shù)據(jù)處理模塊5中;

步驟s4,控制器單元3從指令緩存單元2讀入賦值指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4中的均方向量rmst-1初始化,并驅(qū)動(dòng)數(shù)據(jù)處理單元5中的迭代次數(shù)t被設(shè)置為1;

步驟s5,控制器單元3從指令緩存單元2讀入一條參數(shù)讀取指令(data_io),根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部指定空間讀取待更新參數(shù)向量θt-1和對(duì)應(yīng)的梯度向量然后送入到數(shù)據(jù)處理模塊5中;

步驟s6,控制器單元3從指令緩存單元2讀入一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將數(shù)據(jù)緩存單元4中的均方向量rmst-1傳輸?shù)綌?shù)據(jù)處理單元5中。

上述方案中,所述利用均方向量rmst-1、梯度向量和均方向量更新率δ更新均方向量rmst,是根據(jù)公式實(shí)現(xiàn)的,具體包括:控制器單元3從指令緩存單元2中讀取一條均方向量更新指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4進(jìn)行均方向量rmst-1的更新操作;在該更新操作中,均方向量更新指令被送至運(yùn)算控制子模塊51,運(yùn)算控制子模塊51發(fā)送相應(yīng)的指令進(jìn)行以下操作:發(fā)送運(yùn)算指令1(ins_1)至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56運(yùn)算(1-δ),發(fā)送運(yùn)算指令2(ins_2)至向量乘法并行運(yùn)行子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)行子模塊53分別計(jì)算(1-δ)rmst-1、其中向量對(duì)應(yīng)位置的元素的計(jì)算存在先后順序,不同位置之間并行計(jì)算;然后,發(fā)送運(yùn)算指令3(ins_3)至向量加法并行運(yùn)算子模塊52,驅(qū)動(dòng)向量加法并行運(yùn)算子模塊52計(jì)算得到更新后的均方向量rmst。

上述方案中,所述利用均方向量rmst-1、梯度向量和均方向量更新率δ更新均方向量rmst后,還包括:控制器單元3從指令緩存單元2讀取一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將更新后的均方向量rmst從數(shù)據(jù)處理單元5傳送到數(shù)據(jù)緩存單元4中。

上述方案中,所述將梯度向量除以均方向量的平方根再乘以全局更新步長(zhǎng)α得到對(duì)應(yīng)的梯度下降量,更新待更新向量θt-1為θt,是根據(jù)公式實(shí)現(xiàn)的,具體包括:控制器單元3從指令緩存單元2讀取一條參數(shù)向量更新指令,根據(jù)譯出的微指令,進(jìn)行參數(shù)向量的更新操作;在該更新操作中,參數(shù)向量更新指令被送至運(yùn)算控制子模塊51,運(yùn)算控制子模塊51控制相關(guān)運(yùn)算模塊進(jìn)行如下操作:發(fā)送運(yùn)算指令4(ins_4)至基本運(yùn)算單元子模塊56,驅(qū)動(dòng)基本運(yùn)算單元子模塊56計(jì)算出-α,迭代次數(shù)t加1;發(fā)送運(yùn)算指令5(ins_5)至向量平方根并行運(yùn)算子模塊55,驅(qū)動(dòng)向量平方根并行運(yùn)算子模塊55計(jì)算得到發(fā)送運(yùn)算指令6(ins_6)至向量乘法并行運(yùn)行子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)行子模塊53計(jì)算得到待兩個(gè)操作完成后,發(fā)送運(yùn)算指令7(ins_7)至向量除法并行運(yùn)行子模塊54,驅(qū)動(dòng)向量除法并行運(yùn)行子模塊54計(jì)算得到然后,發(fā)送運(yùn)算指令8(ins_8)至向量加法并行運(yùn)行子模塊52,驅(qū)動(dòng)向量加法并行運(yùn)行子模塊52計(jì)算得到θt;其中,θt-1是θ0在第t次循環(huán)時(shí)未更新前的值,第t次循環(huán)將θt-1更新為θt;運(yùn)算控制子模塊51發(fā)送運(yùn)算指令9(ins_9)至向量除法并行運(yùn)算子模塊54,驅(qū)動(dòng)向量除法并行運(yùn)算子模塊54運(yùn)算得到向量運(yùn)算控制子模塊51分別發(fā)送運(yùn)算指令10(ins_10)、運(yùn)算指令11(ins_11)向量加法并行運(yùn)算子模塊52和基本運(yùn)算子模塊56,計(jì)算得到sum=∑itempi、temp2=sum/n。

上述方案中,所述更新待更新向量θt-1為θt之后,還包括:控制器單元3從指令緩存單元2讀取一條databack_io指令,根據(jù)譯出的微指令,將更新后的參數(shù)向量θt從數(shù)據(jù)處理單元5通過直接內(nèi)存訪問單元1傳送至外部指定空間。

上述方案中,所述重復(fù)此過程直至待更新向量收斂的步驟中,包括判斷待更新向量是否收斂,具體判斷過程如下:控制器單元3從指令緩存單元2讀取一條收斂判斷指令,根據(jù)譯出的微指令,數(shù)據(jù)處理模塊5判斷更新后的參數(shù)向量是否收斂,若temp2<ct,則收斂,運(yùn)算結(jié)束。

(三)有益效果

從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果:

1、本發(fā)明提供的用于執(zhí)行rmsprop梯度下降算法的裝置及方法,通過采用專門用于執(zhí)行rmsprop梯度下降算法的裝置,可以解決數(shù)據(jù)的通用處理器運(yùn)算性能不足,前段譯碼開銷大的問題,加速相關(guān)應(yīng)用的執(zhí)行速度。

2、本發(fā)明提供的用于執(zhí)行rmsprop梯度下降算法的裝置及方法,由于采用了數(shù)據(jù)緩存單元暫存中間過程所需的矩向量,避免了反復(fù)向內(nèi)存讀取數(shù)據(jù),減少了裝置與外部地址空間之間的io操作,降低了內(nèi)存訪問的帶寬,解決了片外帶寬這一瓶頸。

3、本發(fā)明提供的用于執(zhí)行rmsprop梯度下降算法的裝置及方法,由于數(shù)據(jù)處理模塊采用相關(guān)的并行運(yùn)算子模塊進(jìn)行向量運(yùn)算,使得并行程度大幅提高。

4、本發(fā)明提供的用于執(zhí)行rmsprop梯度下降算法的裝置及方法,由于數(shù)據(jù)處理模塊采用相關(guān)的并行運(yùn)算子模塊進(jìn)行向量運(yùn)算,運(yùn)算的并行程度高,所以工作時(shí)的頻率較低,使得功耗開銷小。

附圖說明

為了更完整地理解本發(fā)明及其優(yōu)勢(shì),現(xiàn)在將參考結(jié)合附圖的以下描述,其中:

圖1示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行rmsprop梯度下降算法的裝置的整體結(jié)構(gòu)的示例框圖。

圖2示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行rmsprop梯度下降算法的裝置中數(shù)據(jù)處理模塊的示例框圖。

圖3示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行rmsprop梯度下降算法的方法的流程圖。

在所有附圖中,相同的裝置、部件、單元等使用相同的附圖標(biāo)記來表示。

具體實(shí)施方式

根據(jù)本發(fā)明實(shí)施例結(jié)合附圖對(duì)本發(fā)明示例性實(shí)施例的以下詳細(xì)描述,本發(fā)明的其它方面、優(yōu)勢(shì)和突出特征對(duì)于本領(lǐng)域技術(shù)人員將變得顯而易見。

在本發(fā)明中,術(shù)語“包括”和“含有”及其派生詞意為包括而非限制;術(shù)語“或”是包含性的,意為和/或。

在本說明書中,下述用于描述本發(fā)明原理的各種實(shí)施例只是說明,不應(yīng)該以任何方式解釋為限制發(fā)明的范圍。參照附圖的下述描述用于幫助全面理解由權(quán)利要求及其等同物限定的本發(fā)明的示例性實(shí)施例。下述描述包括多種具體細(xì)節(jié)來幫助理解,但這些細(xì)節(jié)應(yīng)認(rèn)為僅僅是示例性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)認(rèn)識(shí)到,在不背離本發(fā)明的范圍和精神的情況下,可以對(duì)本文中描述的實(shí)施例進(jìn)行多種改變和修改。此外,為了清楚和簡(jiǎn)潔起見,省略了公知功能和結(jié)構(gòu)的描述。此外,貫穿附圖,相同參考數(shù)字用于相似功能和操作。

根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行rmsprop梯度下降算法的裝置及方法,用以加速rmsprop梯度下降算法的應(yīng)用。首先,初始化一個(gè)均方向量rms0,并從指定存儲(chǔ)單元中獲取待更新參數(shù)向量θt和對(duì)應(yīng)的梯度向量然后,每次迭代時(shí),首先利用之前的均方向量rmst-1、梯度向量和均方向量更新率δ更新均方向量rmst,即之后,將梯度向量除以均方向量的平方根再乘以全局更新步長(zhǎng)α得到對(duì)應(yīng)的梯度下降量,更新待更新向量,即重復(fù)整個(gè)過程,直至待更新向量收斂。

圖1示出了根據(jù)本發(fā)明實(shí)施例的用于實(shí)現(xiàn)rmsprop梯度下降算法的裝置的整體結(jié)構(gòu)的示例框圖。如圖1所示,該裝置包括直接內(nèi)存訪問單元1、指令緩存單元2、控制器單元3、數(shù)據(jù)緩存單元4和數(shù)據(jù)處理模塊5,均可以通過硬件電路進(jìn)行實(shí)現(xiàn)。

直接內(nèi)存訪問單元1,用于訪問外部指定空間,向指令緩存單元2和數(shù)據(jù)處理模塊5讀寫數(shù)據(jù),完成數(shù)據(jù)的加載和存儲(chǔ)。具體是從外部指定空間向指令緩存單元2寫入指令,從外部指定空間讀取待更新參數(shù)和對(duì)應(yīng)的梯度值到數(shù)據(jù)處理模塊5,并將更新后的參數(shù)向量從數(shù)據(jù)處理模塊5直接寫入外部指定空間。

指令緩存單元2,用于通過直接內(nèi)存訪問單元1讀取指令,并緩存讀取的指令。

控制器單元3,用于從指令緩存單元2中讀取指令,將讀取的指令譯碼為控制直接內(nèi)存訪問單元1、數(shù)據(jù)緩存單元4或數(shù)據(jù)處理模塊5行為的微指令,并將各微指令發(fā)送至直接內(nèi)存訪問單元1、數(shù)據(jù)緩存單元4或數(shù)據(jù)處理模塊5,控制直接內(nèi)存訪問單元1從外部指定地址讀取數(shù)據(jù)和將數(shù)據(jù)寫入外部指定地址,控制數(shù)據(jù)緩存單元3通過直接內(nèi)存訪問單元1從外部指定地址獲取操作所需的指令,控制數(shù)據(jù)處理模塊5進(jìn)行待更新參數(shù)的更新運(yùn)算,以及控制數(shù)據(jù)緩存單元4與數(shù)據(jù)處理模塊5進(jìn)行數(shù)據(jù)傳輸。

數(shù)據(jù)緩存單元4,用于在初始化及數(shù)據(jù)更新過程中緩存均方矩陣;具體而言,數(shù)據(jù)緩存單元4在初始化時(shí)初始化均方矩陣rmst,在每次數(shù)據(jù)更新過程中將均方矩陣rmst-1讀出到數(shù)據(jù)處理模塊5中,在數(shù)據(jù)處理模塊5中更新為均方矩陣rmst,然后再寫入到數(shù)據(jù)緩存單元4中。在整個(gè)裝置運(yùn)行過程中,數(shù)據(jù)緩存單元4內(nèi)部始終保存著均方矩陣rmst的副本。在本發(fā)明中,由于采用了數(shù)據(jù)緩存單元暫存中間過程所需的矩向量,避免了反復(fù)向內(nèi)存讀取數(shù)據(jù),減少了裝置與外部地址空間之間的io操作,降低了內(nèi)存訪問的帶寬。

數(shù)據(jù)處理模塊5,用于更新均方向量和待更新參數(shù),并將更新后的均方向量寫入到數(shù)據(jù)緩存單元4中,將更新后的待更新參數(shù)通過直接內(nèi)存訪問單元1寫入到外部指定空間中;具體而言,數(shù)據(jù)處理模塊5從數(shù)據(jù)緩存單元4中讀取均方向量rmst-1,通過直接內(nèi)存訪問單元1從外部指定空間中讀取待更新參數(shù)向量θt-1、梯度向量全局更新步長(zhǎng)α和均方向量更新率δ。首先將均方向量rmst-1更新為rmst,即然后,通過rmst更新待更新參數(shù)θt-1為θt,即并將rmst回寫到數(shù)據(jù)緩存單元4中,將θt通過直接內(nèi)存控制單元1回寫到外部指定空間。在本發(fā)明中,由于數(shù)據(jù)處理模塊采用相關(guān)的并行運(yùn)算子模塊進(jìn)行向量運(yùn)算,使得并行程度大幅提高,所以工作時(shí)的頻率較低,進(jìn)而使得功耗開銷小。

圖2示出了根據(jù)本發(fā)明實(shí)施例的用于實(shí)現(xiàn)rmsprop梯度下降算法相關(guān)應(yīng)用的裝置中數(shù)據(jù)處理模塊的示例框圖。如圖2所示,數(shù)據(jù)處理模塊5包括運(yùn)算控制子模塊51、向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55和基本運(yùn)算子模塊56,其中向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55以及基本運(yùn)算子模塊56并聯(lián)連接,運(yùn)算控制子模塊51分別與向量加法并行運(yùn)算子模塊52、向量乘法并行運(yùn)算子模塊53、向量除法并行運(yùn)算子模塊54、向量平方根并行運(yùn)算子模塊55以及基本運(yùn)算子模塊56串聯(lián)連接。該裝置在對(duì)向量進(jìn)行運(yùn)算時(shí),向量運(yùn)算均為element-wise運(yùn)算,同一向量執(zhí)行某種運(yùn)算時(shí)不同位置元素是并行執(zhí)行運(yùn)算。

圖3示出了根據(jù)本發(fā)明實(shí)施例的用于執(zhí)行rmsprop梯度下降算法的方法的流程圖,具體包括以下步驟:

步驟s1,在指令緩存單元2的首地址處預(yù)先存入一條指令預(yù)取指令(instruction_io),該instruction_io指令用于驅(qū)動(dòng)直接內(nèi)存單元1從外部地址空間讀取與rmsprop梯度下降計(jì)算有關(guān)的所有指令。

步驟s2,運(yùn)算開始,控制器單元3從指令緩存單元2的首地址讀取該條instruction_io指令,根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部地址空間讀取與rmsprop梯度下降計(jì)算有關(guān)的所有指令,并將這些指令緩存入指令緩存單元2中;

步驟s3,控制器單元3從指令緩存單元2讀入一條超參量讀取指令(hyperparameter_io),根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部空間讀取全局更新步長(zhǎng)α,均方向量更新率δ、收斂閾值ct,然后送入數(shù)據(jù)處理模塊5中;

步驟s4,控制器單元3從指令緩存單元2讀入賦值指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4中的均方向量rmst-1初始化,并驅(qū)動(dòng)數(shù)據(jù)處理單元5中的迭代次數(shù)t被設(shè)置為1;

步驟s5,控制器單元3從指令緩存單元2讀入一條參數(shù)讀取指令(data_io),根據(jù)譯出的微指令,驅(qū)動(dòng)直接內(nèi)存訪問單元1從外部指定空間讀取待更新參數(shù)向量θt-1和對(duì)應(yīng)的梯度向量然后送入到數(shù)據(jù)處理模塊5中;

步驟s6,控制器單元3從指令緩存單元2讀入一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將數(shù)據(jù)緩存單元4中的均方向量rmst-1傳輸?shù)綌?shù)據(jù)處理單元5中。

步驟s7,控制器單元3從指令緩存單元2中讀取一條均方向量更新指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4進(jìn)行均方向量rmst-1的更新操作。在該更新操作中,均方向量更新指令被送至運(yùn)算控制子模塊51,運(yùn)算控制子模塊51發(fā)送相應(yīng)的指令進(jìn)行以下操作:發(fā)送運(yùn)算指令1(ins_1)至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56運(yùn)算(1-δ),發(fā)送運(yùn)算指令2(ins_2)至向量乘法并行運(yùn)行子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)行子模塊53分別計(jì)算(1-δ)rmst-1、其中向量對(duì)應(yīng)位置的元素的計(jì)算存在先后順序,不同位置之間并行計(jì)算。然后,發(fā)送運(yùn)算指令3(ins_3)至向量加法并行運(yùn)算子模塊52,驅(qū)動(dòng)向量加法并行運(yùn)算子模塊52計(jì)算得到更新后的均方向量rmst。

步驟s8,控制器單元3從指令緩存單元2讀取一條數(shù)據(jù)傳輸指令,根據(jù)譯出的微指令,將更新后的均方向量rmst從數(shù)據(jù)處理單元5傳送到數(shù)據(jù)緩存單元4中。

步驟s9,控制器單元3從指令緩存單元2讀取一條參數(shù)向量運(yùn)算指令,根據(jù)譯出的微指令,進(jìn)行參數(shù)向量的更新操作。在該更新操作中,參數(shù)向量更新指令被送至運(yùn)算控制子模塊51,運(yùn)算控制子模塊51控制相關(guān)運(yùn)算模塊進(jìn)行如下操作:發(fā)送運(yùn)算指令4(ins_4)至基本運(yùn)算單元子模塊56,驅(qū)動(dòng)基本運(yùn)算單元子模塊56計(jì)算出-α,迭代次數(shù)t加1;發(fā)送運(yùn)算指令5(ins_5)至向量平方根并行運(yùn)算子模塊55,驅(qū)動(dòng)向量平方根并行運(yùn)算子模塊55計(jì)算得到發(fā)送運(yùn)算指令6(ins_6)至向量乘法并行運(yùn)行子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)行子模塊53計(jì)算得到待兩個(gè)操作完成后,發(fā)送運(yùn)算指令7(ins_7)至向量除法并行運(yùn)行子模塊54,驅(qū)動(dòng)向量除法并行運(yùn)行子模塊54計(jì)算得到然后,發(fā)送運(yùn)算指令8(ins_8)至向量加法并行運(yùn)行子模塊52,驅(qū)動(dòng)向量加法并行運(yùn)行子模塊52計(jì)算得到θt;其中,θt-1是θ0在第t次循環(huán)時(shí)未更新前的值,第t次循環(huán)將θt-1更新為θt;運(yùn)算控制子模塊51發(fā)送運(yùn)算指令9(ins_9)至向量除法并行運(yùn)算子模塊54,驅(qū)動(dòng)向量除法并行運(yùn)算子模塊54運(yùn)算得到向量運(yùn)算控制子模塊51分別發(fā)送運(yùn)算指令10(ins_10)、運(yùn)算指令11(ins_11)向量加法并行運(yùn)算子模塊52和基本運(yùn)算子模塊56,計(jì)算得到sum=∑itempi、temp2=sum/n。

步驟s10,控制器單元3從指令緩存單元2讀取一條待更新量寫回指令(databack_io),根據(jù)譯出的微指令,將更新后的參數(shù)向量θt從數(shù)據(jù)處理單元5通過直接內(nèi)存訪問單元1傳送至外部指定空間。

步驟s11,控制器單元3從指令緩存單元2讀取一條收斂判斷指令,根據(jù)譯出的微指令,數(shù)據(jù)處理模塊5判斷更新后的參數(shù)向量是否收斂,若temp2<ct,則收斂,運(yùn)算結(jié)束,否則,轉(zhuǎn)到步驟s5處繼續(xù)執(zhí)行。

本發(fā)明通過采用專門用于執(zhí)行rmsprop梯度下降算法的裝置,可以解決數(shù)據(jù)的通用處理器運(yùn)算性能不足,前段譯碼開銷大的問題,加速相關(guān)應(yīng)用的執(zhí)行速度。同時(shí),對(duì)數(shù)據(jù)緩存單元的應(yīng)用,避免了反復(fù)向內(nèi)存讀取數(shù)據(jù),降低了內(nèi)存訪問的帶寬。

前面的附圖中所描繪的進(jìn)程或方法可通過包括硬件(例如,電路、專用邏輯等)、固件、軟件(例如,被具體化在非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)上的軟件),或兩者的組合的處理邏輯來執(zhí)行。雖然上文按照某些順序操作描述了進(jìn)程或方法,但是,應(yīng)該理解,所描述的某些操作能以不同順序來執(zhí)行。此外,可并行地而非順序地執(zhí)行一些操作。

在前述的說明書中,參考其特定示例性實(shí)施例描述了本發(fā)明的各實(shí)施例。顯然,可對(duì)各實(shí)施例做出各種修改,而不背離所附權(quán)利要求所述的本發(fā)明的更廣泛的精神和范圍。相應(yīng)地,說明書和附圖應(yīng)當(dāng)被認(rèn)為是說明性的,而不是限制性的。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1