一、什麼是大模型指令微調(instruction tuning)
大模型指令微調(Instruction Tuning)是一種針對大型預訓練語言模型的微調技術,其核心目的是增強模型理解和執行特定指令的能力,使模型能夠根據使用者提供的自然語言指令準確、恰當地生成相應的輸出或執行相關任務。指令微調特別關注於提升模型在遵循指令方面的一致性和準確性,從而拓寬模型在各種應用場景中的泛化能力和實用性。
在進行指令微調的時候,會將Instruction(指令) 以及對應的answer拼接成文字(在拼接過程中一般會加入【USER】、【BOT】等角色,同時會加入開始、結束的special token,這樣可以轉換成一個chat式任務)。
如翻譯任務:
instruction:【USER】:將下列內容翻譯成英語:{待翻譯文字}
answer:【BOT】:{翻譯結果}
拼接後的文字:<bos_token>【USER】:將下列內容翻譯成英語:{待翻譯文字}<special token>【BOT】:{翻譯結果} <eos_token>
將拼接文字採用預訓練任務的方式進行自迴歸預測,和預訓練的區別在於loss的計算,同樣使用Cross-Entropy作為loss,在指令微調的時候只會計算answer部分,Instruction部分透過設定ignore_index隱掉。在上面的案例中,我們只會計算“【BOT】:” 之後的loss。
二、指令微調的資料工程的評估方法
對大模型進行指令微調時,樣本的精髓在於其質量而非數量,少量但精良的樣本往往勝過大批中低品質的樣本,實現同樣甚至更優的微調效果。
通常情況下,僅需約一萬份樣本便足以達成理想的微調成果。這一理念在Meta釋出的《LIMA: Less Is More for Alignment》論文中得到了有力闡述,該文獻強調了在指令微調過程中,高品質微調資料的決定性作用。據此,我們應當將重心放在提升樣本質量的打磨上,而非單純追求數量的增長。
然而,這種策略引出了一系列新的問題:
- 如何有效地評估待用於微調的樣本質量?
- 在建立和評估微調樣本質量的過程中需要關注哪幾個核心維度?
指標類別 | 指標名稱 | 指標含義 |
樣本多樣性(Sample Diversity) | 指令多樣性 | 考察樣本中指令的覆蓋範圍是否廣泛,是否包含了各類任務型別、不同難度級別以及多樣化的指令結構和表達方式,確保模型在微調後能應對多種複雜情境。 |
內容多樣性 | 檢查樣本中提供的文字內容是否涵蓋了不同主題、文體、長度以及語境,以避免模型在特定領域或文字型別上過擬合,確保其具備良好的泛化能力。
|
|
答案質量(Answer Quality) | 準確性(Accuracy) | 評估答案是否準確無誤地響應了給定指令和內容,是否忠實反映了任務要求,且不包含事實性錯誤、邏輯矛盾或語義模糊。 |
完備性(Completeness) | 考察答案是否全面覆蓋了指令所要求的所有任務點,尤其對於多步驟或複合任務,答案應完整體現所有必要的操作結果。 | |
簡潔性與清晰度(Conciseness & Clarity) | 衡量答案是否言簡意賅、表達清晰,避免冗餘資訊或含糊表述,確保模型在微調後生成的輸出易於理解和使用。 | |
一致性(Consistency) | 內部一致性 | 檢查同一指令對不同內容的處理結果是否保持一致,即模型在相似情境下應給出相似的答案。 |
外部一致性 | 對比樣本答案與已知的知識庫、專家判斷或公認的基準結果,確保答案符合領域共識和常識。 | |
難度適配(Difficulty Calibration) | 難易程度分佈 | 分析樣本集中簡單、中等、複雜任務的比例,確保微調資料集包含不同難度級別的樣本,有助於模型逐步提升處理複雜指令的能力。 |
噪聲控制(Noise Reduction) | 標籤錯誤檢查 | 識別並剔除標註錯誤或不一致的樣本,確保答案與指令、內容間的對映關係正確無誤。 |
資料清洗 | 去除重複樣本、無關內容或低質量文字,提升資料集的整體純淨度。 |
評估微調樣本質量屬於一項涉及多方面考量的綜合性工作,旨在確保用於指令微調的資料既能有效驅動模型學習指令理解與執行的核心技能,又能促進模型在實際應用中展現卓越的效能和廣泛的適應性。
透過嚴謹的質量評估與持續最佳化,可以最大限度地利用有限的高質量樣本資源,實現大模型指令微調的高效與精準。
二、指令微調的資料工程的原則技巧
以下列舉若干在進行領域資料SFT的策略與技巧:
策略類別 | 可操作策略 | 策略含義 |
精心構築領域資料集 | 定向採集 | 確保資料集富含領域特有情境、術語、規範標準及業務流程中典型的對話例項。 |
均衡分佈 |
注意各類子任務、場景類別及問題難度在資料集中的均勻分佈,防止模型在微調時對任何部分過度學習或忽視。 |
|
高標準標註 |
邀請領域專家進行資料標註,確保標籤的精確無誤,特別是在處理複雜或專業性強的任務時。 |
|
資料增強與跨域遷移 | 資料擴充 | 運用合成、變換、拼接等手段豐富資料多樣性,模擬真實場景中的變體,如文字替換、句法變化、噪聲插入等,提升模型抗干擾能力。 |
跨域借鑑 | 若存在關聯領域的預訓練或微調資料,可適度引入作為補充,利用領域間共性加速模型學習程序。 | |
微調方案定製 | 分層次微調 | 面對複雜業務場景,可先進行宏觀層面的領域適應,隨後針對具體子任務進行精細化微調,逐步提升模型的專業化水準。 |
多工融合 | 結合多個相關任務的資料集進行聯合微調,運用多工學習機制增強模型對領域整體認知能力。 | |
動態最佳化 | 依據模型在驗證集上的表現適時調整學習率、正則化力度、早停規則等超引數,確保微調過程既不陷入過擬合也不至於欠擬合。 | |
應用輕量級微調技術 | Adapter外掛 | 在模型內部植入可學習的Adapter模組,僅更新這些模組引數以適應新領域,保持主模型引數不動,節省儲存與計算資源。 |
LoRA(低秩適應) | 透過向模型引數新增低秩矩陣進行修正,約束引數更新規模,維持原模型架構的同時實現高效微調。 | |
Prompt調優 | 僅對提示(Prompt)進行微調,利用精心構造的提示引導模型生成與特定領域緊密相關的輸出,無需改動模型主體結構。 | |
持續監控與迭代 | 效能監控 | 定期評估模型在實際業務場景下的表現,及時發現並解決潛在問題。 |
線上學習 | 結合實際使用者互動資料進行實時或定期線上微調,持續最佳化模型效能。 | |
反饋迴圈 | 建立使用者反饋機制,收集使用者對模型輸出的意見,用於指導後續模型改進。 |
參考連結:
https://zhuanlan.zhihu.com/p/682604566 https://mp.weixin.qq.com/s/7sOrKUlK7XyqItPa_DoI_g