RAFT:讓大型語(yǔ)言模型更擅長(zhǎng)特定領(lǐng)域的 RAG 任務(wù)(raft詳解)
RAFT(檢索增強(qiáng)的微調(diào))代表了一種全新的訓(xùn)練大語(yǔ)言模型(LLMs)以提升其在檢索增強(qiáng)生成(RAG)任務(wù)上表現(xiàn)的方法。“檢索增強(qiáng)的微調(diào)”技術(shù)融合了檢索增強(qiáng)生成和微調(diào)的優(yōu)點(diǎn),目標(biāo)是更好地適應(yīng)各個(gè)特定領(lǐng)域。該技術(shù)由微軟的主要AI倡導(dǎo)者 Cedric Vidal 和 Meta 的 AI 倡導(dǎo)者 Suraj Subramanian 共同提出。
一、前言
生成式 AI 對(duì)企業(yè)最具影響力的應(yīng)用之一是創(chuàng)建能夠訪問(wèn)已有知識(shí)庫(kù)的自然語(yǔ)言接口,換句話說(shuō),它能夠針對(duì)銀行、法律和醫(yī)學(xué)等特定領(lǐng)域提供問(wèn)題解答。目前主要有兩種方法可以實(shí)現(xiàn)這一點(diǎn):
- 特定領(lǐng)域微調(diào) (DSF):在代表特定領(lǐng)域知識(shí)的文檔集上訓(xùn)練現(xiàn)有的基礎(chǔ)模型。
- 檢索增強(qiáng)生成 (RAG):將文檔存儲(chǔ)在矢量數(shù)據(jù)庫(kù)中,并在查詢時(shí)根據(jù)與問(wèn)題的語(yǔ)義相似性檢索相關(guān)文檔,并將其納入大型語(yǔ)言模型的上下文進(jìn)行情境學(xué)習(xí)。
本文將探討這兩種方法的局限性,并介紹加州大學(xué)伯克利分校研究人員 Tianjun Zhang 和 Shishir G. Patil 提出的 RAFT 方法如何克服這些局限性。該團(tuán)隊(duì)以 Gorilla 大型語(yǔ)言模型而聞名,他們?cè)?RAFT 論文中介紹了這種新方法,并展示了如何使用 Meta Llama 2 和 Azure AI Studio 進(jìn)行研究和實(shí)施。
伯克利團(tuán)隊(duì)還發(fā)表了一篇博客文章,解釋了 RAFT 方法的優(yōu)缺點(diǎn)以及如何產(chǎn)生更有效的結(jié)果。RAFT 論文的代碼實(shí)現(xiàn)可在他們的 Github 代碼庫(kù)中找到。
接下來(lái),我們將介紹 RAFT 方法的工作原理。
二、理解 RAFT 方法
RAFT 是一種將預(yù)訓(xùn)練的大型語(yǔ)言模型微調(diào)到特定領(lǐng)域 RAG 設(shè)置的通用方法。在特定領(lǐng)域 RAG 中,模型需要根據(jù)特定領(lǐng)域的一組文檔回答問(wèn)題,例如企業(yè)中的私有文件。這與通用 RAG 不同,因?yàn)橥ㄓ?RAG 中的模型并不知道它將在哪個(gè)領(lǐng)域進(jìn)行測(cè)試。
為了更好地理解特定領(lǐng)域 RAG,我們可以將其與考試類比。
- 閉卷考試:類比于大型語(yǔ)言模型無(wú)法訪問(wèn)任何外部信息來(lái)回答問(wèn)題的情況,例如聊天機(jī)器人。在這種情況下,模型只能依靠預(yù)訓(xùn)練和微調(diào)期間學(xué)習(xí)到的知識(shí)來(lái)響應(yīng)用戶的提示。
- 開(kāi)卷考試:類比于大型語(yǔ)言模型可以參考外部信息來(lái)源(例如網(wǎng)站或書籍)的情況。在這種情況下,模型通常會(huì)與檢索器配對(duì),檢索器會(huì)檢索相關(guān)文檔并將其附加到用戶的提示中。模型只能通過(guò)這些檢索到的文檔獲取新知識(shí)。因此,模型在開(kāi)卷考試設(shè)置中的性能很大程度上取決于檢索器的質(zhì)量以及檢索器識(shí)別相關(guān)信息的能力。
傳統(tǒng)的 RAG 在收到查詢時(shí),會(huì)從索引中檢索一些可能包含答案的文檔,并將其作為上下文來(lái)生成答案。這就像學(xué)生參加開(kāi)卷考試,可以翻閱教科書尋找答案。相比之下,微調(diào)就像閉卷考試,學(xué)生只能依靠記憶來(lái)回答問(wèn)題。顯然,開(kāi)卷考試更容易,這也解釋了 RAG 的有效性和流行性。
然而,這兩種方法都存在局限。微調(diào)的模型只能依賴于它所訓(xùn)練的知識(shí),有時(shí)可能會(huì)出現(xiàn)近似或幻想的問(wèn)題。RAG 雖然基于文檔,但檢索到的文檔可能只是與查詢語(yǔ)義接近,并不一定包含正確答案。這些干擾性文檔可能會(huì)誤導(dǎo)模型,導(dǎo)致生成錯(cuò)誤的答案。
為了克服 RAG 的這些缺陷,Tianjun 和 Shishir 提出了一種新的方法:RAFT。他們認(rèn)為,如果學(xué)生在開(kāi)卷考試前預(yù)先學(xué)習(xí)教科書,就能取得更好的成績(jī)。同樣,如果大型語(yǔ)言模型能夠事先“學(xué)習(xí)”文檔,就能提高 RAG 的性能。他們提出的檢索增強(qiáng)型微調(diào)(Retrieval-Augmented Fine Tuning)方法,就是試圖讓模型在使用 RAG 之前先對(duì)特定領(lǐng)域進(jìn)行學(xué)習(xí)和適應(yīng)。
RAFT 專注于一種比通用開(kāi)卷考試更窄但越來(lái)越受歡迎的領(lǐng)域,稱為特定領(lǐng)域開(kāi)卷考試。在這種情況下,我們事先知道模型將要測(cè)試的領(lǐng)域,例如企業(yè)文檔、最新新聞或代碼庫(kù)等。模型可以使用它所微調(diào)的特定領(lǐng)域中的所有信息來(lái)回答問(wèn)題。
RAFT 使用 Meta Llama 2 7B 語(yǔ)言模型,首先準(zhǔn)備一個(gè)合成數(shù)據(jù)集,其中每個(gè)樣本包含:
- 一個(gè)問(wèn)題
- 一組參考文檔(包括相關(guān)文檔和干擾性文檔)
- 從文檔中生成的答案
- 使用思維鏈解釋,包含來(lái)自相關(guān)文檔的摘錄(由如 GPT-4 或 Llama 2 70B 這樣的通用大語(yǔ)言模型生成)
該數(shù)據(jù)集用于微調(diào) Llama 2 7B 模型,使其更好地適應(yīng)特定領(lǐng)域,并學(xué)會(huì)從檢索到的上下文中提取有用的信息。思維鏈解釋可以防止過(guò)擬合,提高訓(xùn)練的魯棒性。
RAFT 介于 RAG 和特定領(lǐng)域微調(diào)之間,它既能使大型語(yǔ)言模型學(xué)習(xí)領(lǐng)域知識(shí)和風(fēng)格,又能提高答案生成的質(zhì)量。對(duì)于像 Llama 2 這樣在多個(gè)領(lǐng)域訓(xùn)練的預(yù)訓(xùn)練模型,RAFT 可以使其更適合醫(yī)療保健或法律等專業(yè)領(lǐng)域。
三、RAFT 模型評(píng)估
為了評(píng)估 RAFT 模型的性能,伯克利團(tuán)隊(duì)使用了來(lái)自不同領(lǐng)域的數(shù)據(jù)集,包括維基百科、編碼/API 文檔和醫(yī)學(xué)問(wèn)答:
- 自然問(wèn)題 (NQ)、Trivia QA 和 Hotpot QA:基于維基百科的開(kāi)放域問(wèn)題,主要集中在常識(shí)。
- HuggingFace、Torch Hub 和 TensorFlow Hub:來(lái)自 Gorilla 論文中提出的 APIBench,主要關(guān)注如何根據(jù)文檔生成正確的 API 調(diào)用。
- PubMed QA:專門針對(duì)生物醫(yī)學(xué)研究問(wèn)答的數(shù)據(jù)集,主要側(cè)重于根據(jù)給定文檔回答醫(yī)學(xué)和生物學(xué)問(wèn)題。
研究人員還比較了以下基線模型:
- 使用零樣本提示的 LlaMA2-7B-chat 模型:這是問(wèn)答任務(wù)中常用的指令微調(diào)模型,提供清晰的指令,但不提供參考文檔。
- 使用 RAG 的 LlaMA2-7B-chat 模型 (Llama2 RAG):與前者類似,但添加了參考上下文,是處理特定領(lǐng)域問(wèn)答任務(wù)時(shí)最常用的組合。
- 使用零樣本提示的特定領(lǐng)域微調(diào) (DSF):在沒(méi)有參考文檔的情況下進(jìn)行標(biāo)準(zhǔn)指令微調(diào)。
- 使用 RAG 的特定領(lǐng)域微調(diào) (DSF RAG):為特定領(lǐng)域微調(diào)模型配備外部知識(shí),使其能夠參考上下文來(lái)回答未知問(wèn)題。
下表展示了 RAFT 在醫(yī)學(xué) (PubMed)、常識(shí) (HotPotQA) 和 API (Gorilla) 基準(zhǔn)測(cè)試上的結(jié)果。
四、Azure AI Studio 微調(diào)
伯克利團(tuán)隊(duì)使用 Azure AI Studio 中的模型即服務(wù) (MaaS) 對(duì) Meta Llama 2 進(jìn)行了微調(diào),用于他們的 RAFT 論文。微軟學(xué)習(xí)平臺(tái)也提供了相關(guān)教程,解釋如何在 Azure AI Studio 中微調(diào) Llama 2 模型。
過(guò)去,微調(diào)通常需要機(jī)器學(xué)習(xí)工程師具備豐富的專業(yè)知識(shí),包括生成式 AI、Python、機(jī)器學(xué)習(xí)框架、GPU 和云基礎(chǔ)設(shè)施等。Azure AI Studio 的出現(xiàn)改變了這一現(xiàn)狀,它自動(dòng)化了所有技術(shù)細(xì)節(jié)和基礎(chǔ)設(shè)施設(shè)置,讓用戶可以專注于數(shù)據(jù)準(zhǔn)備。
以下是訓(xùn)練 RAFT 模型的簡(jiǎn)短教程,包括數(shù)據(jù)集準(zhǔn)備、模型微調(diào)和模型部署。
4.1、數(shù)據(jù)集準(zhǔn)備
我們提供一個(gè)示例來(lái)準(zhǔn)備 RAFT 的數(shù)據(jù)集。數(shù)據(jù)集包含問(wèn)題、上下文和答案。上下文是一組文檔,答案是使用思維鏈風(fēng)格從其中一個(gè)文檔生成的,并借助 GPT-4 進(jìn)行輔助。
Question: The Oberoi family is part of a hotel company that has a head office in what city?context: [The Oberoi family is an Indian family that is famous for its involvement in hotels, namely through The Oberoi Group]...[It is located in city center of Jakarta, near Mega Kuningan, adjacent to the sister JW Marriott Hotel. It is operated by The Ritz-Carlton Hotel Company. The complex has two towers that comprises a hotel and the Airlangga Apartment respectively]...[The Oberoi Group is a hotel company with its head office in Delhi.]CoT Answer: ##Reason: The document ##begin_quote## The Oberoi family is an Indian family that is famous for its involvement in hotels, namely through The Oberoi Group. ##end_quote## establishes that the Oberoi family is involved in the Oberoi group, and the document ##begin_quote## The Oberoi Group is a hotel company with its head office in Delhi. ##end_quote## establishes the head office of The Oberoi Group. Therefore, the Oberoi family is part of a hotel company whose head office is in Delhi. ##Answer: Delhi
4.2、模型微調(diào)
我們將訓(xùn)練模型根據(jù)問(wèn)題和提供的上下文輸出思維鏈答案?;A(chǔ)模型 Llama2-7B 適用于 RAG 任務(wù),因?yàn)樗邆渫评?、理解語(yǔ)言、低延遲推理和易于適應(yīng)不同環(huán)境的能力。用戶只需打開(kāi) AI Studio 的微調(diào)向?qū)?/p>
選擇要微調(diào)的模型
選擇上傳數(shù)據(jù)選項(xiàng)并上傳您的訓(xùn)練數(shù)據(jù)集,它必須是 JSONL 格式
并指定提示和完成所在的列
最后設(shè)置批量大小乘數(shù)、學(xué)習(xí)率和訓(xùn)練輪數(shù)即可。
對(duì)于這些參數(shù),Tianjun 和 Shishir 建議:
- 對(duì)于微調(diào),使用乘數(shù) 1,學(xué)習(xí)率 0.00002 和訓(xùn)練輪數(shù) 1。
4.3、模型部署
訓(xùn)練模型后,您可以將其部署在您自己的 GPU 或 CPU 上,也可以將其部署在微軟 AI Studio 上。
AI Studio 極大地降低了大型語(yǔ)言模型微調(diào)的門檻,讓開(kāi)發(fā)人員和企業(yè)可以更輕松地調(diào)整模型以適應(yīng)特定領(lǐng)域的任務(wù)。這將推動(dòng)定制模型在不同企業(yè)中的應(yīng)用,促進(jìn)生成式 AI 和大型語(yǔ)言模型的普及。
五、RAFT 團(tuán)隊(duì)答疑
Cedric 和 Suraj 就 RAFT 的相關(guān)問(wèn)題采訪了 Tianjun 和 Shishir。
問(wèn):為什么選擇 Llama 2 7B?
答:因?yàn)槲覀儗W⒂?RAG 任務(wù),這類任務(wù)需要模型具備推理、理解語(yǔ)言、低延遲推理和易于適應(yīng)不同環(huán)境的能力。Llama 2 7B 恰好滿足這些要求,它是許多常識(shí)性問(wèn)答任務(wù)的良好基礎(chǔ)模型,具有優(yōu)秀的數(shù)學(xué)能力,并且能夠解析較長(zhǎng)的文檔。同時(shí),它也適合在 4 個(gè) A100-40G GPU 上訓(xùn)練并在單個(gè) GPU 上部署。綜合考慮性能、易部署性和許可證等因素,Llama 2 模型非常適合 RAFT 任務(wù)。我們也希望借助微軟 AI Studio 探索 Llama 2 13b 或 70b 的潛力。
問(wèn):對(duì)于嘗試微調(diào) Llama 的人,您有什么建議?
答:微調(diào) Llama 是一項(xiàng)復(fù)雜的任務(wù),涉及數(shù)據(jù)收集、數(shù)據(jù)清理和實(shí)際微調(diào)。我們建議收集與目標(biāo)領(lǐng)域相關(guān)的多樣化問(wèn)題,并構(gòu)建思維鏈答案。存儲(chǔ)中間檢查點(diǎn)可以幫助提前停止訓(xùn)練。此外,微調(diào)的學(xué)習(xí)率應(yīng)該比預(yù)訓(xùn)練的學(xué)習(xí)率低至少一個(gè)數(shù)量級(jí)。其他最佳實(shí)踐包括使用 16 位精度、訓(xùn)練不超過(guò) 3 個(gè) epoch,以及使用大批量大小。
問(wèn):微調(diào)應(yīng)該應(yīng)用于每個(gè)領(lǐng)域嗎?
答:微調(diào)模型的知識(shí)學(xué)習(xí)依賴于特定領(lǐng)域,但其行為在一定程度上可以泛化到其他領(lǐng)域。這涉及到準(zhǔn)確性和泛化性之間的權(quán)衡。通常,針對(duì)特定領(lǐng)域進(jìn)行微調(diào)是比較好的做法,但如果企業(yè)文檔集有限,針對(duì)這些文檔進(jìn)行微調(diào)可能會(huì)獲得更好的性能,因?yàn)橹R(shí)范圍更集中。
問(wèn):您對(duì) Azure AI Studio 微調(diào)系統(tǒng)有何看法?
答:Azure AI 微調(diào)系統(tǒng)非常用戶友好,從訓(xùn)練數(shù)據(jù)上傳到超參數(shù)選擇,再到部署訓(xùn)練好的模型,一切都非常簡(jiǎn)單易用。
問(wèn):AI Studio 微調(diào)有什么優(yōu)勢(shì)?
答:最大的優(yōu)勢(shì)是用戶無(wú)需擔(dān)心 GPU、訓(xùn)練平臺(tái)和模型部署等問(wèn)題,只需一鍵操作即可完成,而且性能出色!
問(wèn):您認(rèn)為 AI Studio 微調(diào)可以改進(jìn)什么?
答:作為研究人員,我們希望開(kāi)發(fā)者能夠提供更多關(guān)于系統(tǒng)內(nèi)部微調(diào)配方的細(xì)節(jié),例如它是使用低秩近似微調(diào)還是全參數(shù)微調(diào),使用了多少個(gè) GPU,以及 LoRA 的超參數(shù)設(shè)置等等。
問(wèn):您認(rèn)為 AI Studio 微調(diào)會(huì)給行業(yè)帶來(lái)什么變化?
答:它可以使企業(yè)輕松進(jìn)行大型語(yǔ)言模型的微調(diào)和部署,極大地促進(jìn)定制模型在不同企業(yè)中的應(yīng)用。
六、結(jié)論
Llama 和 Azure 通過(guò)提供易于使用的平臺(tái),使開(kāi)發(fā)人員和企業(yè)能夠創(chuàng)建針對(duì)特定需求和挑戰(zhàn)的創(chuàng)新解決方案,推動(dòng)了特定領(lǐng)域 AI 開(kāi)發(fā)的新范式。這將使更多人受益于生成式 AI 和大型語(yǔ)言模型的最新進(jìn)展,構(gòu)建更加多樣化和包容的 AI 生態(tài)系統(tǒng)。(注: AI Studio 微調(diào)目前在美國(guó)西部 3 可用)
七、References
[1]. Tianjun Zhang, Shishir G. Patil, Naman Jain, Sheng Shen, Matei Zaharia, Ion Stoica, Joseph E. Gonzalez, R. (2024). RAFT: Adapting Language Model to Domain Specific RAG: https://arxiv.org/pdf/2401.08406.pdf
[2]. Gorilla LLM https://github.com/ShishirPatil/gorilla
[3]. Meta Llama 2 https://llama.meta.com/
[4]. Azure AI Studio https://ai.azure.com/
[5]. RAFT Github Repo: https://github.com/ShishirPatil/gorilla/tree/main/raft
[6]. Fine-tune a Llama 2 model in Azure AI Studio: https://learn.microsoft.com/en-us/azure/ai-studio/how-to/fine-tune-model-llama
[7]. MS Learn https://learn.microsoft.com/
[8]. RAFT: Adapting Language Model to Domain Specific RAG: https://gorilla.cs.berkeley.edu/blogs/9_raft.html