參數(shù)量?jī)H為1/700,性能超越GPT-3.5!CMU+清華開(kāi)源Prompt2Model框架
基于大型語(yǔ)言模型(LLM),開(kāi)發(fā)者或用戶可以通過(guò)描述任務(wù),并給出幾個(gè)樣例來(lái)構(gòu)造自然語(yǔ)言提示,很輕松地就能實(shí)現(xiàn)指定的功能。
不過(guò)從某種程度上來(lái)說(shuō),相比傳統(tǒng)的、面向任務(wù)開(kāi)發(fā)的NLP系統(tǒng),大型語(yǔ)言模型在計(jì)算資源需求等方面是一種極大的退步。
最近,卡內(nèi)基梅隆大學(xué)和清華大學(xué)的研究人員提出了一種通用的模型構(gòu)造方法Prompt2Model,開(kāi)發(fā)者只需要構(gòu)造自然語(yǔ)言提示,就可以訓(xùn)練出一個(gè)可用于指定任務(wù)的模型,并易于部署。

論文鏈接:https://arxiv.org/abs/2308.12261
代碼鏈接:https://github.com/neulab/prompt2model
Prompt2Model框架包括檢索現(xiàn)有的數(shù)據(jù)集、生成訓(xùn)練數(shù)據(jù)、搜索與訓(xùn)練模型、微調(diào)訓(xùn)練、自動(dòng)化評(píng)估和部署等多個(gè)步驟。
三個(gè)任務(wù)的實(shí)驗(yàn)結(jié)果證明,給出相同的少樣本提示作為輸入,Prompt2Model可以訓(xùn)練出一個(gè)比大型語(yǔ)言模型更強(qiáng)的小模型,在參數(shù)量?jī)H為gpt-3.5-turbo的1/700的情況下,實(shí)現(xiàn)了20%的性能提升。
Prompt2Model框架
Prompt2Model系統(tǒng)相當(dāng)于一個(gè)平臺(tái),可以對(duì)機(jī)器學(xué)習(xí)管道中的組件進(jìn)行自動(dòng)化:包括數(shù)據(jù)收集、模型訓(xùn)練、評(píng)估和部署。

系統(tǒng)的核心是自動(dòng)數(shù)據(jù)收集系統(tǒng),利用數(shù)據(jù)集檢索和基于LLM的數(shù)據(jù)集生成來(lái)獲取與用戶需求相關(guān)的標(biāo)注數(shù)據(jù);
然后檢索預(yù)訓(xùn)練模型,并在收集到的訓(xùn)練數(shù)據(jù)上進(jìn)行微調(diào);
最后使用相同數(shù)據(jù)集下的劃分測(cè)試集,對(duì)得到的模型進(jìn)行評(píng)估,也可以創(chuàng)建一個(gè)與模型交互web UI
Prompt2Model非常通用,設(shè)計(jì)上也遵循模塊化、可擴(kuò)展,每個(gè)組件都可以由開(kāi)發(fā)者進(jìn)行重新實(shí)現(xiàn)或禁用。
下面介紹Prompt2Model各個(gè)組件的設(shè)計(jì)思路,以及文章作者給出的參考實(shí)現(xiàn)。
提示解析器(Prompt Parser)
作為系統(tǒng)的主要輸入,用戶需要提供類似LLMs使用的提示詞,包括指令,或是預(yù)期回復(fù)的幾個(gè)演示樣例。
開(kāi)放式的接口(open-ended interface)對(duì)用戶來(lái)說(shuō)很方便,并且端到端(end-to-end)機(jī)器學(xué)習(xí)管道也會(huì)從提示解析器中受益,例如將提示分割成指令、單獨(dú)的演示樣例,或是將指令翻譯成英語(yǔ)。

