System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及計算機,尤其涉及一種基于循環緩存的滑動窗口注意力加速方法及裝置。
技術介紹
1、隨著人工智能技術的發展,特別是深度學習技術的進步,注意力機制(attentionmechanism),因其在處理長依賴關系上的優越性能而逐漸成為自然語言處理、語音識別等
的核心組件。傳統的神經網絡模型在處理長序列時存在梯度消失或梯度爆炸的問題,同時,隨著序列長度的增長,模型計算的復雜度與序列長度的平方成線性關系,這使得大模型在長序列數據上的處理變得非常耗時。
2、近年來,transformer架構通過引入滑動窗口自注意力機制(sliding?windowattention,swa),允許模型并行處理固定窗口大小的數據,從而顯著提高了訓練效率。
3、swa的計算過程如下:
4、
5、其中,為二維矩陣,n1為文本長度,h為隱藏層長度;dk為矩陣第二維度的長度h,kt為矩陣k的轉置。在進行softmax處理之前乘以一個掩碼(),sa的mask為下三角的矩陣,使得每個文本位置的token只注意到該位置及之前的文本內容。swa的mask與sa不同,存在一個窗口大小(window?size),使得attention只關注窗口大小內的文本內容。
6、在大模型(large?language?model,llm)推理過程了為了減少模型的重復計算,一般會使用kv?cache技術對attention中計算的k、v矩陣進行緩存,避免了新請求query推理計算時重復歷史kv矩陣的計算,降低模型推理
7、然而現有的一些kv?cache技術對于swa計算存在內存的利用率較低、存儲效率低下的問題。
技術實現思路
1、本專利技術提供一種基于循環緩存的滑動窗口注意力加速方法及裝置,以解決現有技術在滑動窗口注意力機制中內存存儲效率較低,進而導致大模型對于序列處理速度慢的問題。
2、第一個方面,本專利技術提供了一種基于循環緩存的滑動窗口注意力加速方法,具體包括如下步驟:
3、步驟s1、獲取大語言模型(large?language?model,llm)的參數;
4、步驟s2、根據所述llm的參數,在llm推理計算前為所述llm中的每個解碼層(decoder?layer)分別分配兩個長度為n的環形緩存塊(ring?buffer?cache?block,rbcb)krcache和v?rcache;
5、步驟s3、在llm輸入數據準備階段,根據輸入數據token0,token1,...,tokenk和相應下標(在本申請中,所述“相應下標”表示,對于tokeni,其相應下標為i),為每個token分配k?rcache和v?rcache的環形緩存位置索引;
6、步驟s4、根據所有token的環形緩存位置索引,將llm推理過程中每個token的k矩陣和v矩陣分別存儲在k?rcache和v?rcache對應(在本申請中,所述“對應”表示,對于tokeni,通過步驟s3為其分配的環形緩存位置索引為indexi,其k矩陣存儲在k?rcache的第indexi個位置,其v矩陣存儲在v?rcache的第indexi個位置)的環形緩存位置。
7、其中,n表示滑動窗口注意力(sliding?window?attention,swa)窗口的大小,n為正整數。
8、其中,rcache表示環形緩存(ring?buffer?cache)。
9、其中,i、k均為正整數,i大于等于1且i小于等于k。
10、優選地,步驟s2中,所述環形緩存塊表示由n個塊組成,用于存放k矩陣和v矩陣緩存的緩存塊。
11、優選地,步驟s2中,每個解碼層的k矩陣和v矩陣各自分配有一個環形緩存塊,分別為[kc0,kc1,...,kcn-1]和[vc0,vc1,...,vcn-1]。
12、其中,在本申請中,因為llm生成是個循環推理的過程,每次推理前都需要進行一個輸入數據準備或處理,故描述為在llm輸入數據準備階段。llm在循環推理的過程中,第一次推理稱為prefill階段,第二次推理直至結束推理稱為decode階段。
13、優選地,步驟s3中,在llm輸入數據準備階段,根據輸入數據token0,token1,...,tokenk和相應下標,為每個token分配k?rcache和v?rcache索引位置,具體包括如下步驟:
14、步驟s301、在llm第一次推理時(或者可以表示為第一次推理prefill階段前的數據準備階段),輸入k個token,當j小于等于n-1時,將tokeni的環形緩存位置索引分配為j,并將所述環形緩存位置索引輸入索引隊列qj;當j大于n-1時,將后n個token的k矩陣和v矩陣進行緩存,環形緩存位置索引分配為[0,1,...,n-1];
15、步驟s302、在llm自回歸推理過程中(或者可以表示為decode階段每次推理前的數據準備階段),按照下標從小到大每次獲取一個token,獲取此時索引隊列q的最后一個索引n,根據所述索引n重新分配當前token在環形緩存塊中的環形緩存位置索引index并將所述環形緩存位置索引index添加到索引隊列q中;
16、步驟s303、重復執行步驟s302,直至llm自回歸生成結束;
17、其中,j為正整數,j大于等于1且j小于等于k。
18、優選地,步驟s302中,索引隊列q長度與k?rcache和v?rcache長度均相同,所述環形緩存位置索引index的具體計算如下所示:
19、index=(n+1)%n;
20、其中,n為正整數,%表示取余;index為正整數。由上式可知,索引隊列q中存儲的索引最大為n-1,對應環形緩存的最后一個位置。隨著n的增大,環形緩存位置索引index會從0~n-1循環,即新生成token的k矩陣和v矩陣從環形緩存塊起始位置存儲到緩存塊最后一個位置后,然后再從起始位置進行存儲,形成循環重復利用緩存空間。
21、優選地,一種基于循環緩存的滑動窗口注意力加速方法,還包括:
22、步驟s5、swa在解碼計算階段,根據所有token的環形緩存位置索引,獲取k?rcache和v?rcache中存儲的k矩陣和v矩陣,并通過k矩陣和v矩陣進行計算,形成llm的注意力計算結果。
23、優選地,步驟s5中,每次attention計算過程中,k矩陣和v矩陣的索引均一一對應(例如,,,);
24、從上述計算過程可以看出,每次計算k矩陣和v矩陣的下標均保持一致,attn3(q,k,v)是q3與每對k矩陣、v矩陣計算的和,下標與每對矩陣k和矩陣v計算的順序無關。因此,在attention計算過程中無需根據輸入token的順序計算,僅需從環形緩存塊的起始位置計算即可。
25、其中,在本申本文檔來自技高網...
【技術保護點】
1.一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,具體包括如下步驟:
2.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟S2中,所述環形緩存塊表示由N個塊組成,用于存放K矩陣和V矩陣緩存的緩存塊。
3.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟S3中,在LLM輸入數據準備階段,根據輸入數據token0,token1,...,tokenk和相應下標,為每個token分配K?Rcache和V?Rcache的環形緩存位置索引,具體包括如下步驟:
4.根據權利要求3所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟S302中,索引隊列Q長度與K?Rcache和V?Rcache長度均相同,所述環形緩存位置索引index的具體計算如下所示:
5.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,還包括:
6.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,具體包括如下模塊:
7.一種
8.一種電子設備,其特征在于,包括存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如權利要求1-5任一項所述的一種基于循環緩存的滑動窗口注意力加速方法。
...【技術特征摘要】
1.一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,具體包括如下步驟:
2.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟s2中,所述環形緩存塊表示由n個塊組成,用于存放k矩陣和v矩陣緩存的緩存塊。
3.根據權利要求1所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟s3中,在llm輸入數據準備階段,根據輸入數據token0,token1,...,tokenk和相應下標,為每個token分配k?rcache和v?rcache的環形緩存位置索引,具體包括如下步驟:
4.根據權利要求3所述的一種基于循環緩存的滑動窗口注意力加速方法,其特征在于,步驟s302中,索引隊列q長度與k?rcache和v?rcac...
【專利技術屬性】
技術研發人員:岳丹陽,
申請(專利權)人:上海巖芯數智人工智能科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。