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

一種用于執(zhí)行Adam梯度下降訓(xùn)練算法的裝置及方法與流程

文檔序號(hào):12863477閱讀:253來源:國(guó)知局
一種用于執(zhí)行Adam梯度下降訓(xùn)練算法的裝置及方法與流程

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



背景技術(shù):

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

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

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



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

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

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

(二)技術(shù)方案

為達(dá)到上述目的,本發(fā)明提供了一種用于執(zhí)行adam梯度下降訓(xùn)練算法的裝置,該裝置包括直接內(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,用于更新矩向量,計(jì)算矩估計(jì)向量,更新待更新向量,并將更新后的矩向量寫入到數(shù)據(jù)緩存單元4中,將更新后的待更新向量通過直接內(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í)初始化一階矩向量mt、二階矩向量vt,在每次數(shù)據(jù)更新過程中將一階矩向量mt-1和二階矩向量vt-1讀出并送至數(shù)據(jù)處理模塊5中,在數(shù)據(jù)處理模塊5中更新為一階矩向量mt和二階矩向量vt,然后再寫入到數(shù)據(jù)緩存單元4中。

上述方案中,在裝置運(yùn)行過程中,所述數(shù)據(jù)緩存單元4內(nèi)部始終保存著一階矩向量mt、二階矩向量vt的副本。

上述方案中,所述數(shù)據(jù)處理模塊5從數(shù)據(jù)緩存單元4中讀取矩向量mt-1、vt-1,通過直接內(nèi)存訪問單元1從外部指定空間中讀取待更新向量θt-1、梯度向量更新步長(zhǎng)α以及指數(shù)衰減率β1和β2;然后將矩向量mt-1、vt-1更新為mt、vt,通過mt、vt計(jì)算矩估計(jì)向量最后將待更新向量θt-1更新為θt,并將mt、vt寫入到數(shù)據(jù)緩存單元4中,將θt通過直接內(nèi)存訪問單元1寫入到外部指定空間中。

上述方案中,所述數(shù)據(jù)處理模塊5將矩向量mt-1、vt-1更新為mt是根據(jù)公式實(shí)現(xiàn)的,所述數(shù)據(jù)處理模塊5通過mt、vt計(jì)算矩估計(jì)向量是根據(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í)行adam梯度下降訓(xùn)練算法的方法,該方法包括:

初始化一階矩向量m0、二階矩向量v0、指數(shù)衰減率β1、β2以及學(xué)習(xí)步長(zhǎng)α,并從外部指定空間中獲取待更新向量θ0;

在進(jìn)行梯度下降操作時(shí),先利用由外部傳入的梯度值和指數(shù)衰減率更新一階矩向量mt-1、二階矩向量vt-1,然后通過矩向量運(yùn)算得到有偏矩估計(jì)向量最后更新待更新向量θt-1為θt并輸出;重復(fù)此過程,直至待更新向量收斂。

上述方案中,所述初始化一階矩向量mo、二階矩向量vo、指數(shù)衰減率β1、β2以及學(xué)習(xí)步長(zhǎng)α,并從外部指定空間中獲取待更新向量θ0,包括:

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

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

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

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

在步驟s5,控制器單元3從指令緩存單元2讀入一條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中的一階矩向量mt-1和二階矩向量vt-1傳輸?shù)綌?shù)據(jù)處理單元5中。

上述方案中,所述利用由外部傳入的梯度值和指數(shù)衰減率更新一階矩向量mt-1、二階矩向量vt-1,是根據(jù)公式實(shí)現(xiàn)的,具體包括:控制器單元3從指令緩存單元2中讀取一條矩向量更新指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4進(jìn)行一階矩向量mt-1和二階矩向量vt-1的更新操作,在該更新操作中,矩向量更新指令被送至運(yùn)算控制子模塊51,運(yùn)算控制子模塊51發(fā)送相應(yīng)指令進(jìn)行以下操作:發(fā)送ins_1指令至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56計(jì)算(1-β1)和(1-β2);發(fā)送ins_2指令至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53計(jì)算得到然后,發(fā)送ins_3指令至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53同時(shí)計(jì)算β1mt-1、β2vt-1和結(jié)果分別記為a1、a2、b1和b2;然后,將a1和a2、b1和b2分別作為兩個(gè)輸入,送至向量加法并行運(yùn)算子模塊52,得到更新后的一階矩向量mt和二階矩向量vt。

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

