一文徹底搞懂大模型 - LLM 的構建流程
大模型(LLM,Large Language Model)的構建流程,特別是 OpenAI 所使用的大語言模型 GPT 構建流程,主要包含四個階段:預訓練、有監督微調、獎勵建模和強化學習。 這四個階段各自需要不同規模的數據集、不同類型的算法,並會產出不同類型的模型,同時所需的資源也有顯著差異。
一、預訓練(Pre-training)
什麼是預訓練? 預訓練技術通過從大規模未標記數據中學習通用特徵和先驗知識,減少對標記數據的依賴,加速並優化在有限數據集上的模型訓練。
-
目標:讓模型學習語言的統計模式和語義信息。
-
數據集:利用海量的訓練數據,這些數據可以來自互聯網網頁、維基百科、書籍、GitHub、論文、問答網站等,構建包含數千億甚至數萬億單詞的具有多樣性的內容。
-
算法與資源:利用由數千塊高性能 GPU 和高速網絡組成的超級計算機,花費數十天甚至數月的時間完成深度神經網絡參數的訓練,構建基礎模型(Foundation Model)。這一階段對計算資源的需求極大,例如 GPT-3 的訓練就使用了 1000 + 的 NVIDIA GPU,並花費了相當長的時間。
-
結果:基礎模型能夠對長文本進行建模,具備語言生成能力,根據輸入的提示詞,模型可以生成文本補全句子。
爲什麼需要預訓練? 預訓練是爲了讓模型在見到特定任務數據之前,先通過學習大量通用數據來捕獲廣泛有用的特徵,從而提升模型在目標任務上的表現和泛化能力。
預訓練的技術原理是什麼? 預訓練利用大量無標籤或弱標籤的數據通過某種算法模型進行訓練,得到一個初步具備通用知識或能力的模型。
預訓練是語言模型學習的初始階段。在預訓練期間,模型會接觸大量未標記的文本數據,例如書籍、文章和網站。目標是捕獲文本語料庫中存在的底層模式、結構和語義知識。
二、有監督微調(Supervised Fine Tuning)
什麼是有監督微調?有監督微調(Supervised Fine-Tuning, SFT),也被稱爲指令微調(Instruction Tuning)。在已經預訓練好的模型基礎上,通過使用有標註的特定任務數據對模型進行進一步的訓練和調整,以提高模型在特定任務或領域上的性能。
-
目標:使模型具備完成特定任務(如問題回答、翻譯、寫作等)的能力。
-
數據集:使用少量高質量數據集,這些數據集包含用戶輸入的提示詞和對應的理想輸出結果。
-
算法:在基礎模型的基礎上進行有監督訓練,使用與預訓練階段相同的語言模型訓練算法。
-
資源:相比預訓練階段,有監督微調所需的計算資源較少,通常只需要數十塊 GPU,並在數天內完成訓練。
-
結果:得到有監督微調模型(SFT 模型),該模型具備初步的指令理解能力和上下文理解能力,能夠完成開放領域問答、閱讀理解、翻譯、生成代碼等任務。
爲什麼需要有監督微調?儘管預訓練模型已經在大規模數據集上學到了豐富的通用特徵和先驗知識,但這些特徵和知識可能並不完全適用於特定的目標任務。微調通過在新任務的少量標註數據上進一步訓練預訓練模型,使模型能夠學習到與目標任務相關的特定特徵和規律,從而更好地適應新任務。
-
減少對新數據的需求:可以利用預訓練模型已經學到的知識,減少對新數據的需求,從而在小數據集上獲得更好的性能。
-
降低訓練成本:*微調只需要調整預訓練模型的部分參數,而不是從頭開始訓練整個模型,因此可以大大減少訓練時間和所需的計算資源。
有監督微調的技術原理是什麼? 在預訓練模型的基礎上,針對特定任務或數據領域,通過在新任務的小規模標註數據集上進一步訓練和調整模型的部分或全部參數使模型能夠更好地適應新任務,提高在新任務上的性能。
有監督微調如何分類? SFT 根據是否調整全部參數,可以細分爲全面微調(Full Fine-tuning)和部分 / 參數高效微調(Parameter-Efficient Fine-tuning, PEFT)。
-
全面微調(Full Fine-tuning)
-
定義:在新任務上調整模型的全部參數,以使其完全適應新任務。
-
步驟:加載預訓練模型 → 在新任務數據集上訓練模型,調整所有參數。
-
應用:當新任務與預訓練任務差異較大,或者想要充分利用新任務數據集時,可以選擇全面微調。
-
部分 / 參數高效微調(PEFT)
-
定義: 僅調整模型的部分參數,如添加一些可訓練的適配器(adapters)、前綴(prefixes)或微調少量的參數,以保持模型大部分參數不變的同時,實現對新任務的適應。
-
步驟: 加載預訓練模型 → 在模型中添加可訓練的組件或選擇部分參數 → 在新任務數據集上訓練這些組件或參數。
-
應用:當計算資源有限,或者想要快速適應新任務而不影響模型在其他任務上的性能時,PEFT 是一個很好的選擇。
三、獎勵建模(Reward Modeling)
什麼是獎勵模型? 獎勵模型是一個文本質量對比模型,它接受環境狀態、生成的結果等信息作爲輸入,並輸出一個獎勵值作爲反饋。獎勵模型通過訓練,能夠識別並區分不同輸出文本之間的優劣,爲後續的強化學習階段提供準確的獎勵信號。
-
目標:構建一個文本質量對比模型,用於評估模型生成文本的質量。
-
數據集:需要百萬量級的對比數據標註,這些數據標註需要消耗大量的人力和時間。
-
算法:通過二分類模型,對輸入的兩個結果之間的優劣進行判斷。
-
資源:獎勵模型的訓練同樣需要數十塊 GPU,並在數天內完成。
-
結果:得到一個能夠評估模型生成文本質量的獎勵模型,該模型本身並不能單獨提供給用戶使用,但爲後續強化學習階段提供重要支持。
爲什麼需要獎勵模型?獎勵模型能夠量化並優化 LLM 生成的文本質量,使其更符合人類期望,從而提升 LLM 的性能和實用性。
獎勵模型如何構建與訓練? 獎勵模型採用二分類結構,通過對比人工標註的文本數據集進行訓練,優化參數以最小化預測錯誤率或最大化排序準確性,需要大量計算資源和時間。
-
模型架構:獎勵模型通常採用二分類模型的結構,通過輸入一對文本(即兩個輸出結果),判斷它們之間的優劣關係。
-
訓練數據:獎勵模型的訓練數據通常來源於人工標註的對比數據集。標註者需要根據預設的標準(如準確性、有用性、流暢性等)對多個輸出文本進行排序或分類。
-
訓練過程:獎勵模型的訓練過程類似於其他機器學習模型,需要使用大量的計算資源(如數十塊 GPU)和較長時間(數天)來完成。
四、強化學習(Reinforcement Learning)
什麼是強化學習? 根據數十萬名用戶給出的提示詞,利用前一階段訓練的獎勵模型,給出 SFT 模型對用戶提示詞補全結果的質量評估,並與語言模型建模目標綜合得到更好的效果。
-
目標:根據獎勵模型的評估,進一步優化模型生成文本的能力,使其更符合人類期望。
-
數據集:使用數十萬用戶給出的提示詞和獎勵模型評估的結果。
-
算法:利用強化學習算法(如 PPO)調整模型參數,使模型生成的文本能夠獲得更高的獎勵。
-
資源:相比預訓練階段,強化學習所需的計算資源較少,通常也只需要數十塊 GPU,並在數天內完成訓練。
-
結果:得到最終的強化學習模型(RL 模型),該模型具備更強的理解和生成能力,能夠更好地滿足人類的需求和期望。
爲什麼需要強化學習?使用強化學習,在 SFT 模型的基礎上調整參數,使最終生成的文本可以獲得更高的獎勵 (Reward)。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/LEqrgiQxdKU4deffz-VTWg