本發(fā)明涉及人工智能及自然語言處理,具體地說是一種基于大模型推理的部分固定緩存方法、系統(tǒng)、設(shè)備及介質(zhì)。
背景技術(shù):
1、隨著人工智能技術(shù)的快速發(fā)展,尤其是在自然語言處理領(lǐng)域,大規(guī)模預(yù)訓(xùn)練模型(如transformer模型)在各種任務(wù)中表現(xiàn)出了卓越的性能。然而,這些模型在推理過程中需要大量的計(jì)算資源和存儲(chǔ)資源,傳統(tǒng)的transformer模型在推理時(shí),大部分推理框架選擇使用存儲(chǔ)大量鍵值對(duì)的方式來加快文本生成的速度,導(dǎo)致內(nèi)存消耗與輸入序列長(zhǎng)度和批量大小線性相關(guān),這種方法是典型的用存儲(chǔ)資源換計(jì)算資源的策略。
2、在大規(guī)模集群上使用無可厚非,但是應(yīng)對(duì)客戶本地部署運(yùn)行的需求時(shí),必須要考慮到客戶不可能擁有大規(guī)模集群用于模型部署推理,那么kvcache的存儲(chǔ)需求,就成為了推理過程中的瓶頸。
3、故如何在計(jì)算資源和存儲(chǔ)資源之間尋找一種更適合大模型本地化推理的平衡,提高推理效率是目前亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的技術(shù)任務(wù)是提供一種基于大模型推理的部分固定緩存方法、系統(tǒng)、設(shè)備及介質(zhì),來解決如何在計(jì)算資源和存儲(chǔ)資源之間尋找一種更適合大模型本地化推理的平衡,提高推理效率的問題。
2、本發(fā)明的技術(shù)任務(wù)是按以下方式實(shí)現(xiàn)的,一種基于大模型推理的部分固定緩存方法,該方法具體如下:
3、預(yù)填充階段:輸入序列或文本,經(jīng)過預(yù)處理完成原始輸入序列或文本到大模型輸入矩陣的格式轉(zhuǎn)換,并基于kvcache方法,緩存原始輸入token在各注意力層中的k矩陣和v矩陣,并將輸入序列或文本轉(zhuǎn)換成每個(gè)token由固定長(zhǎng)特征向量表示的大模型輸入矩陣,輸入矩陣經(jīng)過模型推理輸出第一個(gè)token;
4、解碼階段:不同于傳統(tǒng)的kvcache方法,在每次解碼之前會(huì)對(duì)是否緩存當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行預(yù)判斷,根據(jù)結(jié)果判定是否在本次解碼過程中對(duì)當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行緩存。
5、作為優(yōu)選,預(yù)填充階段的預(yù)處理過程具體如下:
6、tokenizer:將原始文本或序列轉(zhuǎn)換為由token組成的文本的初始數(shù)值表征,即將輸入的文本轉(zhuǎn)化為輸入token;
7、嵌入embedding:將輸入token轉(zhuǎn)化成詞向量編碼(word?embedding)作為模型的輸入,同時(shí)把位置向量編碼(position?embedding)融合到詞向量編碼中,體現(xiàn)輸入token的位置相關(guān)性;
8、若輸入尺寸和大模型輸入不匹配,則對(duì)輸入尺寸進(jìn)行reshape。
9、作為優(yōu)選,解碼階段前,比較當(dāng)前輸入的token數(shù)與設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt:
10、若輸出token數(shù)超過設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt,則不緩存當(dāng)前輸入token對(duì)應(yīng)的k向量和v向量,繼續(xù)累計(jì)大模型輸出的token進(jìn)行下一次解碼;
11、若輸入token數(shù)超過可并發(fā)執(zhí)行的token數(shù)nt,則繼續(xù)比較已緩存的k矩陣和v矩陣加載到計(jì)算核心的時(shí)間tl和對(duì)當(dāng)前輸入token進(jìn)行一次解碼的時(shí)間td:
12、若td<tl,則不緩存當(dāng)前輸入token對(duì)應(yīng)的k矩陣和v矩陣,繼續(xù)累計(jì)大模型輸出的token進(jìn)行下一次解碼;
13、若td>tl,則對(duì)當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行緩存,并使用本次解碼的新輸出token繼續(xù)進(jìn)行解碼。
14、更優(yōu)地,設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt的公式如下:
15、nt=理論算力峰值/最耗算力的網(wǎng)絡(luò)層的計(jì)算量,即計(jì)算設(shè)備單詞解碼小于nt個(gè)token的時(shí)間和解碼nt個(gè)token的時(shí)間一致。
16、更優(yōu)地,加載到計(jì)算核心的時(shí)間tl的公式如下
17、tl=(2*d*l/內(nèi)存帶寬)*n;
18、其中,d為單個(gè)k或v向量的維度,由于在transformer模型中,每個(gè)k矩陣和v矩陣的長(zhǎng)度相同,故乘以2;l為大模型中注意力層的數(shù)量;n為當(dāng)前解碼之前所有token的數(shù)量。
19、更優(yōu)地,一次解碼的時(shí)間td的公式如下:
20、td=當(dāng)前輸入token數(shù)*每token的計(jì)算量/理論算力峰值。
21、一種基于大模型推理的部分固定緩存系統(tǒng),該系統(tǒng)包括:
22、預(yù)填充模塊,用于輸入序列或文本,經(jīng)過預(yù)處理完成原始輸入序列或文本到大模型輸入矩陣的格式轉(zhuǎn)換,并基于kvcache方法,緩存原始輸入token在各注意力層中的k矩陣和v矩陣,并將輸入序列或文本轉(zhuǎn)換成每個(gè)token由固定長(zhǎng)特征向量表示的大模型輸入矩陣,輸入矩陣經(jīng)過模型推理輸出第一個(gè)token;
23、解碼模塊,不同于傳統(tǒng)的kvcache方法,在每次解碼之前會(huì)對(duì)是否緩存當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行預(yù)判斷,根據(jù)結(jié)果判定是否在本次解碼過程中對(duì)當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行緩存。
24、作為優(yōu)選,解碼階段前,比較當(dāng)前輸入的token數(shù)與設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt:
25、若輸出token數(shù)超過設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt,則不緩存當(dāng)前輸入token對(duì)應(yīng)的k向量和v向量,繼續(xù)累計(jì)大模型輸出的token進(jìn)行下一次解碼;
26、若輸入token數(shù)超過可并發(fā)執(zhí)行的token數(shù)nt,則繼續(xù)比較已緩存的k矩陣和v矩陣加載到計(jì)算核心的時(shí)間tl和對(duì)當(dāng)前輸入token進(jìn)行一次解碼的時(shí)間td:
27、若td<tl,則不緩存當(dāng)前輸入token對(duì)應(yīng)的k矩陣和v矩陣,繼續(xù)累計(jì)大模型輸出的token進(jìn)行下一次解碼;
28、若td>tl,則對(duì)當(dāng)前輸入token的k矩陣和v矩陣進(jìn)行緩存,并使用本次解碼的新輸出token繼續(xù)進(jìn)行解碼;
29、其中,設(shè)備單次可并發(fā)執(zhí)行的token數(shù)nt的公式如下:
30、nt=理論算力峰值/最耗算力的網(wǎng)絡(luò)層的計(jì)算量,即計(jì)算設(shè)備單詞解碼小于nt個(gè)token的時(shí)間和解碼nt個(gè)token的時(shí)間一致;
31、加載到計(jì)算核心的時(shí)間tl的公式如下
32、tl=(2*d*l/內(nèi)存帶寬)*n;
33、其中,d為單個(gè)k或v向量的維度,由于在transformer模型中,每個(gè)k矩陣和v矩陣的長(zhǎng)度相同,故乘以2;l為大模型中注意力層的數(shù)量;n為當(dāng)前解碼之前所有token的數(shù)量;
34、一次解碼的時(shí)間td的公式如下:
35、td=當(dāng)前輸入token數(shù)*每token的計(jì)算量/理論算力峰值。
36、一種電子設(shè)備,包括:存儲(chǔ)器和至少一個(gè)處理器;
37、其中,所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)程序;
38、所述至少一個(gè)處理器執(zhí)行所述存儲(chǔ)器存儲(chǔ)的計(jì)算機(jī)程序,使得所述至少一個(gè)處理器執(zhí)行如上述的基于大模型推理的部分固定緩存方法。
39、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序可被處理器執(zhí)行以實(shí)現(xiàn)如上述的基于大模型推理的部分固定緩存方法。
40、本發(fā)明的基于大模型推理的部分固定緩存方法、系統(tǒng)、設(shè)備及介質(zhì)具有以下優(yōu)點(diǎn):
41、(一)本發(fā)明在計(jì)算資源和存儲(chǔ)資源之間尋找一種更適合大模型本地化推理的平衡,提高了推理效率;
42、(二)本發(fā)明在推理過程中,動(dòng)態(tài)確定是否進(jìn)行kv矩陣緩存,可以減少總的推理時(shí)間,避免內(nèi)存超負(fù)荷,能夠進(jìn)一步提高計(jì)算設(shè)備的利用率。