上述方案中,所述通過矩向量運(yùn)算得到有偏矩估計(jì)向量是根據(jù)公式實(shí)現(xiàn)的,具體包括:控制器單元3從指令緩存單元2讀取一條矩估計(jì)向量運(yùn)算指令,根據(jù)譯出的微指令,驅(qū)動(dòng)運(yùn)算控制子模塊51進(jìn)行矩估計(jì)向量的計(jì)算,運(yùn)算控制子模塊51發(fā)送相應(yīng)指令進(jìn)行如下操作:運(yùn)算控制子模塊51發(fā)送指令ins_4至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56計(jì)算出迭代次數(shù)t加1,運(yùn)算控制子模塊51發(fā)送指令ins_5至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53并行計(jì)算一階矩向量mt和二階矩向量vt和的乘積得到有偏矩估計(jì)向量

上述方案中,所述更新待更新向量θt-1為θt是根據(jù)公式實(shí)現(xiàn)的,具體包括:控制器單元3從指令緩存單元2讀取一條參數(shù)向量更新指令,根據(jù)譯出的微指令,驅(qū)動(dòng)運(yùn)算控制子模塊51進(jìn)行如下的運(yùn)算:運(yùn)算控制子模塊51發(fā)送指令ins_6至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56計(jì)算出-α;運(yùn)算控制子模塊51發(fā)送指令ins_7至向量平方根并行運(yùn)算子模塊55,驅(qū)動(dòng)其運(yùn)算得到運(yùn)算控制子模塊51發(fā)送指令ins_7至向量除法并行運(yùn)算子模塊54驅(qū)動(dòng)其運(yùn)算得到運(yùn)算控制子模塊51發(fā)送指令ins_8至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)其運(yùn)算得到運(yùn)算控制子模塊51發(fā)送指令ins_9至向量加法并行運(yùn)算子模塊52,驅(qū)動(dòng)其計(jì)算得到更新后的參數(shù)向量θt;其中,θt-1是θ0在第t次循環(huán)時(shí)未更新前的值,第t次循環(huán)將θt-1更新為θt;運(yùn)算控制子模塊51發(fā)送指令ins_10至向量除法并行運(yùn)算子模塊54,驅(qū)動(dòng)其運(yùn)算得到向量運(yùn)算控制子模塊51分別發(fā)送指令ins_11、ins_12至向量加法并行運(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í)行adam梯度下降訓(xùn)練算法的裝置及方法,通過采用專門用于執(zhí)行adam梯度下降訓(xùn)練算法的裝置,可以解決數(shù)據(jù)的通用處理器運(yùn)算性能不足,前段譯碼開銷大的問題,加速相關(guān)應(yīng)用的執(zhí)行速度。

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

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

4、本發(fā)明提供的用于執(zhí)行adam梯度下降訓(xùn)練算法的裝置及方法,由于數(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í)行adam梯度下降訓(xùn)練算法的裝置的整體結(jié)構(gòu)的示例框圖。

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

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

在所有附圖中,相同的裝置、部件、單元等使用相同的附圖標(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í)行adam梯度下降訓(xùn)練算法的裝置及方法,用以加速adam梯度下降算法的應(yīng)用。首先,初始化一階矩向量m0、二階矩向量v0、指數(shù)衰減率β1、β2以及學(xué)習(xí)步長(zhǎng)α,并從外部指定空間中獲取待更新向量θo;每次在進(jìn)行梯度下降操作時(shí),先利用由外部傳入的梯度值和指數(shù)衰減率更新一階矩向量mt-1、二階矩向量vt-1,即然后通過矩向量運(yùn)算得到有偏矩估計(jì)向量最后更新待更新向量θt-1為θt并輸出,即其中,θt-1是θ0在第t次循環(huán)時(shí)未更新前的值,第t次循環(huán)將θt-1更新為θt。重復(fù)此過程,直至待更新向量收斂。

