欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法及裝置與流程

文檔序號(hào):40480541發(fā)布日期:2024-12-31 12:48閱讀:10來源:國知局
一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī),尤其涉及一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法及裝置。


背景技術(shù):

1、隨著人工智能技術(shù)的發(fā)展,特別是深度學(xué)習(xí)技術(shù)的進(jìn)步,注意力機(jī)制(attentionmechanism),因其在處理長依賴關(guān)系上的優(yōu)越性能而逐漸成為自然語言處理、語音識(shí)別等技術(shù)領(lǐng)域的核心組件。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型在處理長序列時(shí)存在梯度消失或梯度爆炸的問題,同時(shí),隨著序列長度的增長,模型計(jì)算的復(fù)雜度與序列長度的平方成線性關(guān)系,這使得大模型在長序列數(shù)據(jù)上的處理變得非常耗時(shí)。

2、近年來,transformer架構(gòu)通過引入滑動(dòng)窗口自注意力機(jī)制(sliding?windowattention,swa),允許模型并行處理固定窗口大小的數(shù)據(jù),從而顯著提高了訓(xùn)練效率。

3、swa的計(jì)算過程如下:

4、

5、其中,為二維矩陣,n1為文本長度,h為隱藏層長度;dk為矩陣第二維度的長度h,kt為矩陣k的轉(zhuǎn)置。在進(jìn)行softmax處理之前乘以一個(gè)掩碼(),sa的mask為下三角的矩陣,使得每個(gè)文本位置的token只注意到該位置及之前的文本內(nèi)容。swa的mask與sa不同,存在一個(gè)窗口大小(window?size),使得attention只關(guān)注窗口大小內(nèi)的文本內(nèi)容。

6、在大模型(large?language?model,llm)推理過程了為了減少模型的重復(fù)計(jì)算,一般會(huì)使用kv?cache技術(shù)對attention中計(jì)算的k、v矩陣進(jìn)行緩存,避免了新請求query推理計(jì)算時(shí)重復(fù)歷史kv矩陣的計(jì)算,降低模型推理的計(jì)算量,提高模型的推理速度。

7、然而現(xiàn)有的一些kv?cache技術(shù)對于swa計(jì)算存在內(nèi)存的利用率較低、存儲(chǔ)效率低下的問題。


技術(shù)實(shí)現(xiàn)思路

1、本發(fā)明提供一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法及裝置,以解決現(xiàn)有技術(shù)在滑動(dòng)窗口注意力機(jī)制中內(nèi)存存儲(chǔ)效率較低,進(jìn)而導(dǎo)致大模型對于序列處理速度慢的問題。

2、第一個(gè)方面,本發(fā)明提供了一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法,具體包括如下步驟:

3、步驟s1、獲取大語言模型(large?language?model,llm)的參數(shù);

4、步驟s2、根據(jù)所述llm的參數(shù),在llm推理計(jì)算前為所述llm中的每個(gè)解碼層(decoder?layer)分別分配兩個(gè)長度為n的環(huán)形緩存塊(ring?buffer?cache?block,rbcb)krcache和v?rcache;

5、步驟s3、在llm輸入數(shù)據(jù)準(zhǔn)備階段,根據(jù)輸入數(shù)據(jù)token0,token1,...,tokenk和相應(yīng)下標(biāo)(在本技術(shù)中,所述“相應(yīng)下標(biāo)”表示,對于tokeni,其相應(yīng)下標(biāo)為i),為每個(gè)token分配k?rcache和v?rcache的環(huán)形緩存位置索引;

6、步驟s4、根據(jù)所有token的環(huán)形緩存位置索引,將llm推理過程中每個(gè)token的k矩陣和v矩陣分別存儲(chǔ)在k?rcache和v?rcache對應(yīng)(在本技術(shù)中,所述“對應(yīng)”表示,對于tokeni,通過步驟s3為其分配的環(huán)形緩存位置索引為indexi,其k矩陣存儲(chǔ)在k?rcache的第indexi個(gè)位置,其v矩陣存儲(chǔ)在v?rcache的第indexi個(gè)位置)的環(huán)形緩存位置。

