最強(qiáng)API調(diào)用模型來(lái)了!基于LLaMA微調(diào),性能超過(guò)GPT-4
繼羊駝之后,又來(lái)了個(gè)以動(dòng)物命名的模型,這次是大猩猩(Gorilla)。
雖說(shuō)目前LLM風(fēng)頭正旺,進(jìn)展頗多,在各種任務(wù)中的性能表現(xiàn)也可圈可點(diǎn),但這些模型通過(guò)API調(diào)用有效使用工具的潛力還亟待挖掘。
即使對(duì)于今天最先進(jìn)的LLM,比如GPT-4,API調(diào)用也是一項(xiàng)具有挑戰(zhàn)性的任務(wù),主要是由于它們無(wú)法生成準(zhǔn)確的輸入?yún)?shù),并且LLM容易對(duì)API調(diào)用的錯(cuò)誤使用產(chǎn)生幻覺(jué)。
這不,研究人員搞了個(gè)Gorilla,一個(gè)經(jīng)過(guò)微調(diào)的基于LLaMA的模型,它在編寫(xiě)API調(diào)用上的性能甚至超過(guò)了GPT-4。
而當(dāng)與文檔檢索器相結(jié)合時(shí),Gorilla同樣展示出了強(qiáng)大的性能,使用戶更新或版本變化變得更加靈活。
此外,Gorilla還大大緩解了LLM會(huì)經(jīng)常遇到的幻覺(jué)問(wèn)題。
為了評(píng)估該模型的能力,研究人員還引入了API基準(zhǔn),一個(gè)由HuggingFace、TorchHub和TensorHub API組成的綜合數(shù)據(jù)集
Gorilla
LLMs的各項(xiàng)強(qiáng)大的能力不用再多介紹,包括自然對(duì)話能力、數(shù)學(xué)推理能力,以及程序合成在能力什么的。
然而,盡管性能強(qiáng)大,但LLM仍然會(huì)受到一些限制。并且,LLM也需要重新訓(xùn)練以及時(shí)更新他們的知識(shí)庫(kù),以及推理能力。
通過(guò)授權(quán)LLM可使用的工具,研究人員可以允許LLM訪問(wèn)巨大的、不斷變化的知識(shí)庫(kù),完成復(fù)雜的計(jì)算任務(wù)。
通過(guò)提供對(duì)搜索技術(shù)和數(shù)據(jù)庫(kù)的訪問(wèn),研究人員可以增強(qiáng)LLM的能力,以處理更大和更動(dòng)態(tài)的知識(shí)空間。
同樣,通過(guò)提供計(jì)算工具的使用,LLM也可以完成復(fù)雜的計(jì)算任務(wù)。
因此,科技巨頭已經(jīng)開(kāi)始嘗試整合各類(lèi)插件,使LLM能夠通過(guò)API調(diào)用外部工具。
從一個(gè)規(guī)模較小的手工編碼的工具,到能夠調(diào)用一個(gè)巨大的、不斷變化的云API空間,這種轉(zhuǎn)變可以將LLM轉(zhuǎn)變?yōu)橛?jì)算基礎(chǔ)設(shè)施,以及網(wǎng)絡(luò)所需的主要界面。
從預(yù)訂整個(gè)假期到舉辦一次會(huì)議的任務(wù),可以變得像與能夠訪問(wèn)航班、汽車(chē)租賃、酒店、餐飲和娛樂(lè)網(wǎng)絡(luò)API的LLM交談一樣簡(jiǎn)單。
然而,許多先前的工作將工具整合到LLM中,考慮的是一小套有據(jù)可查的API,可以很容易地注入到提示中。
支持一個(gè)由潛在的數(shù)百萬(wàn)個(gè)變化的API組成的網(wǎng)絡(luò)規(guī)模的集合,需要重新思考研究人員如何整合工具的方法。
現(xiàn)在已經(jīng)不可能在一個(gè)單一的環(huán)境中描述所有的API了。許多API會(huì)有重疊的功能,有細(xì)微的限制和約束。在這種新的環(huán)境中簡(jiǎn)單地評(píng)估LLM需要新的基準(zhǔn)。
在本文中,研究人員探索了使用自我結(jié)構(gòu)微調(diào)和檢索的方法,以使LLM能夠準(zhǔn)確地從使用其API和API文檔表達(dá)的大量、重疊和變化的工具集中進(jìn)行選擇。
研究人員通過(guò)從公共模型中心刮取ML API(模型)來(lái)構(gòu)建API Bench,這是一個(gè)具有復(fù)雜且經(jīng)常重疊功能的大型API語(yǔ)料庫(kù)。
研究人員選擇了三個(gè)主要的模型中心來(lái)構(gòu)建數(shù)據(jù)集:TorchHub、TensorHub和HuggingFace。
研究人員詳盡地包括了TorchHub(94個(gè)API調(diào)用)和TensorHub(696個(gè)API調(diào)用)中的每一個(gè)API調(diào)用。
對(duì)于HuggingFace,由于模型的數(shù)量很大,所以研究人員選擇了每個(gè)任務(wù)類(lèi)別中下載最多的20個(gè)模型(總共925個(gè))。
研究人員還使用Self-Instruct為每個(gè)API生成了10個(gè)用戶問(wèn)題的prompt。
因此,數(shù)據(jù)集中的每個(gè)條目都成為了一個(gè)指令參考API對(duì)。研究人員采用常見(jiàn)的AST子樹(shù)匹配技術(shù)來(lái)評(píng)估生成的API的功能正確性。
研究人員首先將生成的代碼解析成AST樹(shù),然后找到一個(gè)子樹(shù),其根節(jié)點(diǎn)是研究人員關(guān)心的API調(diào)用,然后使用它來(lái)索引研究人員的數(shù)據(jù)集。
研究人員檢查L(zhǎng)LMs的功能正確性和幻覺(jué)問(wèn)題,反饋相應(yīng)的準(zhǔn)確性。然后,研究人員再對(duì)Gorilla進(jìn)行微調(diào),這是一個(gè)基于LLaMA-7B的模型,使用研究人員的數(shù)據(jù)集進(jìn)行文檔檢索的操作。
研究人員發(fā)現(xiàn),Gorilla在API功能準(zhǔn)確性以及減少幻覺(jué)錯(cuò)誤方面明顯優(yōu)于GPT-4。
研究人員在圖1中展示了一個(gè)實(shí)例。