圖1示出了根據(jù)本發(fā)明實(shí)施例的用于實(shí)現(xiàn)adam梯度下降算法的裝置的整體結(jié)構(gòu)的示例框圖。如圖1所示,該裝置包括直接內(nèi)存訪問單元1、指令緩存單元2、控制器單元3、數(shù)據(jù)緩存單元4和數(shù)據(jù)處理模塊5,均可以通過硬件電路實(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í)數(shù)據(jù)緩存單元4初始化一階矩向量mt、二階矩向量vt,在每次數(shù)據(jù)更新過程中數(shù)據(jù)緩存單元4將一階矩向量mt-1和二階矩向量vt-1讀出并送至數(shù)據(jù)處理模塊5中,在數(shù)據(jù)處理模塊5中更新為一階矩向量mt和二階矩向量vt,然后再寫入到數(shù)據(jù)緩存單元4中。在裝置運(yùn)行過程中,所述數(shù)據(jù)緩存單元4內(nèi)部始終保存著一階矩向量mt、二階矩向量vt的副本。在本發(fā)明中,由于采用了數(shù)據(jù)緩存單元暫存中間過程所需的矩向量,避免了反復(fù)向內(nèi)存讀取數(shù)據(jù),減少了裝置與外部地址空間之間的io操作,降低了內(nèi)存訪問的帶寬。

數(shù)據(jù)處理模塊5,用于更新矩向量,計(jì)算矩估計(jì)向量,更新待更新向量,并將更新后的矩向量寫入到數(shù)據(jù)緩存單元4中,將更新后的待更新向量通過直接內(nèi)存訪問單元1寫入到外部指定空間中;具體而言,數(shù)據(jù)處理模塊5從數(shù)據(jù)緩存單元4中讀取矩向量mt-1、vt-1,通過直接內(nèi)存訪問單元1從外部指定空間中讀取待更新向量θt-1、梯度向量更新步長(zhǎng)α以及指數(shù)衰減率β1和β2;然后將矩向量mt-1、vt-1更新為mt、vt,即通過mt、vt計(jì)算矩估計(jì)向量最后將待更新向量θt-1更新為θt,即并將mt、vt寫入到數(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)adam梯度下降算法相關(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í)行adam梯度下降訓(xùn)練算法的方法的流程圖,具體包括以下步驟:

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

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

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

步驟s4,控制器單元3從指令緩存單元2讀入賦值指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4中的一階矩向量mt-1和vt-1進(jìn)行初始化,并驅(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中的一階矩向量mt-1和二階矩向量vt-1傳輸?shù)綌?shù)據(jù)處理單元5中。

步驟s7,控制器單元3從指令緩存單元2中讀取一條矩向量更新指令,根據(jù)譯出的微指令,驅(qū)動(dòng)數(shù)據(jù)緩存單元4進(jìn)行一階矩向量mt-1和二階矩向量vt-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計(jì)算(1-β1)和(1-β2);發(fā)送運(yùn)算指令2(ins_2)至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53計(jì)算得到然后,發(fā)送運(yùn)算指令3(ins_3)至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53同時(shí)計(jì)算β1mt-1、β2vt-1和結(jié)果分別記為a1、a2、b1和b2;然后,將a1和a2、b1和b2分別作為兩個(gè)輸入,送至向量加法并行運(yùn)算子模塊52,得到更新后的一階矩向量mt和二階矩向量vt。

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

步驟s9,控制器單元3從指令緩存單元2讀取一條矩估計(jì)向量運(yùn)算指令,根據(jù)譯出的微指令,驅(qū)動(dòng)運(yùn)算控制子模塊51進(jìn)行矩估計(jì)向量的計(jì)算,運(yùn)算控制子模塊51發(fā)送相應(yīng)指令進(jìn)行如下操作:運(yùn)算控制子模塊51發(fā)送運(yùn)算指令4(ins_4)至基本運(yùn)算子模塊56,驅(qū)動(dòng)基本運(yùn)算子模塊56計(jì)算出迭代次數(shù)t加1,運(yùn)算控制子模塊51發(fā)送運(yùn)算指令5(ins_5)至向量乘法并行運(yùn)算子模塊53,驅(qū)動(dòng)向量乘法并行運(yùn)算子模塊53并行計(jì)算一階矩向量mt和二階矩向量vt和的乘積得到有偏矩估計(jì)向量

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

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

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

本發(fā)明通過采用專門用于執(zhí)行adam梯度下降訓(xùn)練算法的裝置,可以解決數(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