參考實(shí)現(xiàn):研究人員將提示解析為指令(instruction)和演示(demonstration),其中指令表示主要的任務(wù)或目標(biāo),演示代表模型的預(yù)期行為。
可以利用具有上下文學(xué)習(xí)能力的大型語(yǔ)言模型(OpenAI gpt-3.5-turbo-0613)對(duì)用戶提示進(jìn)行分割;如果用戶指令被識(shí)別為非英語(yǔ),則使用DeepL API.2將其翻譯成英語(yǔ)。
數(shù)據(jù)集檢索器(Dataset Retriever)
用戶給出一個(gè)提示后,系統(tǒng)首先會(huì)進(jìn)行檢索,嘗試發(fā)現(xiàn)那些符合用戶描述,且已經(jīng)標(biāo)注好的數(shù)據(jù)集,主要包括三個(gè)決策:
1. 要搜索哪些數(shù)據(jù)集?
2. 如何對(duì)數(shù)據(jù)集索引以支持搜索?
3. 哪些數(shù)據(jù)集是用戶任務(wù)所需要的,哪些應(yīng)該被省略?
參考實(shí)現(xiàn):研究人員先在Huggingface上,為所有的數(shù)據(jù)集提取用戶描述,然后利用DataFinder的雙編碼檢索器對(duì)數(shù)據(jù)集進(jìn)行相關(guān)度排序。
然后系統(tǒng)會(huì)向用戶展示排名靠前的k(=25)個(gè)數(shù)據(jù)集,用戶可以選擇相關(guān)數(shù)據(jù)集,也可以聲明沒(méi)有適合目標(biāo)任務(wù)的數(shù)據(jù);如果存在可用數(shù)據(jù),用戶還需要從數(shù)據(jù)集的模式中指定輸入和輸出列。
數(shù)據(jù)集生成器(Dataset Generator)
并不是所有的用戶任務(wù)都有完美匹配的數(shù)據(jù)集,但有些數(shù)據(jù)與任務(wù)在一定程度上是相關(guān)的。
為了支持更廣泛的任務(wù),根據(jù)提示解析器得到的用戶要求,可以用數(shù)據(jù)集生成器來(lái)產(chǎn)生「合成訓(xùn)練集」,主要難點(diǎn)在于如何降低成本、提升生成速度、生成樣本多樣性以及質(zhì)量控制。
參考實(shí)現(xiàn)中,研究人員設(shè)計(jì)的策略包括:
1. 高多樣性的少樣本提示
使用自動(dòng)化提示工程來(lái)生成多樣化的數(shù)據(jù)集,用先前生成的示例的隨機(jī)樣本來(lái)擴(kuò)充用戶提供的演示示例,以促進(jìn)多樣性并避免生成重復(fù)的示例。
生成200個(gè)問(wèn)答樣本時(shí),該策略可以將重復(fù)樣本從200降低到25個(gè)。
2. 溫度退火(Temperature Annealing)
根據(jù)已經(jīng)生成的示例數(shù)量,將采樣溫度從低(輸出結(jié)果更確定)調(diào)整到高(輸出更隨機(jī)),有助于保持輸出質(zhì)量,同時(shí)會(huì)促進(jìn)數(shù)據(jù)多樣化。
3. 自洽解碼(Self-Consistency Decoding)
鑒于LLM可能為相同的輸入產(chǎn)生非唯一或不正確的輸出,研究人員使用自洽過(guò)濾(self-consistency filtering)來(lái)選擇偽標(biāo)簽,具體來(lái)說(shuō),通過(guò)選擇最頻繁的答案,為每個(gè)唯一的輸入創(chuàng)建一個(gè)一致的輸出;在平局的情況下,啟發(fā)式地選擇最短的答案,可以提高生成數(shù)據(jù)集的準(zhǔn)確性,同時(shí)確保樣本的唯一性。
4. 異步批處理(Asynchronous Batching)
API請(qǐng)求使用zeno-build進(jìn)行并行化,引入額外的機(jī)制,如動(dòng)態(tài)批大小和節(jié)流(throttling)來(lái)優(yōu)化API的用量。
模型檢索器(Model Retriever)
除了訓(xùn)練數(shù)據(jù)外,完成任務(wù)還需要確定一個(gè)合適的模型進(jìn)行微調(diào),研究人員認(rèn)為這也是一個(gè)檢索問(wèn)題,每個(gè)模型可以由一段「用戶生成的描述」和「元數(shù)據(jù)」(如受歡迎度、支持的任務(wù)等)。
參考實(shí)現(xiàn):為了用統(tǒng)一的模型接口支持海量任務(wù),所以研究人員將系統(tǒng)限制在Huggingface上的編碼器解碼器架構(gòu),對(duì)于模型蒸餾來(lái)說(shuō)數(shù)據(jù)效率更高。

然后使用用戶指令作為查詢,基于Huggingface上模型的文本描述進(jìn)行搜索,不過(guò)由于模型的描述通常很少,且包含大量模式化文本,通常只有幾個(gè)詞能表示模型的內(nèi)容。
遵照HyDE框架,先使用gpt-3.5-turbo根據(jù)用戶的指示創(chuàng)建一個(gè)假設(shè)模型描述(hypothetical model description)作為擴(kuò)展查詢,然后用BM25算法計(jì)算查詢模型的相似度分?jǐn)?shù)。
為了確保模型易于部署,用戶可以設(shè)定模型的尺寸閾值(默認(rèn)3GB),并過(guò)濾掉所有超過(guò)該閾值的模型。
一般來(lái)說(shuō),高下載量的模型可能質(zhì)量也更高,也可以把下載量當(dāng)作參數(shù)對(duì)模型進(jìn)行排序:

模型訓(xùn)練器(Model Trainer)
給定數(shù)據(jù)集和預(yù)訓(xùn)練模型后,就可以對(duì)模型進(jìn)行訓(xùn)練、微調(diào),其中所有的任務(wù)都可以當(dāng)作是文本到文本的生成任務(wù)。
參考實(shí)現(xiàn):在處理數(shù)據(jù)集時(shí),研究人員會(huì)用到兩個(gè)數(shù)據(jù)集,一個(gè)是生成的,另一個(gè)是檢索到的,并將數(shù)據(jù)列文本化后與用戶指令合并到一起添加到模型輸入中。
在微調(diào)時(shí),將兩個(gè)數(shù)據(jù)集組合起來(lái)后隨機(jī)打亂,然后訓(xùn)練學(xué)生模型。
在所有的任務(wù)中都使用相同的超參數(shù),使用AdamW優(yōu)化器,以學(xué)習(xí)率5e-5訓(xùn)練3個(gè)epoch,每個(gè)任務(wù)大約需要一小時(shí)。
模型評(píng)估器(Model Evaluator)
除去用作訓(xùn)練模型的數(shù)據(jù)后,其余數(shù)據(jù)可以用來(lái)評(píng)估模型的訓(xùn)練效果,主要難點(diǎn)在與如何在海量的目標(biāo)任務(wù)中選擇出合適的評(píng)估指標(biāo)。
參考實(shí)現(xiàn):研究人員選擇三個(gè)通用的指標(biāo),即精確匹配、ChrF++和BERScore對(duì)所有任務(wù)實(shí)現(xiàn)自動(dòng)化評(píng)估。
精確匹配(EM)可以衡量模型輸出與參考答案之間完美匹配的程度;ChrF++可以平衡精確度和召回率來(lái)評(píng)估文本生成質(zhì)量;BERTScore可以通過(guò)比較嵌入空間中的模型輸出和引用來(lái)捕獲語(yǔ)義相似性。

使用XLM-R作為BERTScore的編碼器可以支持多語(yǔ)言任務(wù)的評(píng)估。
演示創(chuàng)建器(Demo Creator)
為了讓開(kāi)發(fā)者可以將模型發(fā)布給普通用戶,可以在該模塊中創(chuàng)建一個(gè)圖形接口以供交互。
參考實(shí)現(xiàn):研究人員使用Gradio構(gòu)建了一個(gè)模型訪問(wèn)界面。
實(shí)驗(yàn)部分
實(shí)驗(yàn)設(shè)置
作為概念驗(yàn)證,研究人員測(cè)試了該系統(tǒng)在三項(xiàng)任務(wù)中學(xué)習(xí)模型的能力:
1. 機(jī)器閱讀問(wèn)題回答:使用SQuAD作為基準(zhǔn)數(shù)據(jù)集來(lái)評(píng)估。
2. 日語(yǔ)NL-to-Code:從日語(yǔ)查詢中生成代碼是一個(gè)有難度的任務(wù),雖然之前有相關(guān)工作,但沒(méi)有可用的標(biāo)注數(shù)據(jù)或與訓(xùn)練模型,使用MCoNaLa進(jìn)行評(píng)估。
3. 時(shí)態(tài)表達(dá)式規(guī)范化(Temporal Expression Normalization):目前沒(méi)有任何類型的預(yù)訓(xùn)練模型或訓(xùn)練數(shù)據(jù)集可用,使用Temporal數(shù)據(jù)集作為基準(zhǔn)評(píng)估。
雖然Prompt2Model提供了自動(dòng)模型評(píng)估的能力,在生成和檢索的數(shù)據(jù)測(cè)試上,但在這里使用真實(shí)的基準(zhǔn)數(shù)據(jù)集來(lái)衡量我們的管道訓(xùn)練準(zhǔn)確模型的能力。
在基線模型的選取上,由于該工作的主要目標(biāo)就是訓(xùn)練一個(gè)小模型可以與大型語(yǔ)言模型相匹配或是更強(qiáng),所以研究人員選擇gpt-3.5-turbo作為基準(zhǔn)數(shù)據(jù)集的對(duì)比基線。
實(shí)驗(yàn)結(jié)果
在下游任務(wù)中的表現(xiàn)上,Prompt2Model在三個(gè)任務(wù)中的兩個(gè)都實(shí)現(xiàn)了遠(yuǎn)超gpt-3.5-turbo的性能。
值得注意的是,檢索到的SQuAD和Temporal模型是Flan-T5,僅有250M的參數(shù)量,比gpt-3.5-turbo(175B參數(shù))小700倍。

還可以觀察到,Prompt2Model在MCoNaLa的日語(yǔ)轉(zhuǎn)Python任務(wù)上的性能明顯比gpt-3.5-turbo差。
可能的解釋是,生成的日語(yǔ)查詢數(shù)據(jù)集多樣性相對(duì)較低:5000個(gè)樣本中有45個(gè)都是「在數(shù)字列表中找到最大值」的不同說(shuō)法,而在其他數(shù)據(jù)集中沒(méi)有觀察到這種高的冗余度,表明gpt-3.5-turbo可能很難為非英語(yǔ)的語(yǔ)言生成多樣化的文本。
另一個(gè)原因可能是缺乏合適的學(xué)生模型,模型型檢索器找到的模型是在多種自然語(yǔ)言或代碼上訓(xùn)練的,沒(méi)有都是多語(yǔ)言的,導(dǎo)致預(yù)訓(xùn)練模型缺乏表征日語(yǔ)輸入、Python輸出相關(guān)的參數(shù)知識(shí)。















 
 
 


















 
 
 
 