Nemotron-4 340B 技術報告:全面解讀當前最強大語言模型的誕生過程
1. 最強開源模型要易主了?
圖片
2天前,英偉達發布了其最強大語言模型 Nemotron-4 340B模型家族,包括 Nemotron-4-340B-Base、Nemotron-4-340B-Instruct 和 Nemotron-4-340B-Reward。
所有的模型都是基于NVIDIA的開源模型許可協議,允許用戶自由分發、修改和使用模型及其輸出。并且可以在8塊H100的單機上以FP8精度運行。
1.1 自動化測評
在 Nemotron-4-340B-Instruct 的自動基準測試評估中,分別與開源(如 MetaAI 的 Llama-3-70B-Instruct、Mistral-AI-Team 的 Mixtral-8x22B-Instruct-v0.1 和 Qwen-Team 的 Qwen-2-72B-Instruct)及閉源模型(包括 OpenAI 的 GPT-4-1106-preview、MistralAI-Team 的 Mistral Large 和 Anthropic 的 Claude-3-Sonnet)進行了對比。
評估了包括單輪對話(AlpacaEval 2.0 LC 和 Arena Hard)、多輪對話(MT-Bench 的修正版,分數較原版本平均低 0.8 分,修正答案詳見 GitHub 鏈接)、聚合基準(MMLU)、數學(GSM8K)、編程(HumanEval 和 MBPP 的 Pass@1 分數)、指令遵循(IFEval)和主題遵循(TFEval)等多個任務。
圖片
如上圖所示,Nemotron-4-340B-Instruct 在零樣本評估中表現出色,這反映了模型在不使用樣例時遵循指令的能力,更貼近人類與大型語言模型的實際互動。在多個測試數據集上都超越了GPT4成為了最強模型。
1.2 人類標注
在接下來的人類標注測試中,組織了一支經驗豐富的標注團隊,對模型進行了人工評估。
測試集包括136個精心分類的問題,涵蓋10種不同的任務類型,并采用6點李克特量表來評定回答的質量。該量表不僅包含五個質量等級,還特別增加了一個等級,用于評價模型在徹底未遵循指令時的表現。標注準則圍繞兩個核心維度:幫助性(helpfulness)和真實性(truthfulness)。
圖片
如上圖所示,除了信息抽取和重寫任務外,Nemotron-4-340B-Instruct 的表現與 GPT-4-1106-preview 相當甚至更優,尤其在多輪對話任務上表現突出。整體來看,模型在評估集中的勝負/平局比為 28.19%:46.57%:25.24%。
圖片
至于人類評估中的次要指標,標注者對回答長度的感知在上表有所體現。結果顯示,與 GPT-4-1106-preview 相比,標注者認為 Nemotron-4-340B-Instruct 的回答長度更合適(79.41% 對 74.02%),這主要得益于其較少的冗長回答(20.10% 對 25.74%)。
為什么Nemotron-4這么強?
2.1 訓練數據集構成
預訓練數據集由三種不同數據類型組成:英語自然語言數據占比70%,多語種自然語言數據占比15%,以及源代碼數據同樣占比15%。英語語料庫涵蓋了網絡文檔、新聞稿件、科學論文、書籍等多樣來源和領域的精選文檔。多語種數據覆蓋了53種語言,包括單語種和平行語料庫中的文檔;代碼數據集則囊括了43種編程語言。
在這組數據上累計訓練了9萬億個token,前8萬億token屬于正式預訓練階段,而后1萬億token則在二次訓練階段完成。關于訓練語料庫的詳細構成和策劃流程,Nemotron-4-340B-Base 與 Nemotron-4-15B-Base 采用了相同的數據混合比例。
2.2 架構細節解析
Nemotron-4-340B-Base 在架構上與 Nemotron-4-15B-Base 保持一致,采用標準的** decoder-only Transformer架構,配備因果注意力掩碼,引入Rotary Position Embeddings (RoPE) 、SentencePiece 分詞器(Kudo 和 Richardson,2018年),以及在 MLP 層中應用平方 ReLU 激活函數。還融入了分組查詢注意力(GQA)技術。Nemotron-4-340B-Base 的超參數如下表所示,擁有 9.4 億嵌入參數和 331.6 億非嵌入參數。
圖片
2.3 訓練過程
Nemotron-4-340B-Base 的訓練動用了 768 個 DGX H100 節點,每個節點裝備有 8 塊基于 NVIDIA Hopper 架構(NVIDIA,2022年)的 H100 80GB SXM5 GPU。這些 GPU 在執行 16 位浮點(bfloat16)運算時,單塊 GPU 的峰值性能可達 989 teraFLOP/s。節點內的 GPU 通過 NVLink 和 NVSwitch(nvl)相連,GPU 間帶寬高達 900 GB/s(雙向各 450 GB/s)。每個節點還配備了 8 個 NVIDIA Mellanox 400 Gbps HDR InfiniBand 主機通道適配器(HCAs),以實現節點間的高速通信。
采用了 8-way 張量并行、12-way 流水線并行以及數據并行技術來訓練模型,并運用分布式優化器來分散優化器狀態,降低訓練時的內存占用。隨著批量大小的增加,數據并行度從 16 擴展至 64。
圖片
上表匯總了批量大小增加的三個階段,并展示了每次迭代的時間和模型 FLOP/s 利用率(Model FLOP/s Utilization,MFU)。MFU 衡量了 GPU 在模型訓練中的效率,100% 代表理論峰值性能。
二次預訓練策略表明,在模型訓練末期調整數據分布和學習率衰減策略能顯著提升模型品質。具體而言,在完成了 8 萬億 token 的預訓練后,以相同的損失目標繼續在額外的 1 萬億 token 上進行訓練。
在這個二次預訓練階段,采用了兩種不同的數據分布策略:
- ? 第一種分布以較大采樣權重側重于高質量數據源,涵蓋了預訓練階段已引入的大部分 token;
- ? 第二種分布則引入了少量問答風格的對齊樣本,以優化模型對類似問題的響應能力,并特別強調了模型準確度較低的數據源。
結合一個優先快速衰減的學習率計劃,發現這種數據分布的排序和風格有助于模型從預訓練數據集平穩過渡,并在訓練的最后階段更有效地學習新數據。
2.4 獎勵模型
2.4.1 獎勵模型構建
在模型對齊過程中,獎勵模型起著至關重要的作用,作為訓練卓越指令遵循模型時偏好排序和質量篩選的關鍵評判標準。
為了構建這一模型,依照與HelpSteer (Wang 等,2023b)相似的方法論,收集了包含1萬條人類偏好數據的新數據集HelpSteer2(https://huggingface.co/datasets/nvidia/HelpSteer2),并已將其公開發布。
多屬性回歸獎勵模型(multi-attribute regression reward models)在區分真正有用的信息與諸如因長度而偏好冗長無用回答等無關特征方面更為有效。此外,回歸模型在細致預測獎勵時表現更佳,能夠捕捉到相似回答間幫助性的微妙差異。該回歸獎勵模型基于Nemotron-4-340B-Base模型,通過替換最終的softmax層為一個新的獎勵“頭部”構建而成。這個“頭部”通過線性投影將最后一層的隱藏狀態映射成一個包含HelpSteer五大屬性(幫助性、正確性、連貫性、復雜性、啰嗦性)的五維向量。在推理時,這些屬性值可以通過加權求和來綜合成一個總體獎勵。
3. 對齊數據
隨著模型性能的持續提升,現有的數據集已難以滿足訓練高度對齊模型的需求。同時,從人類處獲取高質量數據既費時又昂貴。為此,深入研究了合成數據生成(SDG)作為一種應對策略。
在整個對齊過程中,僅使用了約2萬條人類標注數據(其中1萬條用于監督式微調,另1萬條HelpSteer2數據用于獎勵模型訓練與偏好微調),而合成數據生成流程則為監督式微調和偏好微調提供了超過98%的數據。
3.1 提示詞準備
考慮到生成合成提示(Generating Synthetic Prompts)是SDG(Synthetic Data Generation,合成數據生成)的關鍵步驟,并且能夠自主控制數據分布,滿足多樣化的場景,比如任務的多樣性(如寫作、開放式問答、封閉式問答)、主題多樣性(如科學、人文、日常生活)、指令多樣性(如JSON格式輸出、段落生成、是否問題)。作者采用了與UltraChat數據集類似的方法。
- ? 使用Mixtral-8x7B-Instruct-v0.1作為生成器,分別為開放式問答、寫作、封閉式問答、數學和編程任務生成合成提示。
- ? 對于每項任務,都用多樣化的主題或關鍵詞引導生成器,以確保提示覆蓋廣泛的話題范圍。
- ? 還生成了明確指定預期響應格式的指令遵循提示,例如“輸出必須采用JSON格式”。
- ? 還生成了包含用戶與助手互動歷史的兩輪提示,以提升模型的對話技巧。
- ? 將討論生成單輪合成提示、指令遵循提示和兩輪提示的具體流程。
3.1.1 生成單輪提示
圖片
上圖展示了單輪提示詞的生成流程。引導生成器輸出多樣化的宏觀主題,然后為每個宏觀主題生成相關的子主題。總共收集了3000個主題,包括合成宏觀主題、合成子主題以及人工收集的主題。通過引導生成器提出與每個主題相關的開放式問題,例如“機器學習是什么?”然后要求生成器細化問題,使其更加詳盡具體。
對于寫作類提示,如“撰寫一篇關于機器學習的論文”,引導生成器根據給定主題生成特定類型的文檔,如通訊稿或論文,并要求其包含更多細節。
利用C4數據集中的文本生成封閉式問答提示,引導生成器為每篇文檔輸出相應的指令,如“總結給定文本”或“基于給定文本,xxx是什么?”。然后,使用預定義的模板將文檔與生成的指令結合起來。在生成數學和編程提示時,我們從數學和Python編程領域收集了多樣化的關鍵詞,并為這些領域生成了高層次的主題和子主題。
3.1.2 生成兩輪提示
為了增強模型在多輪對話中的技能,構建了兩輪對話提示,用于構建偏好數據集。這些提示包括一個問題、一個助手的回答,以及隨后的一個問題,格式為“用戶:XXX;助手:XXX;用戶:XXX;”。從ShareGPT獲取用戶問題,并利用中級指令模型生成助手的回答和下一個問題。
為了更貼近現實世界的用戶需求,還從LMSYS-Chat-1M(LMSYS)中提取了提示。將所有提示均衡地混合,并分為兩個不同的集合:一個用于監督學習,另一個用于偏好學習,確保兩者之間沒有重疊。
在監督學習部分,移除了可能引發不期望對話的不安全提示。然而,在偏好學習部分,保留了這些提示,使模型能夠學習區分安全與不安全的回答。
圖片
上圖中,對比了合成單輪提示與LMSYS提示。使用Mixtral-8x7B-Instruct-v0.1模型生成回應,并利用Nemotron-4-340B-Reward對回應的幫助性進行評分。合成提示的平均幫助性得分高于LMSYS提示,這表明LMSYS提示在難度和復雜性上通常高于合成單輪提示。
3.2 合成對話生成
通過監督微調,教會了模型如何以對話形式與用戶互動。為了增強多輪對話的能力,設計了包含三輪對話的格式,以此創造出更加生動和互動的交流流程。
模型在模擬助手和用戶角色之間輪換,通過迭代角色扮演來實現。對用戶環節進行了后處理,以模仿現實世界用戶的提問方式,排除了諸如“感謝您……”或“當然,我很樂意……”等禮貌用語。在合成演示數據時,采用了貪婪采樣策略。此外,利用Nemotron4-340B-Reward來評估對話的質量,為每個樣本打分,并篩選出低于預設閾值的樣本,確保只保留高質量的數據。
3.3 合成偏好數據生成
使用10K人工標注的HelpSteer2偏好數據來訓練Nemotron-4-340B-Reward模型,同時也尋求更廣泛、更高質量和真實的偏好數據。因此,采用了以(提示,選定回應,拒絕回應)的三元組形式生成合成偏好數據。
回應生成環節,偏好數據涵蓋了合成單輪提示、指令遵循提示、兩輪提示以及真實世界中的ShareGPT提示、LMSYS提示,還有來自GSM8K和MATH訓練數據集的提示。
對于每個提示,利用多個隨機中級模型生成回應,確保偏好數據集中的回應多樣性,供模型學習。我們還構建了更具挑戰性的合成偏好示例,這些示例中的回應是我們根據MT-Bench標準,從表現最佳的模型中隨機生成的多個回應,以進一步推動模型的自我提升。
真實性作為評判標準。面對每個提示的多個回應,需要評估它們的偏好排名,并選擇出選定和拒絕的回應。對于一些可以通過真實性標簽(如GSM8K和MATH訓練數據集中的答案)或驗證器(如指令遵循回應可以通過Python程序驗證)來評估的任務,使用這些標準來判斷每個回應的正確性,選擇正確的回應作為選定的,錯誤的回應作為拒絕的。
以事實來判定(Ground-Truth-as-a-Judge):面對每個提示下的多種回應,需要評估它們的優劣并做出選擇。有些任務可以通過標準答案(如GSM8K和MATH訓練集中的問題)或驗證工具(比如通過Python程序檢驗指令遵循的回應)來評定,對于這些任務就直接采用這些標準來判定回應的正確與否。正確的回應被選中,錯誤的則被排除。
在缺乏客觀答案的情況下,嘗試了兩種評判方式:大型語言模型作為評判者和獎勵模型作為評判者(LLM-as-Judge and Reward-Model-as-Judge)。在大型語言模型作為評判者的情況下,將提示和兩個回應提交給它,并請求它進行比較。為避免順序偏見,會以不同的順序兩次詢問大型語言模型。當它兩次給出一致的評判時,我們便確定了一個有效的(提示,選中,排除)三元組。
評判的提示可在報告原文的補充材料D中找到。盡管大型語言模型作為評判者在早期偏好數據集的構建中發揮了作用,但進一步探索了獎勵模型作為評判者,它通過Nemotron-4-340B-Reward預測每對(提示,回應)的得分,并據此確定偏好排名。
獎勵基準分數表明:獎勵模型作為評判者在準確性上超越了大型語言模型作為評判者。特別是在難以區分的Chat-Hard類別中,獎勵模型作為評判者的表現顯著優于大型語言模型作為評判者,平均準確度為0.87比0.54。因此,在后續的數據集迭代中,采用獎勵模型作為評判者。
3.4 對齊的迭代:由弱到強
優質的數據是確保模型精準對齊的關鍵。在數據生成過程中,一個經過精確對齊的大型語言模型(LLM)必須能夠在整個生成流程中嚴格遵循指令。這引出了幾個關鍵問題:
- ? 哪個模型最適合作為數據生成器;
- ? 生成器的性能如何與數據質量掛鉤;
- ? 如何提升數據生成器的效能。
圖片
受到從弱到強的泛化理論的啟發,開發了一種創新的迭代方法,旨在逐步提升數據至最優狀態。這種方法巧妙地結合了對齊訓練與數據合成的優勢,使它們能夠相互促進,實現持續的改進。
對齊過程與基礎模型的預訓練是同步進行的。在開始的迭代中,選用了Mixtral-8x7B-Instruct-v0.1作為起始的對齊模型,因為它已被證明是一個擁有寬松許可證的強大模型。利用生成的數據,訓練了Nemotron-4-340B-Base的一個中間版本,即340B-Interm-1-Base。340B-Interm-1-Base的表現超越了Mixtral 8x7B基礎模型,進而使得340B-Interm-1-Instruct模型也超越了Mixtral-8x7B-Instruct-v0.1模型。這表明,即使在監督較弱的情況下,也能激發出強大的能力。
在第二次迭代中,采用了上一輪迭代中得到的340B-Interm-1-Instruct模型作為新的數據生成器。得益于其相比Mixtral-8x7B-Instruct-v0.1的增強能力,第二輪迭代生成的合成數據質量更高。這些數據隨后被用來訓練340B-Interm-2-Base,使其進化為340B-Interm-2-Chat。這一迭代過程形成了一個自我加強的循環效應,其改進主要得益于兩個方面:
- ? 首先,使用相同的數據集時,基礎模型的強度直接影響指導模型的性能,基礎模型越強,指導模型也越強;
- ? 其次,使用相同的基礎模型時,數據集的質量對于指導模型的有效性至關重要,數據質量越高,指導模型的性能也越強。
在整個對齊過程中,進行了多輪的數據生成和細化,不斷優化模型質量。
4. 對齊算法
遵循Ouyang等人(2022年)提出的標準模型校準協議,該協議分為兩個階段:監督微調和偏好微調。
4.1 分段的監督式微調
監督式微調(Supervised Fine-tuning,SFT)標志著模型校準的起始步驟。傳統做法是在一個階段內完成SFT,使用包含所有任務樣本的數據集。然而,實驗結果表明,同時學習多種行為有時會引起它們之間的沖突,這會阻礙模型在所有任務上同時實現最佳校準。特別是在編碼任務中,發現即便調整數據采樣權重,也無法讓模型對所有編碼任務都達到校準。
為應對這一挑戰,提出了一個分兩階段的SFT策略,允許模型按順序、有計劃地學習不同的行為。實踐證明,這種方法在所有下游任務中都能取得更佳的表現。
代碼SFT(Code SFT):為提升編碼和推理能力,同時避免對其他任務造成干擾,首先在編碼數據上執行純粹的SFT。要顯著提升模型的編碼能力,需要大量的數據。為此,開發了“遺傳指令”方法,模仿自然選擇過程,利用自我指導和巫師編碼者變異(wizard coder mutations)技術,從少量高質量樣本中生成大量合成樣本。還引入了一個適應度函數,通過LLM評估生成指令及其解決方案的正確性和質量。通過評估的樣本將加入種群池,進化過程將持續進行,直至達到預定的種群規模。該流程設計為支持多群體并行執行,以實現按需擴展。經過徹底的去重和篩選,保留了約80萬樣本的精選數據集,用于代碼SFT訓練。以固定學習率3e-7和全局批量大小128對模型進行單周期訓練。
進入第二階段,采用通用監督式微調(General SFT),這一階段使用了包含200K樣本的混合數據集,覆蓋了多樣任務類型。為降低遺忘舊知識的風險,此數據集中特別融入了前一階段編碼SFT中2%的代碼生成樣本。模型訓練周期設定為三輪,全局批量大小設為128,同時在[1e-7, 5e-7]區間內進行學習率的精細搜索。在這兩個微調階段,對用戶的回答進行了屏蔽,僅在助手的回答上計算損失,以確保模型專注于提升輔助性能。
4.2 偏好微調
繼監督微調之后,通過偏好微調進一步優化模型,讓模型學習以(提示,選中的回應,排除的回應)三元組形式呈現的偏好樣例。
這一階段的微調經過多輪迭代,不僅采用了直接偏好優化算法,還融入了我們新研發的獎勵感知偏好優化算法。
直接偏好優化(DPO)算法通過優化策略網絡,旨在拉大選中與排除回應間的隱性獎勵差異。在策略網絡學習區分兩類回應的過程中,發現無論選中的回應質量如何,隨著兩者差距的擴大,它們的可能性都在持續降低。實際上,策略網絡在長時間訓練后往往會出現過擬合現象,一個評測指標(如MT-Bench)的提升往往以犧牲其他指標(如零樣本MMLU)為代價。
為緩解這些問題,在DPO損失的基礎上增加了加權的SFT損失,專門針對選中的回應。新增的SFT損失有助于保持策略網絡與偏好數據的一致性,特別是當偏好數據并非源自參考策略時。為防止模型采納低質量的選中回應,會用Nemotron-4-340B-Reward挑選出高質量回應的樣例,即使在缺乏真實標注的情況下。
構建了一個包含160K個樣例的偏好數據集,覆蓋了多樣的任務類型。模型訓練周期設為一輪,全局批量大小為256,保持恒定的學習率。對學習率進行了[3e-8, 3e-7]范圍的調整,DPO損失中的KL正則化系數在[3e-4, 3e-3]之間,SFT損失的權重則在[1e-5, 1e-3]之間進行微調。
獎勵驅動的偏好優化(RPO):Nemotron的大部分的偏好數據屬于合成類型,其偏好排序是基于Nemotron-4-340BReward所賦予的獎勵來判定的。與僅考慮兩個回應間二元順序的DPO不同,獎勵間的差異實際上蘊含了更豐富的信息。
實際上,某些被排除的回應與選中的回應相比,質量差距微乎其微;而有些則明顯遜色。DPO由于沒有考慮到這種質量差異,一昧地拉大選中與排除回應間的隱含獎勵差距,這可能導致過擬合,并可能無端地“丟棄”那些高質量的排除回應。
為解決這一問題,引入了一種新算法——獎勵驅動的偏好優化(RPO),該算法旨在利用策略網絡所定義的隱含獎勵來更準確地估計獎勵差距。
相較于DPO,RPO通過學習估計獎勵差異,有效避免了過擬合現象。以DPO訓練得到的模型檢查點作為初始狀態和參照策略,繼續采用RPO對模型進行訓練。采用了一個包含30萬個樣本的偏好數據集,并對選中的回應實施了較為寬松的質量篩選標準。
盡管僅一輪RPO訓練就能全面提升模型在各項任務上的表現,但還是執行了三輪RPO迭代,每輪迭代都以前一輪的檢查點作為起點和參照。我們發現,隨著RPO迭代次數的增加,模型性能持續獲得提升。經過三輪RPO訓練后得到的檢查點,即為最終版的Nemotron-4-340B-Instruct模型。
? 論文原文: ??https://d1qx31qr3h6wln.cloudfront.net/publications/Nemotron_4_340B_8T_0.pdf???
本文轉載自 ??大語言模型論文跟蹤??,作者:HuggingAGI
