如何微調:關注有效的資料集!

公众号-JavaEdge發表於2024-09-14

如何微調:關注有效的資料集

本文關於適應開源大型語言模型(LLMs)系列部落格的第三篇文章。在這篇文章中,我們將探討一些用於策劃高質量訓練資料集的經驗法則。

  • 第一部分探討了將LLM適應於領域資料的普遍方法
  • 第二部分討論了咋確定微調是否適用於你的實際情況

1 介紹

微調LLMs是一門藝術與科學的結合,該領域的最佳實踐仍在不斷髮展中。在本篇博文中,我們將突出微調的設計變數,並給出我們迄今為止所見的最佳實踐的方向性指導,以在資源受限的情況下微調模型。我們建議使用下面的資訊作為制定微調實驗策略的起點。

2 全量微調 V.S 引數高效微調(PEFT)

都顯示出在應用於新領域時改進了下游效能,無論在學術環境中還是在實際設定。選擇哪種取決於:

  • 可用的計算資源(以GPU小時數和GPU記憶體衡量)
  • 除目標下游任務之外的任務表現(學習-遺忘權衡)
  • 人工標註成本

2.1 全量微調

更可能遭受兩個問題:

  • 模型坍縮:模型輸出收斂到有限的一組輸出,而原始內容分佈的尾部消失了
  • 災難性遺忘

如該系列的第一部分所述,災難性遺忘導致模型失去其能力。一些早期經驗研究表明,全量微調比PEFT更易出現上述問題,儘管還需要進一步研究。

2.2 PEFT技術

設計上作為微調的自然正則化器。PEFT通常需要相對較少的計算資源來訓練下游模型,且對於資料集大小有限的資源受限場景更適用。

2.3 小結

某些情況下,全量微調在感興趣的特定任務上表現更好,通常是犧牲了模型的一些原有能力。這種“學習-遺忘”的權衡在LoRA和全量微調之間的比較論文中進行了深入探討在此論文中。

考慮到資源限制,PEFT技術可能比全量微調提供更好的效能提升/成本比率。如果在資源受限的情況下,下游效能至關重要,那麼全量微調將是更有效的。無論在哪種情況下,關鍵在於建立高質量的資料集,同時牢記以下主要原則。

3 資料集策劃

在文獻中的微調實驗中,資料集對於充分利用微調至關重要。這不僅僅是“質量更高和更多樣例”的問題,你可以智慧地投資於資料收集以提高資源受限微調實驗的表現。

3.1 資料質量和數量

① 質量至上

總體趨勢是質量比數量更重要—即最好擁有一小套高質量資料,而非一大套低質量資料。質量的關鍵原則包括一致的標註、無錯誤、未標記的資料、噪聲輸入/輸出以及與總體相比具有代表性分佈。

微調時,LIMA資料集中的幾千個精心挑選的例子比5萬個機器生成的Alpaca資料集表現更好。OpenAI微調文件建議,即使是50到100個樣例的資料集也可能有所作為。

② 較難的語言任務需要更多資料

相對較難的任務,如文字生成和摘要,比簡單的任務如分類和實體提取更難微調,且需要更多的資料。“較難”可指多種情況:輸出中的更多標記、所需的人類能力等級更高、多個正確答案。

③ 高效高質量資料收集

由於資料收集昂貴,建議以下策略以提高樣本效率和降低成本:

  • 觀察失敗模式:觀察先前ML能力失敗的例子,並新增針對這些失敗模式的例子
  • 人機協作:這是一種更便宜的方式擴充套件資料標註。我們使用LLM自動化生成基礎響應,人類標註者可以用來在更短時間內完成標註

3.2 資料多樣性

簡單來說,如果你過度訓練模型以產生某種特定型別的響應,則即使這不是最合適的答案,模型也會偏向於給出那種響應。這裡的經驗法則是儘可能確保訓練資料反映模型在現實世界中的行為方式。

  • 重複: 這已經被發現是模型退化的根源,無論是微調還是預訓練。透過去重實現的多樣性往往能改善效能指標。
  • 輸入的多樣性: 透過改寫輸入來實現多樣性。在微調SQLCoder2時,團隊重新表述了伴隨SQL查詢的純文字,以引入語法和語義多樣性。類似地,指令回譯已被用於人類編寫文字,透過問LLM“這可能是對什麼問題的回答?”來生成問答資料集。
  • 資料集的多樣性: 當微調更一般的下游任務——例如多語言適應——時,使用多樣化的資料集已被證明可以改善模型遺忘原始能力與學習新能力之間的學習-遺忘權衡。為不同語言如印地語奧迪亞語微調的模型使用了豐富的語言特定資料集與其他指令微調資料集,如FLANAlpaca、Dolly等,以增加多樣性。
  • 標準化輸出: 從輸出中移除空格和其他格式花招已被證明是有幫助的。SQLCoder2從生成的SQL中移除空格,讓模型專注於學習重要的SQL概念,而不是像空格和縮排這樣的花招。如果你希望回答中有特定的語氣,“幫助臺聊天機器人是...”,那麼在每個例子中都加入這些內容。

4 基於LLM的資料管道

為了策劃高質量多樣化的資料集,資料管道經常使用LLM來減少標註成本。實踐中觀察到的技術:

  • 評估: 使用高質量資料集訓練模型並利用它來標註你較大的資料集,以過濾出高質量的例子
  • 生成: 用高質量的例子種子LLM並提示其生成類似的高質量例子。合成資料最佳實踐正在形成中
  • 人機協作: 使用LLM生成一組初始輸出,並用人來透過編輯或選擇偏好來提高質量

5 除錯你的資料集

  • 評估你的資料集中的不良輸出: 如果模型在某些方面仍然表現不佳,新增直接展示給模型如何正確處理這些方面的訓練例子。如果你的模型有語法、邏輯或風格問題,檢查你的資料是否有同樣的問題。例如,如果模型現在說“我會為你安排這次會議”(當它不應該這樣做時),看看現有例子是否教會了模型說它可以做它不能做的事情。
  • 審視正負類平衡: 如果資料中有60%的助手回應說“我無法回答這個問題”,但在推理階段只有5%的回應應該這麼說,那麼你可能會得到過多的拒絕回應。
  • 詳盡性和一致性: 確保你的訓練例子包含所有需要的回應資訊。如果我們希望模型根據使用者的個人特質讚美使用者,並且訓練例子中包含了對前面對話中沒有提到的特質的助手讚美的例子,模型可能會學會虛構資訊。確保所有的訓練例子都是以預期的格式呈現,以便推理。檢視訓練例子中的一致性。如果多人建立了訓練資料,那麼模型的表現很可能受到人們之間一致性的限制。例如,在文字抽取任務中,如果人們只在70%的抽取片段上達成一致,模型很可能也無法做得更好。

6 結論

微調是LLMs開發的重要組成部分,需要在資源限制下取得微妙的權衡!

關注我,緊跟本系列專欄文章,咱們下篇再續!

作者簡介:魔都架構師,多家大廠後端一線研發經驗,在分散式系統設計、資料平臺架構和AI應用開發等領域都有豐富實踐經驗。

各大技術社群頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。

負責:

  • 中央/分銷預訂系統效能最佳化
  • 活動&券等營銷中臺建設
  • 交易平臺及資料中臺等架構和開發設計
  • 車聯網核心平臺-物聯網連線平臺、大資料平臺架構設計及最佳化
  • LLM Agent應用開發
  • 區塊鏈應用開發
  • 大資料開發挖掘經驗
  • 推薦系統專案

目前主攻市級軟體專案設計、構建服務全社會的應用系統。

參考:

  • 程式設計嚴選網

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章