7、其中,n表示滑動(dòng)窗口注意力(sliding?window?attention,swa)窗口的大小,n為正整數(shù)。

8、其中,rcache表示環(huán)形緩存(ring?buffer?cache)。

9、其中,i、k均為正整數(shù),i大于等于1且i小于等于k。

10、優(yōu)選地,步驟s2中,所述環(huán)形緩存塊表示由n個(gè)塊組成,用于存放k矩陣和v矩陣緩存的緩存塊。

11、優(yōu)選地,步驟s2中,每個(gè)解碼層的k矩陣和v矩陣各自分配有一個(gè)環(huán)形緩存塊,分別為[kc0,kc1,...,kcn-1]和[vc0,vc1,...,vcn-1]。

12、其中,在本技術(shù)中,因?yàn)閘lm生成是個(gè)循環(huán)推理的過程,每次推理前都需要進(jìn)行一個(gè)輸入數(shù)據(jù)準(zhǔn)備或處理,故描述為在llm輸入數(shù)據(jù)準(zhǔn)備階段。llm在循環(huán)推理的過程中,第一次推理稱為prefill階段,第二次推理直至結(jié)束推理稱為decode階段。

13、優(yōu)選地,步驟s3中,在llm輸入數(shù)據(jù)準(zhǔn)備階段,根據(jù)輸入數(shù)據(jù)token0,token1,...,tokenk和相應(yīng)下標(biāo),為每個(gè)token分配k?rcache和v?rcache索引位置,具體包括如下步驟:

14、步驟s301、在llm第一次推理時(shí)(或者可以表示為第一次推理prefill階段前的數(shù)據(jù)準(zhǔn)備階段),輸入k個(gè)token,當(dāng)j小于等于n-1時(shí),將tokeni的環(huán)形緩存位置索引分配為j,并將所述環(huán)形緩存位置索引輸入索引隊(duì)列qj;當(dāng)j大于n-1時(shí),將后n個(gè)token的k矩陣和v矩陣進(jìn)行緩存,環(huán)形緩存位置索引分配為[0,1,...,n-1];

15、步驟s302、在llm自回歸推理過程中(或者可以表示為decode階段每次推理前的數(shù)據(jù)準(zhǔn)備階段),按照下標(biāo)從小到大每次獲取一個(gè)token,獲取此時(shí)索引隊(duì)列q的最后一個(gè)索引n,根據(jù)所述索引n重新分配當(dāng)前token在環(huán)形緩存塊中的環(huán)形緩存位置索引index并將所述環(huán)形緩存位置索引index添加到索引隊(duì)列q中;

16、步驟s303、重復(fù)執(zhí)行步驟s302,直至llm自回歸生成結(jié)束;

17、其中,j為正整數(shù),j大于等于1且j小于等于k。

18、優(yōu)選地,步驟s302中,索引隊(duì)列q長度與k?rcache和v?rcache長度均相同,所述環(huán)形緩存位置索引index的具體計(jì)算如下所示:

19、index=(n+1)%n;

20、其中,n為正整數(shù),%表示取余;index為正整數(shù)。由上式可知,索引隊(duì)列q中存儲(chǔ)的索引最大為n-1,對應(yīng)環(huán)形緩存的最后一個(gè)位置。隨著n的增大,環(huán)形緩存位置索引index會(huì)從0~n-1循環(huán),即新生成token的k矩陣和v矩陣從環(huán)形緩存塊起始位置存儲(chǔ)到緩存塊最后一個(gè)位置后,然后再從起始位置進(jìn)行存儲(chǔ),形成循環(huán)重復(fù)利用緩存空間。

21、優(yōu)選地,一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法,還包括:

