最強(qiáng)API調(diào)用模型來了!基于LLaMA微調(diào),性能超過GPT-4
繼羊駝之后,又來了個(gè)以動(dòng)物命名的模型,這次是大猩猩(Gorilla)。
雖說目前LLM風(fēng)頭正旺,進(jìn)展頗多,在各種任務(wù)中的性能表現(xiàn)也可圈可點(diǎn),但這些模型通過API調(diào)用有效使用工具的潛力還亟待挖掘。
即使對(duì)于今天最先進(jìn)的LLM,比如GPT-4,API調(diào)用也是一項(xiàng)具有挑戰(zhàn)性的任務(wù),主要是由于它們無法生成準(zhǔn)確的輸入?yún)?shù),并且LLM容易對(duì)API調(diào)用的錯(cuò)誤使用產(chǎn)生幻覺。
這不,研究人員搞了個(gè)Gorilla,一個(gè)經(jīng)過微調(diào)的基于LLaMA的模型,它在編寫API調(diào)用上的性能甚至超過了GPT-4。
而當(dāng)與文檔檢索器相結(jié)合時(shí),Gorilla同樣展示出了強(qiáng)大的性能,使用戶更新或版本變化變得更加靈活。
此外,Gorilla還大大緩解了LLM會(huì)經(jīng)常遇到的幻覺問題。
為了評(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í)庫,以及推理能力。
通過授權(quán)LLM可使用的工具,研究人員可以允許LLM訪問巨大的、不斷變化的知識(shí)庫,完成復(fù)雜的計(jì)算任務(wù)。
通過提供對(duì)搜索技術(shù)和數(shù)據(jù)庫的訪問,研究人員可以增強(qiáng)LLM的能力,以處理更大和更動(dòng)態(tài)的知識(shí)空間。
同樣,通過提供計(jì)算工具的使用,LLM也可以完成復(fù)雜的計(jì)算任務(wù)。
因此,科技巨頭已經(jīng)開始嘗試整合各類插件,使LLM能夠通過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ǎng)絡(luò)API的LLM交談一樣簡(jiǎn)單。
然而,許多先前的工作將工具整合到LLM中,考慮的是一小套有據(jù)可查的API,可以很容易地注入到提示中。
支持一個(gè)由潛在的數(shù)百萬個(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)行選擇。
研究人員通過從公共模型中心刮取ML API(模型)來構(gòu)建API Bench,這是一個(gè)具有復(fù)雜且經(jīng)常重疊功能的大型API語料庫。
研究人員選擇了三個(gè)主要的模型中心來構(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ù)類別中下載最多的20個(gè)模型(總共925個(gè))。
研究人員還使用Self-Instruct為每個(gè)API生成了10個(gè)用戶問題的prompt。
因此,數(shù)據(jù)集中的每個(gè)條目都成為了一個(gè)指令參考API對(duì)。研究人員采用常見的AST子樹匹配技術(shù)來評(píng)估生成的API的功能正確性。
研究人員首先將生成的代碼解析成AST樹,然后找到一個(gè)子樹,其根節(jié)點(diǎn)是研究人員關(guān)心的API調(diào)用,然后使用它來索引研究人員的數(shù)據(jù)集。
研究人員檢查LLMs的功能正確性和幻覺問題,反饋相應(yīng)的準(zhǔn)確性。然后,研究人員再對(duì)Gorilla進(jìn)行微調(diào),這是一個(gè)基于LLaMA-7B的模型,使用研究人員的數(shù)據(jù)集進(jìn)行文檔檢索的操作。
研究人員發(fā)現(xiàn),Gorilla在API功能準(zhǔn)確性以及減少幻覺錯(cuò)誤方面明顯優(yōu)于GPT-4。
研究人員在圖1中展示了一個(gè)實(shí)例。
此外,研究人員對(duì)Gorilla進(jìn)行的檢索感知訓(xùn)練使得該模型能夠適應(yīng)API文檔的變化。
最后,研究人員還展示了Gorilla理解和推理約束的能力。
另外,在幻覺方面,Gorilla也表現(xiàn)出色。
下圖是精度和幻覺在四種情況下的對(duì)比,零樣本(即,沒有任何檢索器)以及使用BM25、GPT和Oracle的檢索器。
其中BM25和GPT是常用的檢索器,而Oracle檢索器則會(huì)以100%的相關(guān)性返回相關(guān)文檔,表示一種上限。
圖中準(zhǔn)確性更高、幻覺更少的即為效果更好。
在整個(gè)數(shù)據(jù)集中,Gorilla在提高準(zhǔn)確性的同時(shí)減少了幻覺。
為了收集數(shù)據(jù)集,研究人員細(xì)致地記錄了HuggingFace的The Model Hub、PyTorch Hub和TensorFlow Hub模型的所有在線模型。
HuggingFace平臺(tái)托管和服務(wù)有總共203681個(gè)模型。
然而,其中很多模型的文檔都不咋樣。
為了過濾掉這些質(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)域。
過濾后,研究人員從HuggingFace得到了總共925個(gè)模型。TensorFlow Hub的版本分為v1和v2。
最新的版本(v2)總共有801個(gè)模型,研究人員處理了所有的模型。在過濾掉幾乎沒有信息的模型后,剩下了626個(gè)模型。
與TensorFlow Hub類似,研究人員從Torch Hub得到95個(gè)模型。
在self-instruct范式的指導(dǎo)下,研究人員采用GPT-4來生成合成指令數(shù)據(jù)。
研究人員提供了三個(gè)語境中的例子,以及一個(gè)參考的API文檔,并責(zé)成模型生成調(diào)用API的真實(shí)用例。
研究人員特別指示該模型在創(chuàng)建指令時(shí)不要使用任何API名稱或提示。研究人員為三個(gè)模型中心的每一個(gè)構(gòu)建了六個(gè)例子(指令-API對(duì))。
這18個(gè)點(diǎn),是唯一手工生成或者修改過的數(shù)據(jù)。
而Gorilla,則是檢索感知的LLaMA-7B模型,專門用于API調(diào)用。
如圖3所示,研究人員采用自我構(gòu)造來生成{指令,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)中,研究人員在有和沒有檢索器的情況下分別訓(xùn)練了Gorilla。
在研究中,研究人員關(guān)注的是旨在為提高LLM針對(duì)特定任務(wù)準(zhǔn)確識(shí)別適當(dāng)?shù)腁PI的能力的技術(shù)——這是該技術(shù)發(fā)展中至關(guān)重要,但經(jīng)常被忽略的方面。
由于API的功能是一種通用語言,使不同的系統(tǒng)之間能夠進(jìn)行有效地溝通,正確使用API可以提高LLM與更廣泛的工具進(jìn)行互動(dòng)的能力。
在研究人員收集的三個(gè)大規(guī)模數(shù)據(jù)集中,Gorilla的性能超過了最先進(jìn)的LLM(GPT-4)。Gorilla產(chǎn)生了可靠的API調(diào)用ML模型,且沒有產(chǎn)生幻覺,并能在挑選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)生有偏見的預(yù)測(cè),可能對(duì)某些子群體不利。
為了消除這種顧慮并促進(jìn)對(duì)這些API的深入了解,研究人員正在發(fā)布更加廣泛的數(shù)據(jù)集,其中包括超過11000個(gè)指令——API對(duì)。
在下圖這個(gè)示例中,研究人員使用抽象語法樹(AST)子樹匹配來評(píng)估API調(diào)用的正確性。
抽象語法樹是源代碼結(jié)構(gòu)的樹形表示,有助于更好地分析和理解代碼。
首先,研究人員從Gorilla返回的API調(diào)用(左側(cè))構(gòu)建相關(guān)的API樹。然后將其與數(shù)據(jù)集進(jìn)行比較,以查看API數(shù)據(jù)集是否具有子樹匹配。
在上面的示例中,匹配的子樹以棕色突出顯示,表示API調(diào)用確實(shí)是正確的。其中Pretrained=True是一個(gè)可選參數(shù)。
這一資源將為更廣泛的社區(qū)提供服務(wù),作為研究和衡量現(xiàn)有API的寶貴工具,為更公平和優(yōu)化使用機(jī)器學(xué)習(xí)做出貢獻(xiàn)。