新的網站做淘寶客搜外網友情鏈接
引言
眾所周知,大語言模型(LLM)正在飛速發(fā)展,各行業(yè)都有了自己的大模型。其中,大模型微調技術在此過程中起到了非常關鍵的作用,它提升了模型的生成效率和適應性,使其能夠在多樣化的應用場景中發(fā)揮更大的價值。
那么,今天這篇文章就帶大家深入了解大模型微調。其中主要包括什么是大模型微調、什么時候需要大模型微調、大模型微調方法總結、大模型微調最佳實踐等。相關論文集獲取,回復:LLM微調
LLM項目生命周期
在介紹大模型微調方法之前,首先帶大家了解一下大語言模型的項目生命周期,它大致可以分為以下幾個步驟,如下圖所示
「1、項目目標」:首先,明確項目目標。決定LLM是作為一個通用工具還是專注于特定任務(如命名實體識別)。明確的目標有助于節(jié)省時間和資源。
「2、模型選擇」:在從頭開始訓練模型和修改現(xiàn)有模型之間做出選擇。在許多情況下,適應性調整現(xiàn)有模型是高效的,但在某些情況下,可能需要通過新模型進行微調。
「3、模型性能與調優(yōu)」:準備模型后,評估其性能。如果性能不佳,嘗試進行提示工程(prompt engineering)或進一步微調。確保模型輸出與人類偏好保持一致。
「4、評估與迭代」:定期使用指標和基準進行評估。在提示工程、微調和評估之間進行迭代,直到達到期望的結果。
「5、模型部署」:當模型表現(xiàn)符合預期時,進行部署。在這個階段,優(yōu)化計算效率和用戶體驗。
LLM微調
LLM微調是一個將預訓練模型在較小、特定數(shù)據(jù)集上進一步訓練的過程,目的是精煉模型的能力,提高其在特定任務或領域上的性能。「微調的目的是將通用模型轉變?yōu)閷S媚P?#xff0c;彌合通用預訓練模型與特定應用需求之間的差距,確保語言模型更貼近人類的期望」。
以OpenAI的GPT-3為例,這是一個為廣泛的自然語言處理(NLP)任務設計的先進LLM。假設一家醫(yī)療組織希望使用GPT-3來幫助醫(yī)生從文本筆記生成患者報告。雖然GPT-3能理解和創(chuàng)建一般文本,但它可能沒有針對復雜的醫(yī)學術語和特定醫(yī)療術語進行優(yōu)化。
為了提高GPT-3在這一專業(yè)角色中的性能,該組織會在包含醫(yī)療報告和患者筆記的數(shù)據(jù)集上對GPT-3進行微調。它可能會使用像SuperAnnotate的LLM定制編輯器這樣的工具來構建具有所需界面的模型。通過這個過程,模型變得更加熟悉醫(yī)學術語、臨床語言的微妙之處和典型的報告結構。微調后,GPT-3能夠協(xié)助醫(yī)生生成準確且連貫的患者報告,展示了它對特定任務的適應性。
盡管微調聽起來對每個LLM都很有價值,但請記住,這并非沒有代價。接下來,將會詳細討論這些成本。
什么時候需要LLM微調
說起LLM,總會涉及到上下文學習、零樣本、單樣本和少樣本推理等話題。我們先快速了解一下它們主要的功能。
**上下文學習(In-context learning) **是一種通過在提示中加入特定任務示例來改進提示的方法,為LLM提供了完成任務的藍圖。
「零樣本(Zero-shot)、單樣本(One-shot)和少樣本(Few-shot)推理」?零樣本推理是在提示中直接使用輸入數(shù)據(jù),不添加額外示例。如果零樣本推理未能達到預期結果,可以使用單樣本或少樣本推理。這些策略涉及在提示中添加一個或多個已完成的示例,幫助較小的LLM表現(xiàn)得更好。
「上下文學習的問題」?將以上這些技術直接應用于用戶提示,旨在優(yōu)化模型輸出,使其更符合用戶偏好。問題是它們并不總是有效,尤其是對于較小的LLM。除此之外,在提示中包含的任何示例都會占用寶貴的上下文窗口空間,減少了包含其他有用信息的空間。
「當以上方式無法解決相關問題時,這就需要LLM微調」。但它與預訓練階段使用大量非結構化文本數(shù)據(jù)不同,微調是一個監(jiān)督學習過程。這意味著你使用標記好的示例數(shù)據(jù)集來更新LLM的權重。這些標記好的示例通常是prompt-response,使得模型能更好地完成特定任務。
有監(jiān)督微調(SFT)
有監(jiān)督微調意味著使用標記數(shù)據(jù)更新預先訓練的語言模型來完成特定任務。所使用的數(shù)據(jù)已提前檢查過。這與不檢查數(shù)據(jù)的無監(jiān)督方法不同。「通常語言模型的初始訓練是無監(jiān)督的,但微調是有監(jiān)督的」。接下來將為您介紹大模型微調具體流程,如下圖所示:
「1、數(shù)據(jù)準備」?有許多開源數(shù)據(jù)集可以提供關于用戶行為和偏好的洞察,即使它們沒有直接格式化為指令性數(shù)據(jù)。例如,我們可以利用亞馬遜產品評論的大量數(shù)據(jù)集,將其轉化為微調的指令提示數(shù)據(jù)集。提示模板庫包含了許多針對不同任務和不同數(shù)據(jù)集的模板。
「2、執(zhí)行微調」?將數(shù)據(jù)集分為訓練、驗證和測試部分。在微調過程中,你會從訓練數(shù)據(jù)集中選擇提示,并將它們傳遞給LLM,然后模型會生成完成的文本。
具體來說,當模型接觸到針對目標任務的新標記數(shù)據(jù)集時,它會計算其預測與實際標簽之間的誤差或差異。然后,模型使用這個誤差來調整其權重,通常通過梯度下降等優(yōu)化算法。權重調整的幅度和方向取決于梯度,梯度指示了每個權重對誤差的貢獻程度。對誤差貢獻更大的權重會被更多地調整,而貢獻較小的權重則調整較少。
「3、迭代調整」?在數(shù)據(jù)集的多次迭代(或稱為周期)中,模型繼續(xù)調整其權重,逐漸找到一種配置,以最小化特定任務的誤差。目標是將之前學到的一般知識適應到新數(shù)據(jù)集中的細微差別和特定模式,從而使模型在目標任務上更加專業(yè)化和有效。
「4、模型更新」?在這個過程中,模型會根據(jù)標記數(shù)據(jù)進行更新。它根據(jù)其猜測與實際答案之間的差異進行改變。這有助于模型學習標記數(shù)據(jù)中的細節(jié)。通過這樣做,模型在微調的任務上的表現(xiàn)會得到提升。
舉個簡單的例子,針對“天空為什么是藍色?”這個問題,模型微調之前給出的答案為:“因為大氣層散射陽光的方式。”,但是如果將該模型應用到科教平臺,這個答案就顯得太簡短了。收集相關數(shù)據(jù)進行模型微調之后,給出的答案為:“天空之所以呈現(xiàn)藍色,是因為一種叫做瑞利散射的現(xiàn)象。當陽光進入地球大氣層時,它包含了不同顏色的光,每種顏色都有其特定的波長。藍光波長較短,被大氣中的氣體和顆粒物向各個方向散射。這種散射使得直射陽光看起來是白色的,而天空本身則呈現(xiàn)出藍色?!?#xff0c;上面的這個回答很全面就非常適合科教平臺了。
微調方法
LLM微調是一個有監(jiān)督學習過程,主要使用標注數(shù)據(jù)集來更新LLM的權重,并使模型提高其特定任務的能力。接下來將為大家介紹一些值得注意的微調方法。
「1、指令微調」?一種提高模型在各種任務上表現(xiàn)的策略是指令微調。這涉及到使用示例來訓練機器學習模型,展示模型應該如何響應查詢。用于微調大型語言模型的數(shù)據(jù)集必須符合你的指令目的。
例如,如果你想提高模型的摘要能力,你應該構建一個包含摘要指令和相關文本的數(shù)據(jù)集。在翻譯任務中,應包含“翻譯這段文本”等指令。這些提示有助于讓模型以新的專業(yè)方式“思考”,并服務于特定任務。如下圖所示
「2、全微調(FFT)」?即更新模型所有權重的過程,被稱為全微調。這個過程會產生一個具有更新權重的新模型版本。需要注意的是,與預訓練一樣,全微調需要足夠的內存和計算預算來存儲和處理訓練過程中的所有梯度、優(yōu)化器和其他更新組件。
「3、參數(shù)高效微調(PEFT )」訓練語言模型是一項計算密集型任務。對于LLM全微調,內存不僅來存儲模型,還要存儲訓練過程中必要的參數(shù)。你的計算機可能能夠處理模型權重,但在訓練過程中為優(yōu)化狀態(tài)、梯度和前向激活分配多余的內存可能會存在挑戰(zhàn)。
簡單的硬件無法處理這種挑戰(zhàn)。這就是參數(shù)高效微調(PEFT)的關鍵所在。「雖然全LLM微調在監(jiān)督學習過程中更新每個模型的權重,但PEFT方法只更新一小部分參數(shù)」。這種遷移學習技術選擇特定的模型組件并“凍結”其余參數(shù)。結果是,與原始模型相比,參數(shù)數(shù)量顯著減少(在某些情況下,僅為原始權重的15-20%;2021年微軟提出的 LORA,斯坦福提出的 Prefix-Tuning,谷歌提出的 Prompt Tuning,2022年清華提出的 P-tuning v2、2023年華盛頓大學提出的QLoRA、2024年英偉達提出DoRA等基本上都是屬于該范疇)。
這使得內存需求更加可管理。不僅如此,「PEFT還解決了災難性遺忘問題。由于它不觸及原始LLM,模型不會忘記之前學到的信息」。全微調會為每個訓練任務產生一個新版本的模型,每個新版本都與原始模型大小相同,如果你在多個任務上進行微調,這可能會造成昂貴的存儲問題。
其它微調類型
「1、遷移學習」:遷移學習是將已在通用、大規(guī)模數(shù)據(jù)集上訓練過的模型,應用于特定任務的數(shù)據(jù)集上。這種方法適用于數(shù)據(jù)不足或時間緊迫的情況,優(yōu)勢在于訓練后能獲得更高的學習率和準確性。你可以使用像GPT-3和BERT這樣在大量數(shù)據(jù)上預訓練過的LLMs,并根據(jù)你的用例進行定制。
「2、任務特定微調」:任務特定微調是在特定任務或領域上,使用為該領域設計的數(shù)據(jù)集對預訓練模型進行微調。這種方法比遷移學習需要更多的數(shù)據(jù)和時間,但可以在特定任務上獲得更高的性能。
「3、災難性遺忘」:在全微調過程中,模型在單一任務上的權重被修改,可能導致在其他任務上的性能下降。例如,模型在微調后可能在情感分析等NLP任務上表現(xiàn)更好,但可能忘記如何執(zhí)行其他任務。
「4、多任務學習」:多任務微調是單任務微調的擴展,訓練數(shù)據(jù)集包含多個任務的輸入和輸出示例。這種方法可以同時提高模型在所有任務上的性能,避免災難性遺忘的問題。訓練過程中,通過多個周期的損失計算來更新模型權重,最終得到一個擅長多種任務的微調模型。但多任務微調模型需要大量數(shù)據(jù),可能需要5萬到10萬個示例。
「5、順序微調」:順序微調是將預訓練模型按順序適應多個相關任務。在初步遷移到一般領域后,LLM可能針對更具體的子集進行微調,例如從通用語言到醫(yī)學語言,再到兒科心臟病學。
注意,其實還有其它的微調類型,如自適應、行為和指令、強化微調,這些涵蓋了訓練語言模型的一些重要特定情況。
檢索增強RAG
說到模型微調,這里就必須要提一下檢索增強RAG了。RAG是微調的一種替代方法,它結合了自然語言生成和信息檢索。RAG確保語言模型通過外部最新知識或相關文檔提供信息來源。「這種技術彌合了通用模型廣泛知識與最新知識信息需求之間的差距」。因此,RAG是事實隨時間演變情況下的重要技術。
「RAG的優(yōu)勢」?RAG相較于微調的一個優(yōu)勢在于信息管理。傳統(tǒng)的微調將數(shù)據(jù)嵌入到模型架構中,實質上是“硬編碼”知識,這不容易修改。而RAG允許訓練數(shù)據(jù)的持續(xù)更新,并允許數(shù)據(jù)的移除或修訂,確保模型保持準確。
「RAG與微調的關系」?在語言模型的背景下,RAG和微調通常被視為競爭方法。然而,它們的結合使用可以顯著提高性能。特別是,微調可以應用于RAG系統(tǒng),以識別和改進其較弱的組件,幫助它們在特定LLM任務上表現(xiàn)出色。
詳細的RAG介紹可以參考這兩篇文章:
帶你全面了解 RAG,深入探討其核心范式、關鍵技術及未來趨勢!
一文帶你了解RAG(檢索增強生成) | 概念理論介紹+ 代碼實操(含源碼)
微調最佳實踐
「明確任務」:在微調大型語言模型的過程中,明確任務是基礎步驟。它可以提供清晰的方向,確保模型的強大能力被引導用于實現(xiàn)特定目標,并為性能測量設定明確基準。
「選擇合適的預訓練模型」:使用預訓練模型進行微調至關重要,因為它利用了從大量數(shù)據(jù)中獲得的知識,確保模型不會從零開始學習。這種方法既計算效率高又節(jié)省時間。此外,預訓練捕捉了通用語言理解,使微調能夠專注于領域特定的細節(jié),通常能在專業(yè)任務中帶來更好的模型性能。
「設置超參數(shù)」:超參數(shù)是模型訓練過程中可調整的變量,對找到適合任務的最優(yōu)配置至關重要。學習率、批量大小、周期數(shù)、權重衰減等是關鍵的超參數(shù),需要調整以優(yōu)化模型。
「評估模型性能」:微調完成后,通過測試集評估模型性能。這提供了對模型在未見數(shù)據(jù)上預期表現(xiàn)的無偏評估。如果模型仍有改進空間,也應考慮迭代優(yōu)化模型。