此外,研究人員對(duì)Gorilla進(jìn)行的檢索感知訓(xùn)練使得該模型能夠適應(yīng)API文檔的變化。
最后,研究人員還展示了Gorilla理解和推理約束的能力。
另外,在幻覺(jué)方面,Gorilla也表現(xiàn)出色。
下圖是精度和幻覺(jué)在四種情況下的對(duì)比,零樣本(即,沒(méi)有任何檢索器)以及使用BM25、GPT和Oracle的檢索器。
其中BM25和GPT是常用的檢索器,而Oracle檢索器則會(huì)以100%的相關(guān)性返回相關(guān)文檔,表示一種上限。
圖中準(zhǔn)確性更高、幻覺(jué)更少的即為效果更好。
在整個(gè)數(shù)據(jù)集中,Gorilla在提高準(zhǔn)確性的同時(shí)減少了幻覺(jué)。

為了收集數(shù)據(jù)集,研究人員細(xì)致地記錄了HuggingFace的The Model Hub、PyTorch Hub和TensorFlow Hub模型的所有在線模型。
HuggingFace平臺(tái)托管和服務(wù)有總共203681個(gè)模型。
然而,其中很多模型的文檔都不咋樣。
為了過(guò)濾掉這些質(zhì)量不高的模型,研究人員最終從每個(gè)領(lǐng)域挑選出前20個(gè)模型。
研究人員考慮了多模態(tài)數(shù)據(jù)的7個(gè)領(lǐng)域,CV的8個(gè)領(lǐng)域,NLP的12個(gè)領(lǐng)域,音頻的5個(gè)領(lǐng)域,表格數(shù)據(jù)的2個(gè)領(lǐng)域,以及強(qiáng)化學(xué)習(xí)的2個(gè)領(lǐng)域。
過(guò)濾后,研究人員從HuggingFace得到了總共925個(gè)模型。TensorFlow Hub的版本分為v1和v2。
最新的版本(v2)總共有801個(gè)模型,研究人員處理了所有的模型。在過(guò)濾掉幾乎沒(méi)有信息的模型后,剩下了626個(gè)模型。
與TensorFlow Hub類(lèi)似,研究人員從Torch Hub得到95個(gè)模型。
在self-instruct范式的指導(dǎo)下,研究人員采用GPT-4來(lái)生成合成指令數(shù)據(jù)。
研究人員提供了三個(gè)語(yǔ)境中的例子,以及一個(gè)參考的API文檔,并責(zé)成模型生成調(diào)用API的真實(shí)用例。
研究人員特別指示該模型在創(chuàng)建指令時(shí)不要使用任何API名稱或提示。研究人員為三個(gè)模型中心的每一個(gè)構(gòu)建了六個(gè)例子(指令-API對(duì))。
這18個(gè)點(diǎn),是唯一手工生成或者修改過(guò)的數(shù)據(jù)。
而Gorilla,則是檢索感知的LLaMA-7B模型,專門(mén)用于API調(diào)用。
如圖3所示,研究人員采用自我構(gòu)造來(lái)生成{指令,API}對(duì)。
為了對(duì)LLaMA進(jìn)行微調(diào),研究人員將其轉(zhuǎn)換為用戶——代理的聊天式對(duì)話,其中每個(gè)數(shù)據(jù)點(diǎn)都是一個(gè)對(duì)話,用戶和代理輪流交談。

