楊兆瑞
浙江大學CAD&CG全國重點實驗室博士生
導師為陳為教授
概述
大型語言模型(LLMs)的興起徹底改變了自然語言處理領域,但對它們進行特定任務的微調常常面臨在平衡性能和保持一般指令遵循能力方面的挑戰。在本文中,我們認為任務資料集與LLMs之間的分布差距是問題的主要根本原因。為解決這一問題,我們引入了自蒸餾微調(Self-Distillation Fine-Tuning,SDFT)方法。它引導模型對任務資料集進行改寫,并在蒸餾生成的資料集上進行微調,進而彌合分布差距,并比對模型的原始分布。我們使用Llama-2-chat模型在各種基準資料集上進行了實驗,證明了SDFT能有效減輕災難性遺忘,且在與普通微調相比時,在下遊任務上實作了相當或更佳的性能。此外,SDFT表現出維持LLMs的有用性和安全對齊的潛力。
論文位址:https://arxiv.org/abs/2402.13669
代碼位址:https://github.com/sail-sg/sdft
01
The Landscape of LLM Model Fine-tuning
在Hugging Face平台上,每天都有衆多微調模型湧現,既有社群愛好者的貢獻,也有大型研究機構的成果。例如,搜尋基于Llama3的模型,便能找到超過9000個結果。
02
The Challenge of Enhancing Existing Models: Performance
盡管微調模型以提升特定任務性能看似簡單,但實際操作卻面臨挑戰。以Meta釋出的Llama3為例,其訓練資料細節未公開,且模型已使用超過1000萬個未公開标注示例。是以,收集模型未見過的私有資料并進行有效微調并非易事。
03
The Challenge of Enhancing Existing Models: Safety
微調大型語言模型可能削弱其安全性。根據ICLR 24的一篇文章,微調後的模型安全性可能大幅降低。盡管模型在通過RLHF對齊後與人類價值觀一緻,微調仍可能破壞這一安全保障。實驗顯示,即使是使用良性資料集進行微調,模型的安全性也會降低。
04
The Need for a Better Approach
前面提到了微調面臨的兩個挑戰:性能和安全性。本文探讨是否存在一種更優的方法來進行微調,以便在提升下遊任務能力的同時,仍能保持模型原有的安全性能。這涉及到對模型進行定制化與保持其通用性的平衡。
05
The Root Cause of Challenge
本文實驗表明,微調的主要挑戰在于原始模型資料分布與微調資料分布之間的差異。左圖顯示了Lama-3-Instruct模型的廣泛能力,如代碼生成、故事講述和文本摘要,這些能力與人類價值觀對齊,確定了模型的安全性。然而,微調特定任務時,所用資料往往來自狹窄分布,可能影響模型性能。
06
Introducing Self-Distillation Fine-Tuning
基于上述發現,本研究提出了一種新的微調政策,名為自蒸餾微調(Self-Distillation Fine-Tuning,簡稱SDFT)。該方法旨在對齊任務資料集與語言模型的原始資料集,以減少兩者之間的分布差異,同時保留資料集中的監督資訊。SDFT通過語言模型對目标标簽進行重寫,實作新知識與模型原有知識體系的整合。
本文進一步提供了一個示意圖,清晰展示了兩種微調方法的差異。圖的上半部分展示了傳統微調(Vanilla Fine-Tuning),即直接在特定資料集上對語言模型進行微調,以增強其在特定任務上的表現。然而,此方法可能導緻模型在其他能力上的損失,形成所謂的折衷語言模型。相對而言,圖的下半部分介紹了SDFT方法。該方法首先通過蒸餾技術生成精煉資料集,随後在該資料集上執行微調,旨在提升模型在特定任務上的性能,同時避免對原始能力的損害。
07
Method: Self-Distillation Fine-tuning
本文提出的SDFT方法通過從標明的對話模型開始,如Llama-3-Instruct或Llama-2-Chat,篩選并重寫特定下遊任務中表現不佳的資料集,生成與原始模型分布對齊的精煉資料集,進而在該資料集上進行微調,以實作在提升新技能的同時保持模型原有能力的目标。示意圖展示了将原始資料集分布向模型原始分布的轉變過程,進而確定微調後的資料集分布(橙色區域)與模型的初始分布更為接近。
下圖中呈現了一個用于知識蒸餾的模闆及其應用執行個體。該模闆是在Alpaca模闆的基礎上經過調整形成的,它包含了原始的指令和響應,旨在引導模型基于這些資訊生成創新的響應。示範的右側部分具體展示了一個示例,其中包含了指令和原始響應,以及模型經過改寫得到的蒸餾響應。原始響應僅對問題進行了簡要回答,而蒸餾響應則在此基礎上進行了擴充,融入了模型自有的知識體系,以提供更全面的答複。
08
Experiments: SDFT vs. Vanilla Fine-tuning
實驗階段,本表格詳細對比了傳統的Fine-tuning方法與本研究所提出方法的性能差異。
實驗主要聚焦于三個具有代表性的下遊任務資料集:GSM8K(數學問題集)、HumanEval(代碼生成能力評估)以及OpenFunctions(函數調用能力評估)。表格中列出了各模型在經過微調後,在不同資料集上的性能表現。
資料顯示,在經過傳統微調之後,模型在特定微調資料集上的性能有所增強。例如,原始的語言模型在OpenFunctions資料集上的準确率從19.6提升至34.8。然而,這種提升往往伴随着在其他資料集上性能的下降,如在OpenFunctions資料集上微調後,GSM8K資料集上的準确率從29.4下降至21.5。這一對比凸顯了傳統微調方法的局限性。相對地,采用本研究提出的自我蒸餾微調方法,觀察到了不同的結果,表明該方法可以在維持模型原有能力的同時,有效提升特定任務的性能。
在針對特定任務資料集的微調過程中,本研究所采用的方法不僅在目标資料集上實作了性能提升,其準确率達到了36.6,這一結果與采用傳統微調所取得的提升相當或更優,如藍框所示區域所展示。值得注意的是,在經過本方法的微調後,模型在其他資料集上的性能下降幅度較小。以GSM8K資料集為例,在傳統微調後性能下降至21.5,而通過自我蒸餾微調後,性能僅略微下降至29.1。這一現象表明,盡管兩種微調方法均能有效提升模型在目标任務上的性能,但本研究所提出的方法在保持模型原有廣泛能力方面表現更佳。
本部分深入探讨了模型在安全性和幫助性方面的表現。實驗對比了兩種微調技術:傳統微調與自我蒸餾微調。圖表中,左側展示了傳統微調的結果,而右側則展示了SDFT的效果。實驗結果表明,經過傳統微調後,模型在安全性和幫助性方面的性能出現了顯著下降。相比之下,采用SDFT方法的模型在微調後能夠更有效地維持其原有的安全性和幫助性水準,進而在保持性能的同時,也確定了模型的可靠性和實用性。
09
Analysis: Distribution Gap
在本研究的分析階段,探讨了微調後模型與原始模型之間分布差異的問題。通過對資料集進行模型推理,評估了微調後模型與原始模型在嵌入空間的相似度,以此衡量模型分布的變化。圖表中,紅色區域代表傳統微調後模型與原始模型的嵌入相似度,而綠色區域則顯示了采用自我蒸餾微調方法後的嵌入相似度。結果表明,自我蒸餾微調方法處理後的模型在嵌入相似度上具有明顯提升,這表明該方法能夠有效地減少分布變化,減輕微調過程中的模型遺忘問題。
10
Analysis: Effective across Models
在進一步的分析中,研究旨在驗證所提方法在不同模型和規模上的普适性。先前的表格主要關注了Llama-2-7b-chat模型在LoRA微調上的表現。為補充這一分析,本研究擴充了考察範圍,包括以下三種不同場景:首先是在Llama-2-7b-chat模型上實施全參數微調,結果表明了顯著的性能提升;其次是在Llama-2-13b-chat模型上應用LoRA微調;最後是在最新釋出的Llama-3-8B-Instruct模型上執行LoRA微調。實驗結果顯示,在所有這三種場景中,所提方法相較于傳統微調均展現出更優的性能。綜合這些發現,可以得出結論,該方法在不同模型尺寸和架構上均表現出良好的效果和适用性。
11
Take Away
本研究的核心發現指出,分布偏移是導緻微調過程中災難性遺忘的關鍵因素。為應對這一挑戰,提出的方法采用自蒸餾技術來減少分布差距,有效緩解了遺忘問題。實驗結果進一步證明,該方法不僅提升了模型在目标任務上的性能,還成功保留了模型的原始能力。