這是一篇關於適應開源大語言模型(LLMs)的三部系列部落格的第一篇。本文探討將LLM適應領域資料的各種方法。
- 第二部分討論如何確定微調(fine-tuning)是否適合您的用例。
- 第三部分探討策劃良好訓練資料集的一些經驗法則。
0 引言
大語言模型(LLMs)在多種語言任務和自然語言處理(NLP)基準測試中展示了出色的能力。基於這些“通用”模型的產品應用正在增加。本文為小型AI產品團隊提供指導,幫助他們將LLM適應並整合到他們的專案中。首先,澄清圍繞LLM的(常常令人困惑的)術語,然後簡要比較現有的不同適應方法,最後推薦一個逐步流程圖,助你識別適合你的用例的方法。
1 適應LLM的方法
1.1 預訓練
預訓練是從頭開始。
使用數萬億資料tokens訓練LLM的過程。該模型使用自監督(self-supervised)演算法進行訓練。最常見的訓練方式是透過自迴歸預測下一個token(又稱因果語言建模)。預訓練通常需要數千小時的GPU(105 – 107 [source1,source2]),並且分佈在多個GPU上。預訓練輸出的模型被稱為基礎模型。
1.2 持續預訓練
持續預訓練(又稱第二階段預訓練)涉及使用新的、未見過的領域資料對基礎模型進行進一步訓練。使用與初始預訓練相同的自監督演算法。通常所有模型權重都會參與其中,並且會將一部分原始資料與新資料混合進行訓練。
1.3 微調(fine-tuning)
微調是使用帶有註釋的資料集以監督方式或使用基於強化學習的技術來適應預訓練語言模型的過程。與預訓練的主要區別:
- 使用帶有正確標籤/答案/偏好的帶註釋資料集進行監督訓練,而不是自監督訓練
- 所需tokens數量較少(成千上萬或數百萬,而預訓練需要數十億或數萬億),主要目的是增強如指令跟隨、人類對齊、任務執行等能力
理解微調的當前格局可以從兩個維度進行:改變的引數百分比以及微調結果帶來的新功能。
1.4 改變的引數百分比
根據改變的引數數量,微調分為:
- 全量微調:顧名思義,它涵蓋了模型的所有引數,包括像 XLMR 和 BERT(100 – 300M 引數)等小型模型上的傳統微調,以及像Llama 2、GPT3(1B+ 引數)等大型模型上的微調
- 引數高效微調(PEFT):與微調所有LLM權重不同,PEFT演算法只微調少量附加引數或更新預訓練引數的子集,通常為1 – 6%的總引數
1.5 為基礎模型新增的功能
微調的目的是為預訓練模型新增功能,例如指令跟隨、人類對齊等。Chat-tuned Llama 2是一個透過微調新增了指令跟隨和對齊能力的模型示例。
1.6 檢索增強生成(RAG)
企業也可以透過新增特定領域的知識庫來適應LLM。RAG本質上是“基於搜尋的LLM文字生成”。RAG使用一個根據使用者問題檢索到的動態提示上下文,並將其注入LLM提示中,從而引導其使用檢索到的內容,而不是其預訓練的(可能過時的)知識。Chat LangChain是一個基於RAG的LangChain文件問答聊天機器人。
1.7 上下文學習(ICL)
在ICL中,透過在提示中放置示例來適應LLM。研究表明,透過示例進行演示是有效的。示例可以包含不同種類的資訊:
- 僅輸入和輸出文字——即少樣本學習
- 推理軌跡:新增中間推理步驟;參見鏈式推理(CoT)提示
- 規劃和反思軌跡:新增教LLM規劃和反思其問題解決策略的資訊;參見ReACT
還有多種修改提示的策略,提示工程指南中提供了詳細的概述。
2 選擇正確的適應方法
為了確定上述方法中的哪一種適合特定應用,應考慮各種因素:所需的模型能力、訓練成本、推理成本、資料集型別等。以下流程圖總結了如何選擇合適的LLM適應方法:
3 總結
建立基於LLM的系統是一個迭代過程。建議從簡單的方法開始,並逐步增加複雜性,直到實現目標。上面的流程圖為你的LLM適應策略提供了堅實的基礎。
關注我,緊跟本系列專欄文章,咱們下篇再續!
作者簡介:魔都架構師,多家大廠後端一線研發經驗,在分散式系統設計、資料平臺架構和AI應用開發等領域都有豐富實踐經驗。
各大技術社群頭部專家博主。具有豐富的引領團隊經驗,深厚業務架構和解決方案的積累。
負責:
- 中央/分銷預訂系統效能最佳化
- 活動&券等營銷中臺建設
- 交易平臺及資料中臺等架構和開發設計
- 車聯網核心平臺-物聯網連線平臺、大資料平臺架構設計及最佳化
- LLM Agent應用開發
- 區塊鏈應用開發
- 大資料開發挖掘經驗
- 推薦系統專案
目前主攻市級軟體專案設計、構建服務全社會的應用系統。
參考:
- 程式設計嚴選網
本文由部落格一文多發平臺 OpenWrite 釋出!