背景技術(shù):
1、本發(fā)明總體上涉及機(jī)器學(xué)習(xí)轉(zhuǎn)換器(transformer)神經(jīng)網(wǎng)絡(luò)模型,并且更具體地涉及針對(duì)轉(zhuǎn)換器模型進(jìn)行選擇性分批。
2、轉(zhuǎn)換器神經(jīng)網(wǎng)絡(luò)模型是用于各種應(yīng)用例如包括順序數(shù)據(jù)的自然語(yǔ)言處理(nlp)、圖像處理或音頻處理應(yīng)用的機(jī)器學(xué)習(xí)模型。例如,轉(zhuǎn)換器模型可以接收表示查詢的輸入令牌序列,并且生成表示對(duì)查詢的響應(yīng)的輸出令牌序列。作為另一示例,轉(zhuǎn)換器模型可以接收表示德語(yǔ)段落的輸入令牌序列,并且生成表示英語(yǔ)段落的翻譯的輸出令牌序列。作為又一示例,轉(zhuǎn)換器模型可以接收表示文本段落的輸入令牌序列,并且生成表示文本的概括版本的輸出令牌序列。
3、通常,客戶端設(shè)備的用戶向推理系統(tǒng)提交請(qǐng)求。推理系統(tǒng)針對(duì)請(qǐng)求的輸入(例如,輸入令牌序列)執(zhí)行機(jī)器學(xué)習(xí)轉(zhuǎn)換器模型,以生成針對(duì)這些請(qǐng)求的輸出(例如,輸出令牌序列)。推理系統(tǒng)可以將輸出作為響應(yīng)返回給請(qǐng)求的客戶端設(shè)備。在一個(gè)實(shí)例中,推理系統(tǒng)在專用硬件加速器例如圖形處理單元(gpu)或張量處理單元(tpu)上執(zhí)行請(qǐng)求,以改善等待時(shí)間和吞吐量,尤其是在轉(zhuǎn)換器模型的參數(shù)的數(shù)量相當(dāng)大的情況下。
4、在一個(gè)實(shí)例中,推理系統(tǒng)分批地處理請(qǐng)求以實(shí)現(xiàn)對(duì)加速器的高處理器利用率。具體地,推理系統(tǒng)可以一起處理批中的多個(gè)請(qǐng)求,以利用硬件加速器中的并行計(jì)算單元的量。在許多情況下,批中的請(qǐng)求的輸入在長(zhǎng)度上是可變的。例如,批中的每個(gè)請(qǐng)求的輸入令牌的數(shù)量可能在長(zhǎng)度上是可變的。然而,針對(duì)轉(zhuǎn)換器模型進(jìn)行分批的方法通常要求批中的多個(gè)請(qǐng)求的數(shù)據(jù)的長(zhǎng)度相同以進(jìn)行處理。因此,處理具有可變長(zhǎng)度的一批請(qǐng)求可能是不可行的,或者解決該問(wèn)題的變通方案可能導(dǎo)致與單獨(dú)處理每個(gè)請(qǐng)求相比使用更多資源。
技術(shù)實(shí)現(xiàn)思路
1、一種推理系統(tǒng),其通過(guò)對(duì)轉(zhuǎn)換器模型中的操作的子集進(jìn)行選擇性分批但是針對(duì)轉(zhuǎn)換器模型中的操作的子集單獨(dú)地處理批中的請(qǐng)求,來(lái)將機(jī)器學(xué)習(xí)轉(zhuǎn)換器模型應(yīng)用于具有可變輸入長(zhǎng)度或可變目標(biāo)長(zhǎng)度或可變內(nèi)部狀態(tài)長(zhǎng)度的一批請(qǐng)求。在一個(gè)實(shí)施方式中,要單獨(dú)處理的操作是轉(zhuǎn)換器模型的編碼器或解碼器的注意力(attention)操作。通過(guò)選擇性分批,推理系統(tǒng)可以使得能夠針對(duì)具有可變的輸入長(zhǎng)度或目標(biāo)長(zhǎng)度或內(nèi)部狀態(tài)長(zhǎng)度的一批請(qǐng)求執(zhí)行批操作,以利用硬件加速器的并行計(jì)算能力,同時(shí)防止針對(duì)將一批請(qǐng)求的數(shù)據(jù)約束到相同長(zhǎng)度的變通方案而發(fā)生的不必要的計(jì)算。
2、具體地,在一個(gè)實(shí)施方式中,推理系統(tǒng)接收包括一個(gè)或更多個(gè)輸入令牌序列的一批請(qǐng)求。針對(duì)該批中的第一請(qǐng)求的第一輸入令牌序列的長(zhǎng)度可以不同于針對(duì)第二請(qǐng)求的第二輸入令牌序列的長(zhǎng)度。推理系統(tǒng)訪問(wèn)包括彼此耦接的至少一組解碼器的轉(zhuǎn)換器模型。針對(duì)一次或更多次迭代,推理系統(tǒng)重復(fù)執(zhí)行通過(guò)將該組解碼器應(yīng)用于針對(duì)請(qǐng)求的一個(gè)或更多個(gè)輸入來(lái)生成針對(duì)該請(qǐng)求的一個(gè)或更多個(gè)輸出令牌的步驟。
3、針對(duì)組中的至少一個(gè)解碼器,推理系統(tǒng)通過(guò)將qkv權(quán)重張量應(yīng)用于一個(gè)或更多個(gè)輸入表示來(lái)生成針對(duì)請(qǐng)求的一個(gè)或更多個(gè)查詢、一個(gè)或更多個(gè)關(guān)鍵字以及一個(gè)或更多個(gè)值。在一個(gè)實(shí)例中,查詢、關(guān)鍵字和值通過(guò)批操作生成。推理系統(tǒng)至少?gòu)囊粋€(gè)或更多個(gè)查詢中拆分針對(duì)第一請(qǐng)求的第一查詢、從一個(gè)或更多個(gè)關(guān)鍵字中拆分針對(duì)第一請(qǐng)求的第一關(guān)鍵字以及從一個(gè)或更多個(gè)值中拆分針對(duì)第一請(qǐng)求的第一值。推理系統(tǒng)還至少?gòu)囊粋€(gè)或更多個(gè)查詢中拆分針對(duì)第二請(qǐng)求的第二查詢、從一個(gè)或更多個(gè)關(guān)鍵字中拆分針對(duì)第二請(qǐng)求的第二關(guān)鍵字以及從一個(gè)或更多個(gè)值中拆分針對(duì)第二請(qǐng)求的第二值。
4、推理系統(tǒng)通過(guò)至少組合針對(duì)第一請(qǐng)求的第一查詢、第一關(guān)鍵字和第一值來(lái)生成針對(duì)第一請(qǐng)求的第一注意力輸出。推理系統(tǒng)還通過(guò)至少組合針對(duì)第二請(qǐng)求的第二查詢、第二關(guān)鍵字和第二值來(lái)單獨(dú)生成針對(duì)第二請(qǐng)求的第二注意力輸出。推理系統(tǒng)至少將第一注意力輸出和第二注意力輸出連結(jié)成連結(jié)張量,并且通過(guò)將權(quán)重張量應(yīng)用于連結(jié)張量來(lái)生成一個(gè)或更多個(gè)輸出表示。在一個(gè)實(shí)例中,一個(gè)或更多個(gè)輸出表示通過(guò)批操作生成。推理系統(tǒng)將一個(gè)或更多個(gè)輸出令牌設(shè)置為該組解碼器的一個(gè)或更多個(gè)輸入,以用于接下來(lái)的迭代,并且將針對(duì)至少一個(gè)請(qǐng)求生成的輸出令牌作為對(duì)該至少一個(gè)請(qǐng)求的響應(yīng)提供給客戶端設(shè)備。
5、在一個(gè)實(shí)施方式中,推理系統(tǒng)針對(duì)轉(zhuǎn)換器模型執(zhí)行迭代級(jí)動(dòng)態(tài)分批,這使得推理系統(tǒng)能夠動(dòng)態(tài)地修改正在執(zhí)行引擎上執(zhí)行的一批請(qǐng)求。具體地,在現(xiàn)有的針對(duì)轉(zhuǎn)換器模型的分批方法中,一旦開(kāi)始在執(zhí)行引擎上對(duì)一批請(qǐng)求進(jìn)行處理,就難以對(duì)該批請(qǐng)求進(jìn)行修改。這是因?yàn)槟承┓峙椒ㄒ笤谂械乃姓?qǐng)求之間輸入的長(zhǎng)度或內(nèi)部狀態(tài)的長(zhǎng)度是相同的。因此,除非新傳入的請(qǐng)求與正在執(zhí)行引擎上執(zhí)行的一批請(qǐng)求具有相同長(zhǎng)度的輸入,否則推理系統(tǒng)可能難以對(duì)該批進(jìn)行修改以例如向該批添加新請(qǐng)求或移除新請(qǐng)求。
6、通過(guò)執(zhí)行選擇性分批,推理系統(tǒng)可以在迭代級(jí)上監(jiān)視和修改正在執(zhí)行引擎上處理的批,并且當(dāng)請(qǐng)求完成且接收到新請(qǐng)求時(shí),在迭代之間對(duì)該批進(jìn)行更新。具體地,在一次或更多次迭代處,推理系統(tǒng)可以通過(guò)將新傳入的請(qǐng)求添加至批或從批中移除已完成的請(qǐng)求來(lái)修改正在執(zhí)行引擎上執(zhí)行的批。這是因?yàn)檫x擇性分批使得能夠?qū)哂锌勺冮L(zhǎng)度的請(qǐng)求進(jìn)行處理,而無(wú)需將轉(zhuǎn)換器模型的一個(gè)或更多個(gè)輸入或內(nèi)部狀態(tài)限制為相同長(zhǎng)度。這使得推理系統(tǒng)能夠?qū)⑴邢啾扔谄渌?qǐng)求較早完成的請(qǐng)求移除,從而使得可以更快地向用戶提供響應(yīng),并且使得推理系統(tǒng)能夠在執(zhí)行引擎未被充分利用的情況下向一批請(qǐng)求添加新請(qǐng)求。
7、在一個(gè)實(shí)施方式中,推理系統(tǒng)的服務(wù)系統(tǒng)接收一個(gè)或更多個(gè)請(qǐng)求以用于執(zhí)行。服務(wù)系統(tǒng)可以包括請(qǐng)求處理器和調(diào)度器,請(qǐng)求處理器和調(diào)度器各自耦接至用于執(zhí)行包括至少一組解碼器的機(jī)器學(xué)習(xí)轉(zhuǎn)換器模型的一個(gè)或更多個(gè)執(zhí)行引擎。調(diào)度器調(diào)度包括一個(gè)或更多個(gè)請(qǐng)求的一批請(qǐng)求以用于在執(zhí)行引擎上執(zhí)行。執(zhí)行引擎通過(guò)迭代地將轉(zhuǎn)換器模型應(yīng)用于針對(duì)該批請(qǐng)求的第一組輸入來(lái)生成第一組輸出令牌。在一個(gè)實(shí)例中,應(yīng)用轉(zhuǎn)換器模型包括將至少一個(gè)批操作應(yīng)用于與該批請(qǐng)求相關(guān)聯(lián)的一個(gè)或更多個(gè)輸入張量。
8、服務(wù)系統(tǒng)可以從客戶端設(shè)備接收包括輸入令牌序列的新請(qǐng)求。調(diào)度器響應(yīng)于確定執(zhí)行引擎具有可用于執(zhí)行包括一個(gè)或更多個(gè)請(qǐng)求和新請(qǐng)求的第二批請(qǐng)求的存儲(chǔ)器來(lái)調(diào)度該第二批請(qǐng)求以用于在執(zhí)行引擎上執(zhí)行。執(zhí)行引擎通過(guò)迭代地將轉(zhuǎn)換器模型應(yīng)用于針對(duì)該第二批請(qǐng)求的第二組輸入來(lái)生成第二組輸出令牌。第二組輸入可以包括針對(duì)新請(qǐng)求的輸入令牌序列。
1.一種通過(guò)應(yīng)用機(jī)器學(xué)習(xí)模型來(lái)執(zhí)行一批請(qǐng)求的方法,包括:
2.根據(jù)權(quán)利要求1所述的方法,其中,所述機(jī)器學(xué)習(xí)模型包括一組解碼器,并且獲得針對(duì)解碼器的所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
3.根據(jù)權(quán)利要求1所述的方法,其中,所述機(jī)器學(xué)習(xí)模型包括一組編碼器和耦接至所述組編碼器的一組解碼器,并且獲得所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
4.根據(jù)權(quán)利要求3所述的方法,還包括:
5.根據(jù)權(quán)利要求3所述的方法,其中,所述編碼器是所述組編碼器中的最終編碼器。
6.根據(jù)權(quán)利要求1所述的方法,其中,所述機(jī)器學(xué)習(xí)模型包括一組編碼器,并且獲得針對(duì)編碼器的所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
7.根據(jù)權(quán)利要求1所述的方法,還包括沿單個(gè)維度將針對(duì)所述一批的所述一個(gè)或更多個(gè)令牌序列中的令牌連結(jié),以生成經(jīng)連結(jié)的輸入張量。
8.根據(jù)權(quán)利要求1所述的方法,其中,將至少所述第一注意力輸出和所述第二注意力輸出連結(jié)成所述連結(jié)張量進(jìn)一步包括:沿單個(gè)維度將所述第一注意力輸出的元素和所述第二注意力輸出的元素連結(jié),以生成所述連結(jié)張量。
9.根據(jù)權(quán)利要求1所述的方法,其中,所述第一注意力輸出是通過(guò)對(duì)至少所述第一查詢、所述第一關(guān)鍵字和所述第一值執(zhí)行一組操作來(lái)生成的,并且其中,所述第二注意力輸出是通過(guò)對(duì)至少所述第二查詢、所述第二關(guān)鍵字和所述第二值執(zhí)行第二組操作來(lái)生成的,并且其中,所述一組操作在執(zhí)行引擎的第一核上執(zhí)行,并且其中,所述第二組操作在所述執(zhí)行引擎的第二核上或在第二執(zhí)行引擎上執(zhí)行。
10.根據(jù)權(quán)利要求1所述的方法,其中,所述第一注意力輸出是通過(guò)對(duì)至少所述第一查詢、所述第一關(guān)鍵字和所述第一值執(zhí)行一組操作來(lái)生成的,并且其中,所述第二注意力輸出是通過(guò)對(duì)至少所述第二查詢、所述第二關(guān)鍵字和所述第二值執(zhí)行第二組操作來(lái)生成的,并且其中,所述一組操作在執(zhí)行引擎的第一核上執(zhí)行,并且其中,所述第二組操作在所述執(zhí)行引擎的所述第一核上執(zhí)行。
11.一種存儲(chǔ)計(jì)算機(jī)程序指令的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)程序指令能夠執(zhí)行以執(zhí)行操作,所述操作包括:
12.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述機(jī)器學(xué)習(xí)模型包括一組解碼器,并且獲得針對(duì)解碼器的所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
13.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述機(jī)器學(xué)習(xí)模型包括一組編碼器和耦接至所述組編碼器的一組解碼器,并且獲得所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
14.根據(jù)權(quán)利要求13所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括:
15.根據(jù)權(quán)利要求13所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述編碼器是所述組編碼器中的最終編碼器。
16.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述機(jī)器學(xué)習(xí)模型包括一組編碼器,并且獲得針對(duì)編碼器的所述一個(gè)或更多個(gè)查詢、所述一個(gè)或更多個(gè)關(guān)鍵字以及所述一個(gè)或更多個(gè)值包括:
17.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),還包括沿單個(gè)維度將針對(duì)所述一批的所述一個(gè)或更多個(gè)令牌序列中的令牌連結(jié),以生成經(jīng)連結(jié)的輸入張量。
18.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,將至少所述第一注意力輸出和所述第二注意力輸出連結(jié)成所述連結(jié)張量進(jìn)一步包括:沿單個(gè)維度將所述第一注意力輸出的元素和所述第二注意力輸出的元素連結(jié),以生成所述連結(jié)張量。
19.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述第一注意力輸出是通過(guò)對(duì)至少所述第一查詢、所述第一關(guān)鍵字和所述第一值執(zhí)行一組操作來(lái)生成的,并且其中,所述第二注意力輸出是通過(guò)對(duì)至少所述第二查詢、所述第二關(guān)鍵字和所述第二值執(zhí)行第二組操作來(lái)生成的,并且其中,所述一組操作在執(zhí)行引擎的第一核上執(zhí)行,并且其中,所述第二組操作在所述執(zhí)行引擎的第二核上或在第二執(zhí)行引擎上執(zhí)行。
20.根據(jù)權(quán)利要求11所述的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述第一注意力輸出是通過(guò)對(duì)至少所述第一查詢、所述第一關(guān)鍵字和所述第一值執(zhí)行一組操作來(lái)生成的,并且其中,所述第二注意力輸出是通過(guò)對(duì)至少所述第二查詢、所述第二關(guān)鍵字和所述第二值執(zhí)行第二組操作來(lái)生成的,并且其中,所述一組操作在執(zhí)行引擎的第一核上執(zhí)行,并且其中,所述第二組操作在所述執(zhí)行引擎的所述第一核上執(zhí)行。