最強API調用模型來了!基于LLaMA微調,性能超過GPT-4
繼羊駝之后,又來了個以動物命名的模型,這次是大猩猩(Gorilla)。
雖說目前LLM風頭正旺,進展頗多,在各種任務中的性能表現也可圈可點,但這些模型通過API調用有效使用工具的潛力還亟待挖掘。
即使對于今天最先進的LLM,比如GPT-4,API調用也是一項具有挑戰性的任務,主要是由于它們無法生成準確的輸入參數,并且LLM容易對API調用的錯誤使用產生幻覺。
這不,研究人員搞了個Gorilla,一個經過微調的基于LLaMA的模型,它在編寫API調用上的性能甚至超過了GPT-4。
而當與文檔檢索器相結合時,Gorilla同樣展示出了強大的性能,使用戶更新或版本變化變得更加靈活。
此外,Gorilla還大大緩解了LLM會經常遇到的幻覺問題。
為了評估該模型的能力,研究人員還引入了API基準,一個由HuggingFace、TorchHub和TensorHub API組成的綜合數據集
Gorilla
LLMs的各項強大的能力不用再多介紹,包括自然對話能力、數學推理能力,以及程序合成在能力什么的。
然而,盡管性能強大,但LLM仍然會受到一些限制。并且,LLM也需要重新訓練以及時更新他們的知識庫,以及推理能力。
通過授權LLM可使用的工具,研究人員可以允許LLM訪問巨大的、不斷變化的知識庫,完成復雜的計算任務。
通過提供對搜索技術和數據庫的訪問,研究人員可以增強LLM的能力,以處理更大和更動態的知識空間。
同樣,通過提供計算工具的使用,LLM也可以完成復雜的計算任務。
因此,科技巨頭已經開始嘗試整合各類插件,使LLM能夠通過API調用外部工具。
從一個規模較小的手工編碼的工具,到能夠調用一個巨大的、不斷變化的云API空間,這種轉變可以將LLM轉變為計算基礎設施,以及網絡所需的主要界面。
從預訂整個假期到舉辦一次會議的任務,可以變得像與能夠訪問航班、汽車租賃、酒店、餐飲和娛樂網絡API的LLM交談一樣簡單。
然而,許多先前的工作將工具整合到LLM中,考慮的是一小套有據可查的API,可以很容易地注入到提示中。
支持一個由潛在的數百萬個變化的API組成的網絡規模的集合,需要重新思考研究人員如何整合工具的方法。
現在已經不可能在一個單一的環境中描述所有的API了。許多API會有重疊的功能,有細微的限制和約束。在這種新的環境中簡單地評估LLM需要新的基準。
在本文中,研究人員探索了使用自我結構微調和檢索的方法,以使LLM能夠準確地從使用其API和API文檔表達的大量、重疊和變化的工具集中進行選擇。
研究人員通過從公共模型中心刮取ML API(模型)來構建API Bench,這是一個具有復雜且經常重疊功能的大型API語料庫。
研究人員選擇了三個主要的模型中心來構建數據集:TorchHub、TensorHub和HuggingFace。
研究人員詳盡地包括了TorchHub(94個API調用)和TensorHub(696個API調用)中的每一個API調用。
對于HuggingFace,由于模型的數量很大,所以研究人員選擇了每個任務類別中下載最多的20個模型(總共925個)。
研究人員還使用Self-Instruct為每個API生成了10個用戶問題的prompt。
因此,數據集中的每個條目都成為了一個指令參考API對。研究人員采用常見的AST子樹匹配技術來評估生成的API的功能正確性。
研究人員首先將生成的代碼解析成AST樹,然后找到一個子樹,其根節點是研究人員關心的API調用,然后使用它來索引研究人員的數據集。
研究人員檢查LLMs的功能正確性和幻覺問題,反饋相應的準確性。然后,研究人員再對Gorilla進行微調,這是一個基于LLaMA-7B的模型,使用研究人員的數據集進行文檔檢索的操作。
研究人員發現,Gorilla在API功能準確性以及減少幻覺錯誤方面明顯優于GPT-4。
研究人員在圖1中展示了一個實例。
此外,研究人員對Gorilla進行的檢索感知訓練使得該模型能夠適應API文檔的變化。
最后,研究人員還展示了Gorilla理解和推理約束的能力。
另外,在幻覺方面,Gorilla也表現出色。
下圖是精度和幻覺在四種情況下的對比,零樣本(即,沒有任何檢索器)以及使用BM25、GPT和Oracle的檢索器。
其中BM25和GPT是常用的檢索器,而Oracle檢索器則會以100%的相關性返回相關文檔,表示一種上限。
圖中準確性更高、幻覺更少的即為效果更好。
在整個數據集中,Gorilla在提高準確性的同時減少了幻覺。
為了收集數據集,研究人員細致地記錄了HuggingFace的The Model Hub、PyTorch Hub和TensorFlow Hub模型的所有在線模型。
HuggingFace平臺托管和服務有總共203681個模型。
然而,其中很多模型的文檔都不咋樣。
為了過濾掉這些質量不高的模型,研究人員最終從每個領域挑選出前20個模型。
研究人員考慮了多模態數據的7個領域,CV的8個領域,NLP的12個領域,音頻的5個領域,表格數據的2個領域,以及強化學習的2個領域。
過濾后,研究人員從HuggingFace得到了總共925個模型。TensorFlow Hub的版本分為v1和v2。
最新的版本(v2)總共有801個模型,研究人員處理了所有的模型。在過濾掉幾乎沒有信息的模型后,剩下了626個模型。
與TensorFlow Hub類似,研究人員從Torch Hub得到95個模型。
在self-instruct范式的指導下,研究人員采用GPT-4來生成合成指令數據。
研究人員提供了三個語境中的例子,以及一個參考的API文檔,并責成模型生成調用API的真實用例。
研究人員特別指示該模型在創建指令時不要使用任何API名稱或提示。研究人員為三個模型中心的每一個構建了六個例子(指令-API對)。
這18個點,是唯一手工生成或者修改過的數據。
而Gorilla,則是檢索感知的LLaMA-7B模型,專門用于API調用。
如圖3所示,研究人員采用自我構造來生成{指令,API}對。
為了對LLaMA進行微調,研究人員將其轉換為用戶——代理的聊天式對話,其中每個數據點都是一個對話,用戶和代理輪流交談。
然后研究人員在基礎的LLaMA-7B模型上進行標準的指令微調。在實驗中,研究人員在有和沒有檢索器的情況下分別訓練了Gorilla。
在研究中,研究人員關注的是旨在為提高LLM針對特定任務準確識別適當的API的能力的技術——這是該技術發展中至關重要,但經常被忽略的方面。
由于API的功能是一種通用語言,使不同的系統之間能夠進行有效地溝通,正確使用API可以提高LLM與更廣泛的工具進行互動的能力。
在研究人員收集的三個大規模數據集中,Gorilla的性能超過了最先進的LLM(GPT-4)。Gorilla產生了可靠的API調用ML模型,且沒有產生幻覺,并能在挑選API時滿足約束條件。
由于希望找到一個具有挑戰性的數據集,研究人員選擇了ML APIs,因為它們的功能相似。專注于ML領域的API的潛在缺點是,如果在有傾向的數據上進行訓練,它們就有可能產生有偏見的預測,可能對某些子群體不利。
為了消除這種顧慮并促進對這些API的深入了解,研究人員正在發布更加廣泛的數據集,其中包括超過11000個指令——API對。
在下圖這個示例中,研究人員使用抽象語法樹(AST)子樹匹配來評估API調用的正確性。
抽象語法樹是源代碼結構的樹形表示,有助于更好地分析和理解代碼。
首先,研究人員從Gorilla返回的API調用(左側)構建相關的API樹。然后將其與數據集進行比較,以查看API數據集是否具有子樹匹配。
在上面的示例中,匹配的子樹以棕色突出顯示,表示API調用確實是正確的。其中Pretrained=True是一個可選參數。
這一資源將為更廣泛的社區提供服務,作為研究和衡量現有API的寶貴工具,為更公平和優化使用機器學習做出貢獻。