22、步驟s5、swa在解碼計(jì)算階段,根據(jù)所有token的環(huán)形緩存位置索引,獲取k?rcache和v?rcache中存儲(chǔ)的k矩陣和v矩陣,并通過k矩陣和v矩陣進(jìn)行計(jì)算,形成llm的注意力計(jì)算結(jié)果。

23、優(yōu)選地,步驟s5中,每次attention計(jì)算過程中,k矩陣和v矩陣的索引均一一對應(yīng)(例如,,,);

24、從上述計(jì)算過程可以看出,每次計(jì)算k矩陣和v矩陣的下標(biāo)均保持一致,attn3(q,k,v)是q3與每對k矩陣、v矩陣計(jì)算的和,下標(biāo)與每對矩陣k和矩陣v計(jì)算的順序無關(guān)。因此,在attention計(jì)算過程中無需根據(jù)輸入token的順序計(jì)算,僅需從環(huán)形緩存塊的起始位置計(jì)算即可。

25、其中,在本技術(shù)中,所述索引隊(duì)列q用于存放環(huán)形緩存位置索引;所述環(huán)形緩存位置索引表示k矩陣存放在k?rcache中的位置序號(hào)和v矩陣存放在v?rcache中的位置序號(hào);所述索引隊(duì)列q的最后一個(gè)索引表示索引隊(duì)列q的最后一個(gè)值。

26、第二個(gè)方面,本發(fā)明還提供了一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速裝置,具體包括如下模塊:

27、大語言模型參數(shù)獲取模塊,用于獲取大語言模型(large?language?model,llm)的參數(shù);

28、緩存分配模塊,用于根據(jù)所述llm的參數(shù),在llm推理計(jì)算前為所述llm中的每個(gè)解碼層分別分配兩個(gè)長度為n的環(huán)形緩存塊k?rcache和v?rcache;

29、緩存索引分配模塊,用于在llm輸入數(shù)據(jù)準(zhǔn)備階段,根據(jù)輸入數(shù)據(jù)token0,token1,...,tokenk和相應(yīng)下標(biāo),為每個(gè)token分配k?rcache和v?rcache的環(huán)形緩存位置索引;

30、緩存存儲(chǔ)模塊,用于根據(jù)所有token的環(huán)形緩存位置索引,將llm推理過程中每個(gè)token的k矩陣和v矩陣分別存儲(chǔ)在k?rcache和v?rcache對應(yīng)的環(huán)形緩存位置。

31、其中,n表示滑動(dòng)窗口注意力(sliding?window?attention,swa)窗口的大小,n為正整數(shù)。

32、其中,rcache表示環(huán)形緩存(ring?buffer?cache)。

33、其中,i、k均為正整數(shù),i大于等于1且i小于等于k。

34、優(yōu)選地,緩存分配模塊中,所述環(huán)形緩存塊表示由n個(gè)塊組成,用于存放k矩陣和v矩陣緩存的緩存塊。

35、優(yōu)選地,緩存分配模塊中,每個(gè)解碼層的k矩陣和v矩陣各自分配有一個(gè)環(huán)形緩存塊,分別為[kc0,kc1,...,kcn-1]和[vc0,vc1,...,vcn-1]。

36、其中,n為正整數(shù)。

37、優(yōu)選地,緩存索引分配模塊具體包括如下子模塊:

38、第一緩存索引分配子模塊,用于在llm第一次推理時(shí),輸入k個(gè)token,當(dāng)j小于等于n-1時(shí),將tokeni的環(huán)形緩存位置索引分配為j,并將所述環(huán)形緩存位置索引輸入索引隊(duì)列qj;當(dāng)j大于n-1時(shí),將后n個(gè)token的k矩陣和v矩陣進(jìn)行緩存,環(huán)形緩存位置索引分配為[0,1,...,n-1];

39、第二緩存索引分配子模塊,用于在llm自回歸推理過程中,按照下標(biāo)從小到大每次獲取一個(gè)token,獲取此時(shí)索引隊(duì)列q的最后一個(gè)索引n,根據(jù)所述索引n重新分配當(dāng)前token在環(huán)形緩存塊中的環(huán)形緩存位置索引index并將所述環(huán)形緩存位置索引index添加到索引隊(duì)列q中;