然后研究人員在基礎(chǔ)的LLaMA-7B模型上進(jìn)行標(biāo)準(zhǔn)的指令微調(diào)。在實(shí)驗(yàn)中,研究人員在有和沒(méi)有檢索器的情況下分別訓(xùn)練了Gorilla。
在研究中,研究人員關(guān)注的是旨在為提高LLM針對(duì)特定任務(wù)準(zhǔn)確識(shí)別適當(dāng)?shù)腁PI的能力的技術(shù)——這是該技術(shù)發(fā)展中至關(guān)重要,但經(jīng)常被忽略的方面。
由于API的功能是一種通用語(yǔ)言,使不同的系統(tǒng)之間能夠進(jìn)行有效地溝通,正確使用API可以提高LLM與更廣泛的工具進(jìn)行互動(dòng)的能力。
在研究人員收集的三個(gè)大規(guī)模數(shù)據(jù)集中,Gorilla的性能超過(guò)了最先進(jìn)的LLM(GPT-4)。Gorilla產(chǎn)生了可靠的API調(diào)用ML模型,且沒(méi)有產(chǎn)生幻覺(jué),并能在挑選API時(shí)滿足約束條件。
由于希望找到一個(gè)具有挑戰(zhàn)性的數(shù)據(jù)集,研究人員選擇了ML APIs,因?yàn)樗鼈兊墓δ芟嗨?。專注于ML領(lǐng)域的API的潛在缺點(diǎn)是,如果在有傾向的數(shù)據(jù)上進(jìn)行訓(xùn)練,它們就有可能產(chǎn)生有偏見(jiàn)的預(yù)測(cè),可能對(duì)某些子群體不利。
為了消除這種顧慮并促進(jìn)對(duì)這些API的深入了解,研究人員正在發(fā)布更加廣泛的數(shù)據(jù)集,其中包括超過(guò)11000個(gè)指令——API對(duì)。
在下圖這個(gè)示例中,研究人員使用抽象語(yǔ)法樹(shù)(AST)子樹(shù)匹配來(lái)評(píng)估API調(diào)用的正確性。

抽象語(yǔ)法樹(shù)是源代碼結(jié)構(gòu)的樹(shù)形表示,有助于更好地分析和理解代碼。
首先,研究人員從Gorilla返回的API調(diào)用(左側(cè))構(gòu)建相關(guān)的API樹(shù)。然后將其與數(shù)據(jù)集進(jìn)行比較,以查看API數(shù)據(jù)集是否具有子樹(shù)匹配。
在上面的示例中,匹配的子樹(shù)以棕色突出顯示,表示API調(diào)用確實(shí)是正確的。其中Pretrained=True是一個(gè)可選參數(shù)。
這一資源將為更廣泛的社區(qū)提供服務(wù),作為研究和衡量現(xiàn)有API的寶貴工具,為更公平和優(yōu)化使用機(jī)器學(xué)習(xí)做出貢獻(xiàn)。















 
 
 



















 
 
 
 