40、第三緩存索引分配子模塊,用于重復(fù)執(zhí)行所述第二緩存索引分配子模塊,直至llm自回歸生成結(jié)束;

41、其中,j為正整數(shù),j大于等于1且j小于等于k。

42、優(yōu)選地,第二緩存索引分配子模塊中,索引隊(duì)列q長度與k?rcache和v?rcache長度均相同,所述環(huán)形緩存位置索引index的具體計(jì)算如下所示:

43、index=(n+1)%n;

44、其中,n為正整數(shù),%表示取余;index為正整數(shù)。由上式可知,索引隊(duì)列q中存儲(chǔ)的索引最大為n-1,對應(yīng)環(huán)形緩存的最后一個(gè)位置。隨著n的增大,環(huán)形緩存位置索引index會(huì)從0~n-1循環(huán),即新生成token的k矩陣和v矩陣從環(huán)形緩存塊起始位置存儲(chǔ)到緩存塊最后一個(gè)位置后,然后再從起始位置進(jìn)行存儲(chǔ),形成循環(huán)重復(fù)利用緩存空間。

45、優(yōu)選地,一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速裝置,還包括:

46、注意力計(jì)算模塊,用于swa在解碼計(jì)算階段,根據(jù)所有token的環(huán)形緩存位置索引,獲取k?rcache和v?rcache中存儲(chǔ)的k矩陣和v矩陣,并通過k矩陣和v矩陣進(jìn)行計(jì)算,形成llm的注意力計(jì)算結(jié)果。

47、優(yōu)選地,注意力計(jì)算模塊中,每次attention計(jì)算過程中,k矩陣和v矩陣的索引均一一對應(yīng)。

48、第三個(gè)方面,本發(fā)明還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本技術(shù)第一方面中任一項(xiàng)所述的一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法。

49、第四個(gè)方面,本發(fā)明還提供一種電子設(shè)備,所述電子設(shè)備包括:存儲(chǔ)器,存儲(chǔ)有一計(jì)算機(jī)程序:處理器,與所述存儲(chǔ)器通信相連,調(diào)用所述計(jì)算機(jī)程序時(shí)執(zhí)行本技術(shù)第一方面中任一項(xiàng)所述的一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法。

50、本發(fā)明與現(xiàn)有技術(shù)相比較,具有如下顯而易見的突出實(shí)質(zhì)性特點(diǎn)和顯著優(yōu)點(diǎn):

51、本發(fā)明提供一種基于循環(huán)緩存的滑動(dòng)窗口注意力加速方法及裝置,解決了現(xiàn)有技術(shù)在滑動(dòng)窗口注意力機(jī)制中內(nèi)存存儲(chǔ)效率較低,進(jìn)而導(dǎo)致大模型對于序列處理速度慢的問題?;诃h(huán)形緩存機(jī)制對含有滑動(dòng)窗口注意力的大語言模型進(jìn)行優(yōu)化,在提高swa中krcache和v?rcache對內(nèi)存的利用效率的同時(shí),還提高了k?rcache和v?rcache數(shù)據(jù)存儲(chǔ)的速度,進(jìn)而提升了整個(gè)大語言模型的推理速度。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
巴彦县| 五原县| 秦皇岛市| 石首市| 广安市| 贡嘎县| 五原县| 武威市| 吐鲁番市| 榆林市| 阳朔县| 济阳县| 资溪县| 嘉善县| 当涂县| 富平县| 禹城市| 柳林县| 广水市| 荥阳市| 海宁市| 临潭县| 桓台县| 运城市| 德清县| 金乡县| 炉霍县| 新安县| 彰武县| 白水县| 南宁市| 民县| 开远市| 阳谷县| 威海市| 英山县| 错那县| 商河县| 客服| 恩平市| 全椒县|