開講預告12月18日14:00,紫光曉通AI高級技術支持工程師尚志遠、群聯電子首席技術官林緯博士,將以《NVIDIA RTX 5880 Ada 性能解析》、《借助NVIDIA RTX 5880 Ada 部署私有化大模型》為主題進行直播講解,歡迎掃名~導讀作者為維亞,復旦大學計算機技術碩士原文來自知乎,地址:https://zhuanlan.zhihu.com/p/987052830本文只做學術/技術分享,如有侵權,聯系刪文。01前言今年工業界陸續開源了多款優秀的大語言模型,并放出了技術報告,本文整理工業界主流開源LLM的后訓練方案,著重介紹訓練算法和數據處理部分。以下是模型列表:Llama3(Meta,2407 paper,github)Qwen2(阿里云,2407 paper,github)Nemotron(Nvidia,2406 paper,github)AFM(Apple,2407 paper)Yi(01ai,2403 paper,github,2412 paper)GLM-4(智譜,2406 paper,github)Gemma2(Google,2408 paper,2403 Gemma1,2312 Gemini)DeepSeek-V2(DeepSeek,2405 paper,github)Baichuan2 Alignment(百川,2410 paper)總結以上技術報告,可以發現一些基本趨勢:數據合成已成為工業界主流LLM后訓練的基本方案,未來大概率也會持續發展,快速開發出領先的數據合成pipeline,有助于企業保持領先地位。善用LLM-as-judge和拒絕采樣技術。在偏好數據的構造上,Llama3、Qwen2、Baichuan2、AFM均采用拒絕采樣(Rejection sampling)技術。用不同規模、不同參數的模型多次采樣,再使用LLM和人工評估構造偏好樣本對。Instag (Lu et al., 2023) 方法,最初出現在Qwen技術報告中,今年又出現在了Llama3、Qwen2、Yi三個模型的技術報告中,值得深入研究。重點能力需要單獨優化,如代碼、多語言、數學、推理、長上下文、工具使用、指令遵循。模型合并。使用不同版本的數據或超參數訓練多個模型,最后平均模型參數,可以實現更均衡的性能。Llama3、Gemma2和Baichuan2均采用了模型合并技術。強化學習。Llama3和Qwen2都只用了改良版的DPO,而沒有使用PPO在線學習,說明PPO雖然上限高,但有一定門檻。各模型強化學習技術總結如下表。02Llama31 算法后訓練迭代了數輪。每一輪都包括 SFT 和 DPO,使用人類注釋數據或合成數據。后訓練目標包括獎勵模型和語言模型。首先基于預訓練 checkpoint,使用人類標注的偏好數據訓練一個 RM,SFT 后使用 RM 進行拒絕采樣,并對預訓練 checkpoint 進行微調,再執行 DPO 與人類偏好對齊。此過程如圖7,適用于Llama 3 系列所有模型。對話格式。與Llama2相比,Llama3具有新的能力,如 tool use。為支持這一點,llama3設計了一種新的多消息協議,使用各種特殊的 header tokens 和 termination tokens。header tokens 用于指示對話中每個消息的來源和目的地,termination tokens指示何時輪到人類和AI交替發言。獎勵建模 RM。由于數據擴展后改進逐漸減少,Llama3的loss移除了邊際項。過濾掉相似響應樣本之后,使用所有偏好數據進行獎勵建模。除了標準的偏好對(chosen,rejected)外,Llama 3還為某些提示創建了第三個“edited response”,基于chosen response進一步改進得到,偏好順序:edited > chosen > rejected。訓練期間將提示和多個響應合并成單行,并隨亂響應,以近似響應分別放在不同行中計算分數的標準場景。監督微調 SFT。使用獎勵模型在人類標注提示上執行拒絕采樣,詳細信息見2.2節。與此拒絕采樣數據和其他數據源(包括合成數據)一起,執行sft。最大的模型 lr=1e-5, ??????????∈[8.5??,9??] 。這些超參設置在不同的輪次和數據混合中都表現良好。直接偏好優化 DPO。每一輪DPO都使用前一輪對齊中表現最好的模型,并收集最新一批偏好數據。對于Llama 3,lr=1e-5,β=0.1。此外,DPO還應用了以下算法修改:DPO loss 屏蔽格式化tokens:從chosen 和 rejected responses 屏蔽特殊的格式化tokens,包括header tokens 和 termination tokens。這些token加入損失可能導致奇怪的模型行為,如尾部重復或突然生成終止符。這可能是由于DPO loss 的對比性質 – 兩個響應存在共同token導致學習目標沖突,因為模型需要同時增加和減少這些token的可能性。NLL loss 正則化:在選擇的序列上增加了一個額外的負對數似然(NLL)損失項,縮放系數為0.2,類似于Pang等人(2024)。這有助于保持生成期望格式,并防止chosen response的對數概率下降,穩定DPO訓練(Pang等人,2024;Pal等人,2024)。模型平均。在每個RM、SFT或DPO階段使用不同版本的數據或超參數進行實驗,平均獲得的模型(Izmailov等人,2019;Wortsman等人,2022;Li等人,2022)。迭代輪次。llama 3應用以上方法迭代六輪。每一輪都收集新的偏好注釋和SFT數據,從最新模型中采樣合成數據。2 數據后訓練數據包括人類注釋數據、偏好數據,SFT數據組成,以及數據質量控制、清洗方法。2.1 偏好數據每訓練一輪后部署多個模型進行注釋,并為每個user prompt采樣兩個不同模型的response。這些模型可以使用不同的數據混合和對齊方法訓練,從而允許不同的能力強度(例如,代碼專業知識)和增加的數據多樣性。llama 3要求注釋者根據響應的喜好程度,將其分為四個等級:明顯更好,更好,稍微更好或略好。還在偏好排名后增加了一個edit步驟,鼓勵注釋者進一步改進首選響應。因此,最終的偏好數據可能有三個排名響應:edited > chosen > rejected。丟棄相似響應樣本后,每一輪后訓練llama 3使用所有的偏好數據進行獎勵建模,同時僅使用來自各種能力的最新批次數據進行DPO訓練。2.2 SFT 數據微調數據主要由以下來源組成:人類注釋收集的提示,拒絕采樣的響應針對特定能力的合成數據(第2.4節)少量人類策劃的數據(第2.4節)拒絕采樣 Rejection sampling。對于人類注釋的每個提示,從最新的模型(通常是后訓練迭代中表現最佳的checkpoint,或特定能力表現良好的checkpoint)采樣K(通常是10-30)個輸出,并使用獎勵模型選擇最佳候選。訓練后期引入系統提示以引導RS響應符合期望的語氣、風格或格式,這些可能因不同能力而異。整體數據組成。表7是“有用性”混合數據中每個廣泛類別的統計信息。雖然SFT和偏好數據包含重疊領域,但它們是分別策劃的。2.4節描述了用于對數據樣本進行主題、復雜性和質量分類的技術。每一輪后訓練仔細調整這些軸上的數據混合,以在廣泛的基準測試中調整性能。最終的混合數據在一些高質量資源上多次采樣,并降低其他資源采樣。2.3 數據處理和質量控制由于大部分訓練數據是模型生成的,因此需要仔細清洗和質量控制。數據清洗。實施一系列基于規則的數據刪除和修改策略。例如,緩解過度道歉問題,識別過度使用的短語(如“I’m sorry”或“I apologize”),識別過度使用的表情符號或感嘆號,并仔細平衡數據集中這類樣本的比例。數據修剪。應用一系列基于模型的技術,刪除低質量訓練樣本:主題分類:將 Llama 3 8B 微調為一個主題分類器,在所有數據上進行推理,將其分類為粗粒度(如“數學推理”)和細粒度(如“幾何和三角學”)的桶。質量評分:使用獎勵模型和基于 Llama 的信號為每個樣本獲得質量分數。對于基于 RM 的分數,llama 3認為處于 RM 分數Top 1/4的數據是高質量的。對于基于 Llama 的分數,使用Llama 3 checkpoint對每個樣本在三點量表上進行一般數據評分(accuracy, instruction following 和 tone/presentation)。對編碼數據進行兩點量表評分(bug identification 和 user intention),并將最高分數的樣本視為高質量。RM 和基于 Llama 的分數有很高的不一致率,llama 3結合這些信號在內部測試集上獲得了最佳的召回率。最終,選擇被 RM 或 Llama 標記的高質量示例。難度評分:使用兩種難度度量:Instag標簽和Deita評分。對于Instag(Lu et al., 2023),提示 Llama 3 70B 對 SFT 提示進行意圖標記,更多的意圖意味著更高的復雜性。對于Deita(Liu等人,2024c),提示 Llama 3 在三點量表上測量對話的難度。語義去重:參考(Abbas等人,2023;Liu等人,2024c)。首先使用 RoBERTa(Liu等人,2019b)對完整對話聚類,然后在每個聚類內按質量分數 × 難度分數排序。然后迭代所有排序示例,只保留與樣本集的最大余弦相似度小于閾值的示例,貪婪選擇。2.4 能力重點提升能力,包括:代碼、多語言、數學和推理、長上下文、工具使用、事實性和可引導性。2.4.1 代碼改進代碼能力的方法包括:訓練代碼專家、合成sft數據、帶系統提示引導的拒絕采樣、代碼執行和 model-as-judge 過濾。1)訓練代碼專家。對預訓練模型進行持續預訓練獲得,其中持續預訓練語料大部分(>85%)是代碼數據,合計 1T tokens。遵循類似CodeLlama的配方(Roziere et al.,2023)。最后幾千步訓練,在高質量的 repository-level 混合代碼數據執行長上下文微調(LCFT),將專家的上下文長度擴展到16K tokens。最后,除了針對代碼領域的SFT和DPO混合數據外,也遵循Llama 3訓練流程對齊模型。該模型也用于代碼 prompt 的拒絕采樣。2)合成sft數據。使用Llama 3和代碼專家合成大量的SFT對話。包括三種代碼數據合成方法,生成超過270萬的例子。合成數據生成:執行反饋。當使用參數量更大、性能更強的模型生成數據再進行訓練時,8B 和 70B 模型顯示出顯著的性能改進。而使用 Llama 3 405B 自己生成的數據進行訓練,卻并沒有什么幫助(甚至會降低性能)。為了解決這一限制,llama 3引入了執行反饋,提升代碼數據質量,使用以下過程生成約100萬代碼對話:問題描述生成:從各種來源抽取隨機代碼片段,并提示模型基于這些示例生成新編程問題。編程問題描述涵蓋各種主題,包括長尾分布主題。解決方案生成:提示 Llama 3 用給定的編程語言解決每個問題。在提示中添加一般性編程規則提高生成質量。在代碼評論中解釋其思維過程也能提升效果。正確性分析:從生成的解決方案中提取源代碼,并應用靜態和動態分析技術測試其正確性,包括:靜態分析:通過解析器和 linter 運行所有生成代碼,以確保語確性,捕獲語法錯誤、使用未初始化變量、非導入函數、代碼風格問題、鍵入錯誤等錯誤。單元測試生成和執行:對于每個問題和解決方案,提示模型生成單元測試,與解決方案一起在容器化環境中執行,捕獲執行錯誤和語義錯誤。錯誤反饋和迭代自我修正:當解決方案在任何一步失敗時,提示模型進行修改。提示包括原始問題描述、錯誤解決方案、解析器/linter/測試器反饋(stdout、stderr/ 和返回代碼)。單元測試失敗后,模型修復代碼以通過現有測試,也可以修改單元測試以適應現有代碼。只有完全正確的問答對才會包含在最終sft數據集中。llama 3發現約 20% 的解決方案最初是錯誤的,但可以自我糾正,表明模型從執行反饋中學習并提高了性能。微調和迭代改進:微調過程分多輪進行,每一輪都建立在前一輪基礎上,為下一輪生成更高質量的合成數據。合成數據生成:編程語言翻譯。將常見編程語言(例如,Python/C++),翻譯為不太常見的語言(例如,Typescript/PHP)來補充現有數據,提升編程語言性能。并提示 Llama 3 通過語法解析、編譯和執行,以確保質量。合成數據生成:反向翻譯。對于某些編碼能力(例如,說明、解釋),使用執行反饋不足以改進其能力,llama 3采用了另一種多步驟方法,生成了約 120 萬個與代碼解釋、生成、說明和調試相關的對話。從預訓練數據各種代碼片段開始:生成:提示 Llama 3 生成代表目標能力的數據,例如,為代碼片段添加注釋說明,或者解釋一段代碼。反向翻譯:提示模型將合成數據“反向翻譯”為原始代碼,例如,提示模型僅從代碼說明生成代碼,或者僅從代碼解釋生成代碼。過濾:使用原始代碼作為參考,提示 Llama 3 確定輸出質量,例如,詢問模型反向翻譯代碼對原始代碼的忠實程度,再使用 SFT 中具有最高自我驗證分數的生成示例。3)帶系統提示引導的拒絕采樣。拒絕抽樣過程使用特定的代碼系統提示,提高代碼的可讀性、說明、徹底性和特異性。4)使用執行和 model-as-judge 信號過濾數據。早期版本的 Llama 3 評估根據兩個標準分配二進制 (0/1) 分數:代碼正確性和代碼風格。只保留那些獲得滿分 2 分的樣本。最初,這種嚴格的過濾導致了下游基準性能的回歸,主要是因為它不成比例地刪除了具有挑戰性提示的示例。為了解決這個問題,llama 3策略性地修改了一些被歸類為最具挑戰性的代碼數據響應,直到它們滿足基于 Llama 的“model-as-judge”標準。通過改進這些具有挑戰性的問題,代碼數據實現了質量和難度的平衡,獲得了最佳的下游性能。2.4.2 多語言方法包括訓練多語言專家,采購和生成德語/法語/意大利語等多語言的的高質量指令數據。訓練多語言專家。使用預訓練模型在多語言混合數據集(包含90%的多語言tokens)做持續預訓練,然后,按照 使用前面的后訓練流程。最后,使用該專家模型收集高質量的多語言注釋數據直到預訓練結束。多語言數據收集。多語言 SFT 數據主要來自以下來源。總體分布是 2.4% 的人工注釋、44.2% 其他 NLP 任務數據、18.8% 的拒絕采樣數據和 34.6% 翻譯的推理數據。人工注釋:從語言學家和母語人士那里收集高質量的人工注釋數據。主要由現實世界的開放式提示組成。其他 NLP 任務數據:使用其他任務的多語言訓練數據并重寫為對話格式。例如, exams-qa和 Conic10k。為了改進語言對齊,使用 GlobalVoices和 Wikimedia的并行文本。使用基于 LID 的過濾和 Blaser2.0 (Seamless Communication et al., 2023) 來刪除低質量數據。對于并行文本數據,沒有直接使用雙文本對,而是應用受 Wei et al. (2022a) 啟發的多語言模板,以更好地模擬翻譯和語言學習場景中的現實對話。拒絕采樣數據:對人工注釋的提示應用拒絕采樣,以生成高質量微調樣本,流程和收集英語類數據類似:生成:前期從 [0.2,1] 區間隨機選擇溫度T。高T時多語言響應會富有創意,但也容易出現語碼轉換問題。在最后一輪后訓練時,設置T=0.6 。此外,使用專門的系統提示來改進響應格式、結構和可讀性。選擇:在基于獎勵模型的選擇之前,實施特定的多語言檢查,以確保提示和響應之間的語言匹配率(例如,羅馬化印地語提示不應以印地文梵文響應)。翻譯數據:盡量避免使用機器翻譯數據,以防止可能的翻譯名稱偏差、性別偏差或文化偏見。有一個例外,llama 3使用了翻譯的推理數據(詳見2.4.3 數學與推理),以提高非英語語言中定量推理性能。由于這些數學問題僅使用簡單的語言,翻譯后幾乎沒有質量問題。2.4.3 數學與推理提升數學推理能力,面臨著一些挑戰:缺乏提示:SFT有效提示或問題數量不足,很難創建多樣化且具有代表性的數學訓練集。缺乏真實的思維鏈:缺乏真實的思維鏈數據,以指導模型如何逐步分解問題并得出最終答案。不正確的中間步驟:當使用模型生成的思維鏈時,中間步驟可能會出錯,影響訓練效果。使用外部工具:增強模型利用外部工具(如代碼解釋器),或通過交錯代碼和文本進行推理。這種能力可以顯著提高他們解決問題的能力。訓練和推理之間的差異:微調后的模型可能會與人類或其他模型交互,要求它使用反饋來改進推理結果。確保訓練數據和實際使用場景的一致性,對于維持推理性能至關重要。為了應對這些挑戰,采用以下方法:解決缺乏提示問題:從預訓練數據中尋找數學相關數據,并將其轉換為問答格式用于sft。創建數學技能分類,尋找模型表現不佳的數學技能,人工編寫相關提示/問題。通過逐步推理軌跡增強訓練數據:使用 Llama 3 為一組提示生成逐步解決方案,再使用 Llama 3 驗證特定的逐步解決方案對于給定問題是否有效,根據正確答案過濾這些結果。過濾不正確的推理痕跡:訓練結果RM和分步RM(Lightman et al., 2023; Wang et al., 2023a)過濾中間推理步驟不正確的訓練數據。對于更具挑戰性的提示,使用蒙特卡羅樹搜索(MCTS)和學習的分步RM生成有效的推理軌跡。交錯代碼和文本推理:提示 Llama 3 通過文本推理和 Python 代碼組合解決推理問題。以代碼執行作為反饋信號,消除推理鏈無效情況,保證推理過程正確性。從反饋和錯誤中學習:為了模擬人類反饋,利用不正確的生成結果并提示 Llama 3 產生正確的生成結果,來執行錯誤糾正,這有助于提高模型推理和從錯誤中學習的能力。2.4.4 長上下文預訓練最后階段,Llama 3 的上下文長度從 8K 擴展到 128K tokens。與預訓練類似,微調過程也必須仔細調整配方以平衡短上下文和長上下文能力。合成數據。使用 Llama 3 的早期版本合成長上下文數據,包括:多回合問答、長文檔摘要以及代碼存儲庫推理。QA對生成:從預訓練數據中精心策劃一組長文檔,分成 8K token的塊,使用早期版本的 Llama 3 模型根據隨機選擇的塊生成 QA 對,訓練期間使用整個文檔作為上下文。總結:首先使用最強的Llama 3 8K模型對輸入長度為8K的塊進行總結,然后再對所有的總結進行匯總,從而對長上下文文檔進行分層匯總。訓練期間,給模型提供完整的文檔并提示模型總結文檔,同時保留所有重要細節。另外,還根據文檔摘要生成 QA 對,并提示模型提出需要理解整個長文檔的全局問題。長上下文代碼推理:解析 Python 文件識別導入語句,并確定它們的依賴關系。選擇最常依賴的文件,特別是至少五個其他文件引用的文件,從存儲庫中刪除這些關鍵文件之一,并提示模型識別丟失的依賴文件,生成必要的丟失代碼。根據序列長度(16K、32K、64K 和 128K)進一步對這些合成樣本進行分類,以實現更細粒度的輸入長度定位。最終,消融實驗發現混合 0.1% 的長上下文合成數據與原始短上下文數據,性能最佳。DPO。實驗發現只要 SFT 模型在長上下文任務中具有高質量的推理效果,那么 DPO 訓練僅使用短上下文也不會影響長上下文性能。鑒于這一發現,長上下文 SFT 之后,保留了 DPO 的短上下文數據混合。2.4.5 工具使用Llama 3 訓練了三種工具調用:搜索引擎、Python解釋器、數學計算引擎。除此之外,還訓練了zero-shot工具使用(上下文中給定可能未見過的工具定義和用戶查詢,訓練模型使用正確的工具調用)。執行。使用不同的方法將核心工具實現為 Python 對象。零樣本工具可以實現為帶有描述、文檔示例的 Python 函數,并且模型只需要函數的簽名和文檔字符串作為上下文來生成適當的調用。還將函數定義和調用轉換為 JSON 格式,所有工具調用均由 Python 解釋器執行,必須在 Llama 3 系統提示符中啟用該解釋器。核心工具可以在系統提示符中單獨啟用或禁用。數據收集。llama 3主要依靠人類注釋和偏好,合成工具調用數據,這一點與toolformer不同。與標準后訓練流程相比,有兩個主要區別:對于工具,對話通常包含多條助手消息(例如,調用工具,根據工具輸出推理結果)。llama 3在消息級別進行注釋以收集細粒度反饋:注釋者在具有相同上下文的兩條助手消息之間進行偏好選擇,或者如果兩者都有問題,則編輯改進其中一條消息。然后,所選或編輯的消息將添加到上下文中,對話繼續。這為助手調用工具和推理工具輸出提供了人類反饋。注釋者無法排名或編輯工具輸出。不執行拒絕抽樣,因為未在工具基準測試中觀察到增益。人工注釋數據。人工注釋過程從單輪工具注釋開始,然后轉向對話中的工具使用,最后注釋多步工具使用和數據分析。流程如下:單步工具使用:從合成用戶提示的少樣本生成開始(這些生成需要調用核心工具)。依靠幾次生成,為這些提示生成適當的工具調用,執行它們,并將輸出添加到模型上下文。最后,再次提示模型根據工具輸出生成最終答案。可以得到以下形式的軌跡:系統提示、用戶提示、工具調用、工具輸出、最終答案。為提高數據質量,過濾了約30%無法執行的工具調用或其他格式問題。多步工具使用:首先提示 Llama 3 生成需要至少兩次工具調用的用戶提示,這些工具可以與核心工具集不同。然后,使用這些提示多次,讓 Llama 3 生成由交錯推理步驟和工具調用組成的解決方案,類似于 ReAct。文件上傳與分析:對常用文件類型進行注釋(如.txt、.docx、.pdf、.pptx、.xlsx、.csv、.py、.json等)。提示模型基于提供的文件,總結文件內容,查找并修復錯誤,優化代碼,執行數據分析或可視化。使用合成數據微調后,在各種具有挑戰性的場景中收集人類注釋(包括多輪交互、超過三步的工具使用以及工具調用不準的情況)。llama 3使用不同的系統提示增強合成數據,以教導模型僅在工具功能激活時才使用工具。為了訓練模型簡單查詢直接推理(不需要額外調用工具)的能力,llama 3還添加了來自簡單數學或問答數據集的查詢,及其在沒有工具情況下的響應,只在系統提示激活工具時才調用工具。零樣本工具調用。通過使用大量多樣化的工具調用合成數據(函數定義、用戶查詢、相應調用等),提高了 Llama 3 零樣本工具的使用能力。單個、嵌套和并行函數調用:llama 3借助于 the Stack(Kocetkov et al., 2022) ,將合成用戶查詢應用于實際函數。更準確地說,提取函數調用及其定義,清理和過濾異常代碼(例如缺少文檔字符串或不可執行的函數)。然后,使用 Llama 3 生成與函數調用相對應的自然語言查詢。多輪函數調用:通過函數調用為多輪對話生成合成數據。使用多個代理來生成域、API、用戶查詢、API 調用和響應,同時確保生成的數據涵蓋一組不同的域和實際的 API。所有代理都是 Llama 3 的變體,根據其角色以不同的方式提示,并以 step-by-step 方式進行協作。2.4.6 事實性llama 3遵循的原則是,后訓練應該使模型 “know what it knows”,而不是添加知識 (Gekhman et al., 2024; Mielke et al., 2020)。主要方法涉及生成數據,使模型生成與預訓練中存在的數據保持一致。基于llama 3的知識探測,數據生成過程如下:從預訓練數據中提取數據片段。通過提示 Llama 3生成有關這些片段(上下文)的事實問題。使用Llama 3 回答問題。以原始上下文為參考,以 Llama 3 為評審,對各生成的正確性進行評分。使用 Llama 3 作為評估者對各生成的信息量進行評分。使用 Llama 3 對各生成結果的信息一致但不正確的響應生成拒絕。使用知識探測生成的數據鼓勵模型只回答它所了解的問題,并拒絕回答不確定問題。此外,預訓練數據并不總是與事實一致或正確。因此,llama 3還收集了一組有限的帶標簽事實數據,這些數據涉及敏感主題,并且可能存在事實矛盾或不正確陳述。2.4.7 操縱性(指令遵循)可操縱性,即指導模型滿足用戶規范的能力。Llama 3專注于通過帶有自然語言指令的系統提示來增強其可操縱性,特別是在響應長度、格式、語氣和角色/性格方面。數據收集。通過要求注釋者為 Llama 3 設計不同的系統提示,收集一般英語類別中的可操縱性偏好樣本。然后注釋者與模型進行對話,以評估它們在對話過程中遵循系統提示中定義的指令一致性。下面展示了一個用于增強可操縱性的自定義系統提示示例:你是一個樂于助人、快樂的人工智能機器人,為忙碌的家庭提供膳食計劃助手。這個家庭由2個成年人,3個青少年和2個學齡前兒童組成。一次計劃兩到三天,第二天的計劃中使用剩菜或額外的食材。用戶會告訴你他們是否需要兩到三天的時間。如果沒有,假設是三天。每個計劃應該包括早餐、午餐、零食和晚餐。詢問用戶是否同意該計劃或是否需要調整。在他們同意之后,提供一份考慮到家庭規模的購物清單。始終牢記家人的喜好,如果有他們不喜歡的東西,提供替代品。如果用戶沒有受到啟發,那就問他們這周度假時最想去的地方是哪里,然后根據該地點的文化建議他們吃什么。周末的飯菜可能更復雜。工作日的飲食應該是快速和容易的。早餐和午餐最好是簡單的食物,比如麥片、英式松餅和預煮好的培根,以及其他快速簡單的食物。全家人都很忙。一定要問他們手頭是否有必需品和最喜歡的咖啡或能量飲料,這樣他們就不會忘記買。記住要精打細算,除非是特別的場合。建模。收集偏好數據后,在獎勵建模、拒絕采樣、SFT 和 DPO 中利用這些數據來增強 Llama 3 的可操縱性。03Qwen2Qwen2后訓練階段提升的能力范圍,包括編碼、數學、邏輯推理、指令遵循和多語言理解。此外,它確保模型的生成與人類價值觀和諧一致,使其有益、誠實且無害。與嚴重依賴廣泛的人類監督的傳統方法不同,Qwen2側重于以最少的人類注釋進行可擴展的對齊(Cao et al.,2024)。從人類反饋中獲取SFT和RLHF數據,最大限度地減少人工標記需求,同時最大限度地提高數據質量和可靠性。后訓練數據。訓練數據構建需要兩個步驟:協作數據注釋和自動數據合成。首先,從大規模指令語料庫中提取數據本體,從而產生廣泛且多樣化的高質量指令。再對這些指令進行系統增強以包含更大的復雜性。通過人工注釋,獲得目標響應 ???? 以及對應的正、負 label (????+,?????) 。隨后,采用各種自動對齊策略合成大量代碼、數學、指令遵循、創造性任務、角色扮演和安全領域的人工注釋數據。協作數據標注,包含以下四步:自動本體提取。參考《InsTag: Instruction Tagging for Analyzing Supervised Fine-tuning of Large Language Models》,這是一種開放集細粒度標記器,用于從大規模指令數據集中提取底層本體。隨后再人工精煉以保證提取準確性。指令選擇。參考《How Abilities in Large Language Models are Affected by Supervised Finetuning Data Composition》,對每條標簽注釋后的指令,評估標簽多樣性、語義豐富性、復雜性和意圖完整性。根據這些標準選擇一組代表性指令 。指令進化。參考《Tree-Instruct: A Preliminary Study of the Intrinsic Relationship between Complexity and Alignment》,使用Qwen模型向現有指令添加約束或要求,從而增加其復雜性并確保數據集中的不同難度級別。人工注釋。使用不同的生成策略和不同規模的 Qwen 模型獲得指令的多個響應。注釋者根據自己的偏好對這些響應進行排名,確保最佳響應符合既定標準,生成事例數據和偏好數據。自動數據合成。維持指令響應的注釋質量提出了大規模的重大挑戰,特別是那些需要專業知識、經驗、細心、耐心的注釋。為了應對這些挑戰,Qwen2設計了各種自動對齊策略大規模合成數據。Rejection Sampling 拒絕抽樣。對于具有明確最終答案的數學或類似任務,應用 Rejection Sampling(Yuan et al., 2023)提高解決方案質量。大型語言模型( LLMs )的任務是為每條指令生成多個響應(推理路徑),然后,將推理路徑正確并且模型認為合理的路徑,保留下來作為示范數據。而偏好數據則是通過對比正確和錯誤路徑生成的。Execution Feedback 執行反饋。對于編碼任務,參考《Self-play with Execution Feedback: Improving Instruction-following Capabilities of Large Language Models》, 使用LLMs生成解決方案和相關測試用例。再通過編譯和執行評估測試用例,創建演示和偏好數據。該方法也適用于評估指令遵循。Data Repurposing 數據再利用。對于文學寫作任務,參考《Large Language Models are Superpositions of All Characters: Attaining Arbitrary Role-play via Self-Alignment》,Qwen2匯總了公共領域的高質量文學作品,并使用LLMs制定不同詳細程度的說明。這些說明與原始作品配對,作為演示數據。例如,為了構造角色扮演數據使其具有生動的responses,Qwen2從等知識庫中獲取詳細的角色檔案,并指導LLMs生成相應的指令和響應。此過程類似于閱讀理解任務,可確保角色個人資料的完整性。Constitutional Feedback 憲法反饋。參考《Constitutional AI: Harmlessness from AI Feedback》,憲法AI是指導LLMs根據預定義的一組原則生成響應的過程。為了確保遵守安全和價值觀等準則,Qwen2編制了憲法數據集。該數據集描述了應遵循的原則和應避免的原則。用來指導LLMs做出符合或偏離這些指南的回答,作為演示和偏好數據參考。SFT。Qwen2收集了廣泛的教學數據集,包含超過 500,000 個示例,涵蓋指令遵循、編碼、數學、邏輯推理、角色扮演、多語言和安全等技能。模型微調兩個epoch,序列長度 32k。為了優化學習,學習率lr從 7×10?6 逐漸降低到 7×10?7 。為了解決過擬合問題,設置weight decay=0.1,梯度被裁剪為最大值 1.0。RLHF。RLHF 包括兩個連續階段:offline訓練和online訓練。離線訓練階段,使用DPO算法在預編譯的偏好數據集 ?? 上,最大化 ????+ 和 ????? 的可能性差異(DPO,Rafailov 等人,2023)。在線訓練階段,模型利用獎勵模型進行即時反饋,實時迭代地完善其性能。具體來說,從當前策略模型中采樣多個響應,獎勵模型選擇最喜歡和最不喜歡的響應,形成每一輪迭代的 DPO 偏好對。此外,采用在線合并優化器(Lu et al.,2024a)減輕對齊稅,緩解模型對齊后的性能下降。04Nemotron-41 獎勵模型 RMNemotron-4收集了 10k 人類偏好數據集,稱為 HelpSteer2,遵循HelpSteer類似的方法。并開源發布,詳細信息參考 Wang et al. (2024)。與歐陽等人采用的成對排名模型不同。Nemotron-4發現多屬性回歸獎勵模型可以更有效地將真正的有用性與不相關性分開(例如僅僅因為其長度而更喜歡較長但無用的響應)。此外,回歸模型更擅長預測細粒度獎勵,捕捉相似響應之間有用性的細微差別。回歸獎勵模型建立在 Nemotron-4-340B-Base 模型之上,用新的reward “head”替換最終的 softmax 層。這個“head”是一個線性投影,它將最后一層的隱藏狀態映射到 HelpSteer 屬性(有用性、正確性、連貫性、復雜性、詳細性)的五維向量中。在推理過程中,將這些屬性值通過加權和的方式聚合,作為總體獎勵。更多細節參考 Wang et al. (2024)。這樣的模型在 RewardBench (Lambert et al., 2024) 上表現非常好,達到了發布時的最高準確率。不同類別的得分如表4所示。Nemotron-4-340B-Reward 的總體得分證明了 Nemotron-4-340B-Base 模型的優勢、HelpSteer2 數據集的高質量以及方法的有效性。此外,該獎勵模型為訓練 Nemotron-4-340B-Instruct 提供了堅實的基礎。2 對齊數據Nemotron-4開發了一套synthetic data generation (SDG) 解決方案。整個對齊過程中(SFT+偏好訓練)超過 98%是合成數據,僅使用約 20K 人工注釋數據(10K 用于監督微調,10K Helpsteer2 數據用于獎勵模型訓練和偏好微調)。整個數據準備過程包括五個部分:構造prompts、合成對話、合成偏好數據、迭代式弱到強對齊和其他數據源。2.1 構造prompts準備prompt:合成prompts是 SDG 第一步。這種方法能夠控制提示分布以覆蓋不同的場景。提示多樣性是多維的,涉及任務多樣性(例如寫作、開放式問答、封閉式問答)、主題多樣性(例如詞干、人文、日常生活)和指令多樣性(例如 json output, # paragraph, Yes-or-No answer)。為了確保prompts維度多樣性,采用類似UltraChat(Ding 等人,2023)和 CAMEL(Li 等人,2023)的方法來生成prompts。具體來說,使用Mixtral-8x7B-Instruct-v0.1(Jiang et al., 2024)作為生成器,為開放式問答、寫作、封閉式問答、數學和編碼等任務分別合成提示。對于每個提示任務,使用一組不同的主題或關鍵字集合來合成prompt,以使其涵蓋廣泛的主題。還根據提示生成指令,明確定義期望響應的格式,例如“輸出必須采用 json 格式”。此外,生成兩輪提示,其中包括用戶助手交互歷史記錄,以提高模型的對話技能。下面分別討論合成單輪提示、合成指令遵循提示和合成兩輪提示的pipeline。合成單輪prompt:圖 2 展示了合成單輪提示的pipeline。首先,提示生成器輸出一組不同的宏觀主題。然后,再為每個合成的宏觀主題輸出相關子主題。最終收集了 3K 個主題(包括宏觀主題、子主題和人工收集主題)。open Q&A prompts。提示生成器生成與每個給定主題相關的open Q&A prompts(例如,“什么是機器學習?”)。然后,要求生成器將問題細化地更加詳細和具體(最初生成的問題通常非常短)。writing。對于寫作類提示(例如,“寫一篇關于機器學習的論文。”),提示包括基于給定主題生成特定類型的文本 (例如,時事通訊、散文, Ding 等人(2023))。再要求生成器細化生成的任務以包含更多細節。closed Q&A prompts。使用 C4 數據集中的文本(Raffel et al., 2020)。對于每個給定的文檔,要求生成器輸出受尊重的指令(例如,“總結給定的文本”或“根據給定的文本,xxx 是什么?”)。然后,使用手動定義模板將文檔與指令連接起來。math&coding。從數學和 Python 編程中收集一組不同的關鍵字(例如除法、循環、lambda 函數)。然后生成數學和 Python 編程的高級主題和子主題。接下來,提示生成器分類出條目中,與數學或 Python 編程相關的內容。最后,解析 Python 預訓練數據以收集常見的 Python 關鍵字,并手動收集數學相關的關鍵字。最終,收集得到 Python 關鍵字 12K ,數學關鍵字 17K。然后,提示生成器生成與每個關鍵字相關的問題。附錄 B 給出了以上過程用到的合成prompts。合成指令遵循prompts:例如,“寫一篇關于機器學習的文章。您的回復應包含三段。” 首先,隨機選擇一組合成提示。對于每個合成提示,參考 Zhou et al. (2023) 的“可驗證”指令模板,隨機生成一條合成指令(例如,您的回答應該包含三個段落)。然后將提示和指令用人工定義模板連接在一起。除了單輪指令跟隨提示之外,還構建了多輪指令跟隨提示,其中指令適用于所有未來對話,例如,“Answer the question and all following questions according to: [BEGIN OF INSTRUCTION] Answer with three paragraphs. [END OF INSTRUCTION]”。第二輪指令跟隨提示需要根據給定的指令修改先前的響應。合成兩輪prompt:雖然sft階段數據集通常是多輪的,但偏好數據通常是單輪的(Bai et al., 2022; Cui et al., 2023)。為了提高模型在偏好微調中的多輪對話技能,需要構建兩輪提示的偏好數據集。具體地,該提示包含一個用戶問題、一個助手答案和另一個用戶問題,形式為“用戶:XXX;助手:XXX;用戶:XXX;”。先從 ShareGPT(RyokoAI,2023)獲取第一個用戶提示,再使用中間指令模型生成助手響應和下一回合問題。現實世界的LMSYS prompts:從 LMSYS-Chat-1M (LMSYS) 中提取提示(Zheng et al., 2023)。以平衡的比例組合所有提示,并將它們分為兩個不同的組,一組用于監督學習,另一組用于偏好學習,確保兩者之間不重疊。在監督學習數據組中,從 LMSYS 中刪除被標記為潛在不安全的提示。在偏好學習數據組中保留這些提示,以允許模型學習區分安全和不安全的響應。圖 3 對合成單輪提示與 LMSYS 提示進行了比較。具體來說,對于每組提示,使用 Mixtral-8x7B-Instruct-v0.1 模型生成響應,并使用 Nemotron-4-340B-Reward 注釋響應的有用性分數。圖 3 有用性分布顯示合成提示的平均有用性高于 LMSYS 提示。由于簡單提示更容易“有幫助”,這意味著 LMSYS 提示平均難度高于合成單輪提示。2.2 合成對話合成多輪對話:為了培養多輪對話能力,將每個對話設計為三輪。通過迭代式角色扮演,模型在助手和用戶角色之間交替。注意,為了在用戶輪引發所需的行為,必須為模型提供明確的提示,定義不同的用戶個性(如附錄 C 所述),并附有對話歷史記錄。質量控制上,通過排除禮貌性陳述(例如“謝謝你……”、“當然我很樂意……”)來對用戶進行后處理,以模仿現實世界的用戶問題。采用貪婪采樣進行演示數據合成。還利用 Nemotron-4-340B-Reward 評估對話質量,為每個樣本分配分數并過濾掉低于預定閾值的樣本。2.3 合成偏好數據使用 10K 人工注釋的 HelpSteer2 偏好數據訓練 Nemotron-4-340B-Reward,但還需要更多(更多樣化prompt領域、帶頂級中間模型的高質量響應以及帶有ground-truth信號)的偏好數據。偏好數據為三元組形式(prompt, chosen response, rejected response)。回復生成:偏好數據包含合成的單輪提示、指令跟隨提示、兩輪提示以及現實世界提示(包括 ShareGPT 提示、LMSYS 提示以及 GSM8K (Cobbe et al., 2021) 和 MATH ( Hendrycks 等人,2021)的訓練數據集)。對于每個提示,使用多個隨機中間模型生成響應。以確保偏好數據集的不同響應。此外,當響應是來自(根據 MT-Bench 表現)最佳的Nemotron-4模型的多個隨機生成時,還構建了更具挑戰性的合成偏好示例。這些具有挑戰性的偏好示例使模型能夠進一步改進自身。真值標簽:給定每個提示的多個響應,需要判斷他們的偏好排名并選擇 chosen response 和 rejected response。一些任務可以使用真實標簽(例如,GSM8K 和 MATH 訓練集答案)或驗證器(例如 python 程序驗證指令響應)來評估。LLM評估和RM評估:在 LLM-as-Judge 中,為 LLM 提供prompt和兩個響應,并要求其比較兩個響應。為了避免位置偏差,詢問 LLM 兩次并交換響應順序。只有兩次判斷一致時,才選擇一組有效的(提示、選擇響應、拒絕響應)三元組。判斷提示位于附錄 D 中。早期偏好數據迭代主要是 LLM 評估。在 RM-as-Judge 中, Nemotron-4-340B-Reward預測每對(提示、響應)的獎勵,并根據獎勵決定偏好排名。獎勵基準分數 (Lambert et al., 2024) 顯示,RM評估比LLM評估更準確。具體來說,在“Chat-Hard ”類別中,選擇和拒絕的響應很難區分,RM評估比 LLM 評估要好得多,平均準確度為 0.87 比 0.54。實驗顯示 Chat-Hard 類別分數對于合成數據生成中的偏好排名特別重要。因此,后期的數據集迭代使用RM評估。2.4 迭代式弱到強對齊什么模型最適合作為生成器?生成器強度與數據質量有何關系,以及如何改進數據生成器。受弱到強泛化(Burns et al., 2023)的啟發,Nemotron-4開發了一種新穎的迭代方法逐步完善數據以實現最優。這種方法結合了對齊訓練和數據合成的優勢,使它們能夠相互增強并推動持續改進。圖4說明了迭代式弱到強對齊的流程。模型質量(無論弱還是強)是由多個評估指標的組合來定義的(參見原論文2.4節base model 和3.4.1節instruct model)。使用一個初始對齊模型作為對話和偏好數據的生成器。然后使用這些數據通過監督微調和偏好訓練得到更好的基礎模型。實驗發現教師模型并沒有限制學生模型的上限,隨著基本模型和對齊數據的細化,新對齊的模型能夠大大超過初始對齊模型。對齊過程與基礎模型預訓練并行執行。第一次迭代中,選擇 Mixtral-8x7B-Instruct-v0.1 作為初始對齊模型。生成的數據用于訓練 Nemotron-4-340B-Base 的中間檢查點(稱為 340B-Interm-1-Base)。340B-Interm-1-Base 優于 Mixtral 8x7B Base 模型,這反過來又使生成的 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。這個迭代過程產生了自我強化的飛輪效應,其改進可以歸因于兩個方面:(1)數據集相同時,基礎模型越強,產生的指令模型就越強。(2)基礎模型相同時,數據質量更高,產生的指令模型更強。整個對齊過程進行多輪數據生成和細化,不斷提高模型質量。2.5 其他數據源補充幾個特定領域的數據集擴充多樣性,如下。主題遵循:納入 CantTalkAboutThis 訓練集(Sreedhar et al., 2024),其中包括廣泛主題的合成對話,并故意穿插分散注意力的輪次,以將機器人從主題轉移開。該數據集有助于增強模型在面向任務的交互過程中專注于預期主題。無法完成的任務:某些任務模型可能無法自行完成(例如互聯網訪問或實時知識)。為了減輕這些情況下的幻覺,使用人工編寫示例(參見附錄 A)提示 LLM 生成各種問題。然后,明確要求 LLM 做出拒絕回應,收集這些回應并將其與相應的問題配對。STEM數據:增加五個STEM相關數據集。Open-Platypus (Lee et al.,2023), PRM800K (Lightman et al.,2023), SciBench(Wang et al.,2023a), ARB (Sawada et al.,2023), openbookQA (Mihaylov et al.,2018)。文檔推理和QA:使用 FinQA 數據集 (Chen et al.,2021b)提升數值推理,使用人工標注數據集 (Liu et al.,2024)提升上下文QA,使用 wikitablequestions (Pasupat and Liang,2015)提升模型半結構數據理解能力。函數調用:使用(Glaive AI,2023)數據子集。3 對齊算法參考(Ouyang et al., 2022),涉及兩個階段:監督微調和偏好微調。3.1 監督微調同時學習多種能力有時會導致它們之間的沖突,尤其是編碼任務。為了解決這個問題, Nemotron-4 設計了一個兩階段 SFT 策略,這種方法在所有下游任務中都能產生優異的結果。代碼 SFT。第一階段純粹進行代碼sft。此階段需要大量代碼數據才能有效提高模型編碼能力。為了有效地合成編碼數據,開發了 Genetic Instruct,這是一種模仿進化過程的方法,利用 self instruction(Wang 等人,2022)和wizard coder mutations(Luo 等人,2023)從有限的高質量種子中合成大量數據。此外,還引入了一個適應度函數,它使用 LLM 評估生成的指令及其解決方案的正確性和質量。通過評估和檢查的樣本將被添加到種群池中,持續數據進化流程,直到達到目標規模。整個pipeline旨在實現多個群體的高效并行執行,從而實現可擴展性。經過廣泛的重復數據刪除和過濾后,保留了約 800K 精選數據集用于 Code SFT 訓練。固定lr=3e-7,batch size=128 ,epoch=1 。通用 SFT:第二階段進行通用sft,利用 200K 混合數據集(包含各種任務,如第2節對齊數據所述,還包括代碼 SFT 階段 2% 的樣本,以降低遺忘風險)。batch size=128 ,epoch=3,lr取值范圍[1e-7, 5e-7]。這兩個階段都僅計算助手回合的損失。3.2 偏好微調監督微調之后是偏好微調,數據格式為三元組(prompt, chosen response, rejected response)。偏好微調涉及多次迭代,直接偏好優化 DPO(Rafailov 等人,2024)和本文提出的新對齊算法RPO(獎勵感知偏好優化)。DPO:DPO算法通過最大化所選響應和拒絕響應之間的隱式獎勵差距優化策略網絡。但實驗觀察到選擇的響應和拒絕的響應的likelihood隨著差距的增加而一致下降,即使選擇高質量響應。當訓練足夠長時,策略網絡往往會過擬合,并且各種指標之間此消彼長(例如 MT-Bench提升,0-shot MMLU下降)。這里在所選響應上添加加權 SFT 損失,防止策略網絡大量偏離偏好數據,特別是因為偏好數據不是從參考策略生成的。為了避免模型學習低質量的選擇響應,當真實情況不可用時,使用 Nemotron-4-340B-Reward 挑選高質量選擇響應示例。這會產生一個包含 16 萬示例(包括各種任務)的偏好數據集。訓練參數為batch size=256 ,epoch=1 ,lr調整區間[3e-8, 3e-7],DPO loss kl正則化系數調整區間[3e-4, 3e-3],SFT損失的權重調整區間[1e-5, 1e-3]。RPO:由于不了解兩個響應的質量差距,DPO 努力最大化所選響應和拒絕響應的隱性獎勵差距,會導致過擬合和不必要的“忘記”高質量拒絕響應。為了克服這個問題,提出獎勵感知偏好優化(RPO),它使用策略網絡定義的隱式獎勵來近似獎勵差距。新的損失函數如下:其中 ?? 是要訓練的策略網絡;?????? 是參考策略;( , _ , _ )( , _ , _ ) 分別對應提示、選擇響應、拒絕響應;??(,),??(,) 分別是獎勵模型選擇和拒絕響應的獎勵值。與 DPO 相比,RPO 學似獎勵差距,從而防止過擬合問題。根據距離度量 和獎勵模型 ??? 的選擇,RPO 與現有方法相關,例如 DNO 、cDPO 、IPO、Distill DPO和 BRAINn。實驗中 ?[??//]:=?()?????????()?()+(1??())????????1??()1??() 。使用 DPO 訓練的檢查點作為初始化和參考策略,再使用 RPO 訓練模型。具體來說,使用 30 萬的偏好數據集,并對所選響應進行不太嚴格的質量過濾。再對所選擇的SFT loss添加較小的正則化系數 (1e-5) 。實驗固定 =1、 ? =3? ?-?7,KL 系數 調整區間為[1e-3, 1.] 。RPO 一共迭代3次,每次迭代都使用前一次迭代的檢查點作為初始化和參考策略。三次迭代后即得到最終的 Nemotron-4-340B-Instruct。05AFM后訓練過程包含兩個階段:SFT和RLHF。Apple提出了兩種新的后訓練算法:(1)帶有教師委員會(iTeC)的拒絕采樣SFT算法。(2)具有鏡像下降策略優化和留一法評估 (MDLOO)的RLHF。1 后訓練數據使用混合數據策略,包含人工注釋數據和合成數據。并進行了廣泛的數據管理和過濾程序。人工注釋數據。包括演示數據和人類偏好反饋數據。Demonstration data:從各種來源收集高質量人工注釋演示數據集。包括系統級和任務級指令,及其相應的響應。除了針對涵蓋 Apple Intelligence 功能的多樣化任務分配外,還重點關注關鍵數據質量標準,包括有用性、無害性、演示和響應準確性。確保刪除數據中用戶個人身份信息。Human preference feedback:指導人類注釋者對同一提示的兩個模型響應進行比較和排名,以收集偏好標簽。此外,還使用單面問題指導這個過程。這些問題讓評估者對模型響應質量的各個方面進行評分,包括指令遵循、安全性、真實性和演示,并保留這些標簽用于模型訓練。與演示數據類似,數據質量對于反饋數據至關重要,整個過程聯合迭代數據和模型質量。合成數據在強大的獎勵模型指導下,AFM 能夠生成高質量的響應,甚至優于人類注釋。因此,使用合成數據擴展提示集以增加多樣性。AFM 后訓練合成數據包括三個領域:數學、工具使用和編碼。數學。數學合成數據主要涉及兩個階段:生成數學問題并產生相應的解決方案。對于數學問題合成,采用了幾種“進化”策略,其中一組提示的種子被轉換為更大的一組不同的提示:Problem rephrase and reversion(問題改寫和回歸)。遵循[Yu et al.,2023]中的方法,提示 AFM 重新表述種子數學問題,并策劃反向問題,以便在提供最終答案時在原始問題陳述中導出特定數字。Problem evolution(問題進化)。受到指令進化技術的啟發[Xu et al.,2023],給定種子問題集 ?????????? 提示 AFM 生成兩組不同的數學問題,即深度演化 ???????????和廣度演化 ???????????????。深度演化通過增加復雜性來增強指令,而廣度演化則提高了主題覆蓋范圍。對于兩個進化數據集,首先使用embedding模型進行重復數據刪除,然后提示LLMs確保數學問題的連貫性和可解性。此外,對于 ??????????? 分配了難度級別,只選擇分數高于指定閾值的數學問題。通過一組增強的數學問題,提示 AFM 針對每個問題合成N個帶COT推理的回答。如果初始種子數據具有ground truth label,則它們可以用作“結果獎勵信號”過濾合成答案。對于需要較少推理步驟的問題,正確的最終答案通常與正確的中間步驟相關聯。如果直接答案檢查不成功或無法獲得真實答案,將詢問LLM評估答案的正確性。將過濾后的答案輸入訓練數據后,可以大幅提高模型的數學能力。工具使用。例如function call,code interpreter以及瀏覽混合數據。模型能力首先通過合成數據進行引導,該數據主要集中于單一工具的使用場景。然后,收集人工注釋以改進多工具和多步驟場景的模型功能。通過將原始工具與其他類似工具混合,進一步增強人工策劃的函數調用數據,以增加工具選擇的難度。此外,我們從人工整理的函數調用數據中合成并行函數調用,以實現新的功能,并基于人工整理的函數調用數據和一般的SFT數據生成工具意圖檢測數據,從而緩解工具調用過度觸發的問題。代碼。合成代碼數據集涉及帶有拒絕采樣的self-instruct方法。這種方法使模型能夠自主學習和生成數據。從 71 個不同的編程主題作為種子開始,提示模型生成一個類似于編程面試的初始問題池。對于每個問題,模型都會生成一組單元測試和許多潛在的解決方案。然后,基于 execution 執行拒絕采樣方法,選擇最佳解決方案。這涉及到通過每個單元測試來編譯潛在的解決方案并執行它們。選擇成功執行次數最多的解決方案。最終產生(question, test cases, solution)三元組集合。以單元測試的通過數量驗證數據集質量,最終產生 12K 高質量sft三元組數據。2 微調 SFT數據選擇。建立一系列數據質量守衛,包括內部人工標記員的評級、基于模型的自動過濾技術以及文本embedding的重復數據刪除。還通過各種合成數據生成方法和拒絕抽樣來擴大混合數據集。調整混合比。為了調整混合權重,將其視為優化問題。具體來說,給定一組權重 (??1,??2,…,????) ,其中 ???? 表示混合物中特定成分的比例,用以下方法訓練模型 ????→????±Δ?????,并根據一組基準評估質量變化。廣泛運行此類實驗可以有效地識別最佳混合數據集,并刪除影響最小的子集。訓練超參數。AFM-Server固定lr=5e-6,AFM-Device固定lr=2e-5,dropout=0.1。由于評估指標在不同的 checkpoint 有所波動,基于自動評估基準和獎勵模型的best-of-N選擇最佳 checkpoint,以測試強化學習的提升空間。3 RLHF首先訓練一個強大的獎勵模型 RM 并將其應用到下面的 iTeC 和 MDLOO 兩種RLHF算法中。附錄 E描述了 RLHF pipeline的更多細節。3.1 獎勵模型 RM使用收集的人類偏好數據訓練獎勵模型。每個人類偏好數據項包含一個提示和兩個響應以及人類標簽,內容如下:首選響應以及偏好水平,偏好水平包括:明顯更好、更好、稍好、可忽略不計。對每個回答進行單方面評分,衡量每個回答的指令遵循性、簡潔性、真實性和無害性。RM訓練使用標準流程,并做了兩點創新:設計一個考慮人類偏好水平的soft label loss函數。將單個回復評分作為RM正則化項。采用常用的 Bradley-Terry-Luce (BTL) 模型訓練RM。在此模型中,兩種響應的差異被建模為獎勵差異的 sigmoid 函數。soft label loss 函數表明,當偏好水平較高時(例如一個響應明顯優于另一個),這種概率就較高,反之亦然。這與 Llama 2[Touvron et al.,2023]中 margin-based 的損失函數不同,并且效果更好。單邊評分作為正則化項可以有效提高獎勵模型的準確性。更多細節參考附錄E.1。3.2 Iterative teaching committee (iTeC)該框架結合了各種偏好優化算法,包括拒絕采樣RS、直接偏好優化 DPO 及其變體(如IPO和在線RL)。Iterative committee。apple在RLHF 中學到的最重要的經驗教訓之一是使用一組不同的性能最佳模型來刷新在線人類偏好數據收集。具體來說,對于每批人類偏好數據收集,建立一系列從 SFT、RS、DPO/IPO 和 RL 訓練的最新有前途的模型,以及之前迭代中的最佳模型,將其稱為“model committee”。從最新的“model committee”抽樣收集成對的人類偏好響應。在獲取每批人類偏好數據后,更新獎勵模型,并使用偏好優化算法集合進一步訓練一組新模型。然后,使用新的“model committee”繼續下一輪迭代 RLHF 數據收集。Committee distillation。進一步對模型委員會進行拒絕抽樣(蒸餾),并使用最新的獎勵模型作為重新排序器。在提示級別重新排名模型響應。具體來說,對每個提示,使用委員會中每個模型的多個響應進行采樣,并使用最新的RM為每個提示選擇最佳響應。這能夠結合不同偏好優化算法訓練的模型的優點。例如,apple發現利用反例的算法(例如在線 RLHF、DPO、IPO)可以提高數學推理技能,而拒絕采樣 RS 可以有效學習指令遵循和寫作技能。Scaling up distillation。對于較大的模型,仔細迭代數據質量和模型質量比數量更重要。對于較小的模型,擴大蒸餾提示數量,可以實現小模型巨大的改進。最終的 AFM-on-device 模型根據模型委員會生成的超過 100 萬個高質量響應進行訓練。3.3 Online RLHF algorithm: MDLOO在本節中,我們介紹在線強化學習算法 – 帶有留一估計的鏡像下降 MDLOO,我們在模型訓練期間解碼響應并應用 RL 算法來最大化獎勵。使用常規的 RLHF 目標來最大化 KL 懲罰獎勵函數[Ouyang et al.,2022]。獎勵函數如下:其中 ????(??,??) 表示輸入 x 和輸出 y 的獎勵函數。該公式通過減去加權的對數比值來調整獎勵,權重系數為 β ,而對數比值表示策略 ????(??|??) 與參考策略 ??ref(??|??) 的比率。我們考慮將整個回復的生成視為一個動作的bandit設置,并且不使用價值網絡(即the critic)來獲得每個token的獎勵或優勢。與常用的 RLHF 算法(例如 PPO[Schulman et al.,2017])類似,使用基于信任域的策略迭代算法。并在在線 RL 算法做出了兩點設計:使用Leave-One-Out(LOO)估計器來估計prompt-response對的優勢,類似于最近的工作[Ahmadian et al.,2024] 。使用鏡像下降策略優化(MDPO,Mirror Descent Policy Optimization) [Tomar et al.,2020]來優化策略,這與常用的基于裁剪的 PPO 方法不同。更具體地,在算法的解碼階段,我們為每個提示解碼多個回復,并將每個回復的優勢分配為該 (提示,回復) 對的獎勵與同一提示生成的其他回復的平均獎勵之間的差值。直觀上,該估計器旨在衡量響應與典型響應相比好多少。根據經驗,這個優勢估計器對于穩定 RL 算法并獲得良好的結果至關重要。此外,使用基于KL正則化的信任域方法,即MDPO,來控制每次迭代中的策略變化。該算法比 PPO 更有效。更多詳細信息參閱第 E.2 節。06Yi微調強調數據質量而不是數量。與 LIMA[94]和 DEITA[48]方法一致,側重于數據選擇而不是規模。由于規模小于10K,能夠檢查和優化每一條數據。下面討論數據構建和訓練細節。1 數據預處理質量控制。微調數據集由不到 10K 的多輪指令-響應對話組成,每條都經過多次迭代和用戶反饋完善。使用以下技術來改進提示分布選擇、響應格式、 COT 格式、消除幻覺和重復:從 WizardLM [83]中汲取靈感,開發了復合指令并逐步改進以增加其復雜性。這種方法顯著減小了 SFT 數據的大小;對于響應格式,從 LIMA [94]擴展默認樣式。總體而言,答復采用 “介紹-正文-結論” 的格式,其中正文通常是要點列表;對于 CoT 數據格式化,使用了“Step-Back”模式,靈感來自Cheng 等人[92] 。先摘要出更高級別的解決方案,再深入推理原始的具體問題。為了減少幻覺,檢查并確保響應中的知識不在模型中,并消除可能導致記憶的響應;為了減少重復,重寫微調數據中容易被忽略的重復數據。多樣性和混合性。收集廣泛的開源提示,涵蓋問答、創意寫作、對話、推理、數學、編碼、安全、雙語能力等領域。參考 InsTag[49],開發了一個指令標記系統。通過設計注重多樣性的采樣算法,仔細平衡各個標簽之間的指令分布。為了平衡不同能力獲得最佳數據比例,使用近似網格搜索確定數據混合。受到董等人的激勵 [20],對每種能力的 {1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64} 比例進行實驗。搜索過程使用結果驗證和人工評估。長上下文數據。將短數據與長文檔問答數據混合。使用合成數據構建文檔QA數據。具體來說,將多個文檔隨機連接成一個序列,從長序列中采樣一個或多個段落,并要求模型根據采樣的段落構建QA對。主要是ICL背誦和改寫,要求模型先背誦或改寫原始段落,再給出答案。這種數據格式鼓勵模型檢索,從而減少幻覺。ChatML Format。數據格式極大地影響了模型的最終性能。使用 ChatML 風格的格式[53]。這種結構化方法使模型能夠區分各種信息類型,例如系統配置、用戶輸入和助手響應。2 訓練方法訓練參數。微調使用標準 next-word prediction loss,僅計算響應損失。使用 AdamW 優化器 和β1=0.9,β2= 0.999,?=10?8。seq_length=4096,batch size=64。step=300,constant lr=1e?5、weight decay=0.1、最大閾值 1.0 的梯度裁剪,以及 NEFTune[34](Yi-34B-Chat 的 noise scale=45,Yi-6B-Chat 的 noise scale=5)。安全對齊。根據[24,35]中的現有研究,首先建立一個全面的安全分類法。該分類法涵蓋了廣泛的潛在問題,包括環境不和諧、迷信、宗教敏感性、歧視性做法、藥物濫用、暴力行為、非法活動、仇恨、違反道德行為、隱私、自殘、內容、心理健康問題和網絡安全威脅。收集此類數據集以實現穩健對齊,并將它們與 SFT 數據混合。還在對齊階段包含了一組有針對性的模擬攻擊場景的提示,這有效提高了模型針對惡意使用的彈性。長上下文窗口支持。改進了計算通信重疊、序列并行性和通信壓縮,以支持高達 200K 上下文長度的持續預訓練和微調。改進方法完全基于工程,沒有修改模型架構(如sparse, local, or sliding window attention等),即使輸入是 200K,模型仍然使用完全注意力。07GLM-4五月底智譜放出了GLM-4的技術報告,開源GLM-4-9B,總結了整個系列從預訓練到agent的各個方案。這里簡單梳理一下后訓練相關技術。模型結構No Bias Except QKV:除了QKV之后都不使用bias,這樣可以提升訓練速度。此外還發現不使用bias在長度外推的能力有微微提升。使用RMSNorm和SwiGLU。使用2D的RoPE。使用GQA,以減少推理的KV cache需求。由于GQA相比MHA有更少的參數,把FFN的大小增加到10/3的hidden size來保持模型總參數基本不變。Alignment。主要應用了SFT+RLHF技術。在sft中,團隊發現真實的人類prompt和交互,比template-based的生成數據和LLM合成數據要好得多。RLHF可以進一步幫助緩解response排斥、安全性、雙語混合生成,以及多輪問答一致性等問題。后訓練技術點LongAlign:參考《Longalign: A recipe for long context alignment of large language models》能把GLM-4的推理長度提升到128k,并且效果達到Claude 2和GPT-4-turbo-1106 的水平。ChatGLM-Math:參考《Chatglm-math: Improving math problem-solving in large language models with a self-critique pipeline》給出了一套通過self-critique提升數學能力的方法。ChatGLM-RLHF:參考《Chatglm-rlhf: Practices of aligning large language models with human feedback》總結了PPO和DPO的應用效果。Self-Contrast:參考《Extensive self-contrast enables feedback-free language model alignment》給出了Self-Contrast的策略,可以讓模型自動生成大量正負樣本對用于RLHF。AgentTuning:參考《Agenttuning: Enabling generalized agent abilities for llms》包括agent的訓練框架和AgentInstruct 指令數據集(代理和環境之間的高質量交互軌跡)。APAR:參考《Apar: Llms can do auto-parallel auto-regressive decoding》總結了auto-parallel auto-regressive的并行解碼生成策略。訓練llm規劃它們的(并行)生成過程并執行APAR生成,以提高llm對層次結構響應的推理速度。GLM-4 All Tools。集成了各種技術,流程如下。安全對齊。對每個訓練樣本進行安全性評估,移除任何具有潛在風險的樣本。在比較多個模型輸出時,無害性也是偏好對齊的重要標準。設計一個紅隊,持續向模型提出棘手的問題,以引發潛在的不安全回答。收集所有來自GLM-4的有害問答對,并通過人工標注改進它們,以進一步對齊模型。使用SafetyBench對GLM-4模型進行評估,該評估從七個維度考察每個模型:倫理與道德、非法活動、心理健康、冒犯性、身體健康、隱私和財產、不公平和偏見。08Gemma21 模型架構Local Sliding Window and Global Attention。在每個其他層中交替使用局部滑動窗口注意力(Beltagy 等人,2020b,a)和全局注意力(Luong 等人,2015)。局部注意力層的滑動窗口大小設置為4096個token,而全局注意力層的跨度設置為8192個token。Logit soft-capping。在每個注意力層和最后一層中限制 logits(Bello et al.,2016),logits 值保持在 (?soft_cap, +soft_cap)之間。使用此函數限制 logits:logits ← soft_cap ? tanh(logits/soft_cap)。RMSNorm (包括Post-norm 和 pre-norm)。為了穩定訓練,使用 RMSNorm(Zhang 和 Sennrich,2019)對每個 Transformer 子層、注意力層和前饋層的輸入和輸出進行歸一化。分組查詢注意力GQA。GQA設置 num_groups=2,推理速度提高的同時依然能保持下游性能。2 后訓練方案首先,對純英文文本的合成數據和人工提示-響應對的組合應用 SFT,再應用 RLHF,其中獎勵模型是在標記的純英語偏好數據上訓練的,并且策略基于與 SFT 階段相同的提示。最后,對每個階段后獲得的模型進行平均,以提高其整體性能。數據混合和后訓練方案以提高有用性為基礎進行設計,同時最大限度地減少安全和幻覺相關危害。數據混合。包括內部和外部公共數據,擴展了Gemma 1.1的后訓練數據。特別是,使用提示,但不使用 LMSYS-chat-1M 的答案(Zheng et al., 2023) 。所有的數據都會經過如下所述的過濾階段。SFT。在合成提示和真實提示上運行行為克隆,回復由較大的教師模型生成。再在學生模型的分布上運行來自教師模型的蒸餾過程(Agarwal et al.,2024;Gu et al.,2024)。SFT 補充知識。在SFT的時候,通常的做法是把synthetic data和真實prompt數據喂給teacher模型,獲取對應的response,然后用常規蒸餾方式進行訓練。Zephyr和OpenHermes就是這樣的做法。這樣的訓練方式雖然有效,但是有可能出現train-inference mismatch的問題,即student model在推理的時候出現和訓練時不同的分布。為了解決這個mismatch的問題,Gemma2參考《On-policy distillation of language models: Learning from self-generated mistakes》,使用on-policy distillation的方法。具體來說,就是由student對prompt生成response,然后最小化teacher和student在這個response上的KL divergence。這樣就不會出現train-inference mismatch的問題了。參考文章。RLHF。使用與 Gemma 1.1 類似的 RLHF 算法(Gemma Team,2024),但獎勵模型不同,獎勵模型比策略大一個數量級。新的獎勵模型也更注重對話能力,特別是多輪對話能力。模型合并。通過使用不同的超參數運行pipeline,對獲得的不同模型進行平均(Ramé 等人,2024)《Warp: On the benefits of weight averaged rewarded policies》。數據過濾。使用合成數據時,運行多個階段的過濾,以刪除個人信息、不安全或有毒輸出、錯誤的自我識別數據和重復示例。實驗發現包含一些數據子集以鼓勵更好的上下文歸因、保留措辭以及拒絕回答,可以減少幻覺現象,從而提高事實性指標表現,同時不會降低其他指標性能。對話數據格式。Gemma 2 使用與 Gemma 1 相同的控制 token 進行微調,如表4所示,但格式架構不同,參見下圖對話示例。請注意,模型顯式地以<end_of_turn><eos> 標識結束生成,而之前它僅生成<eos>。有關此格式結構背后的動機,請參閱 Gemma 1。09DeepSeek-V2對齊數據。收集了大約 150 萬個中英文的數據實例,涵蓋廣泛的“有用”和“無害”主題。“有用性”數據 120 萬(其中通用語言任務 31.2%,數學問題 46.6%,編碼 22.2%)。安全性數據30萬,涵蓋各種敏感主題。監督微調。DeepSeek-V2 微調 2 個 epoch ,學習率 5e-6。強化學習 RL。借鑒deepseekmath,采用組相對策略優化(GRPO)(Shao et al.,2024),它放棄了ppo中的 critic model,并以 group scores 估計 baseline。具體來說,對于每個問題q, GRPO 從舊策略 πθ???????? 采樣一組輸出 {??1,??2,?,????} ,然后優化策略模型 πθ 以最大化以下目標:公式中ε和β是超參數, ???? 是對應一組獎勵計算的優勢 {??1,??2,…,????} :實驗發現,模型的數學和編碼能力可以在較長時期的訓練中不斷提高。因此,采用兩階段強化學習訓練策略,首先進行推理對齊,然后進行人類偏好對齊。第一個推理對齊階段,訓練獎勵模型???????????????????????????????用于代碼和數學推理任務,并根據???????????????????????????????的反饋優化策略模型:第二個人類偏好對齊階段,采用多重獎勵框架,該框架從有用性RM中獲取獎勵 ???????????????????????? ,安全性RM中獲取 ?????????????????????? ,以及基于規則的RM中獲取 ???????????????? 。回復的最終獎勵 ???? 是:其中,c1, c2和c3是對應的系數。RM。為了訓練獎勵模型,仔細收集偏好數據,并精心進行質量過濾和比例調整。根據編譯器反饋獲得代碼偏好數據,并根據真實標簽獲得數學偏好數據。對于獎勵模型訓練,我們使用 DeepSeek-V2 Chat (SFT) 初始化獎勵模型,并使用逐點或成對損失訓練它們。實驗中,強化學習訓練可以充分挖掘模型潛力,使其能夠從可能的響應中選擇正確且令人滿意的答案。10Baichuan2百川提出了一套綜合性的系統對齊方案 Nova Alignment,包括三個階段:提示增強系統 (PAS)、監督微調 (SFT) 和偏好對齊(PT)。本報告主要關注Nova Alignment的優化、數據、關鍵能力提升、系統評估四個方面。第2節詳細討論了訓練、提示論證和模型合并方法。在第3節中,強調數據對齊的重要性,重點關注提示選擇、響應構建和偏好數據。第4節概述關鍵能力挑戰,詳細介紹了通過 Nova Alignment 獲得的具體方法和見解。最后,第5節對Nova Alignment進行了全面評估。Qwen2-Nova-72B 和 Llama3-PBM-Nova-70B 分別是基于 Qwen2-72B[95]和 Llama-3-70B[27]訓練的指令模型。2 優化2.1 訓練SFT。學習率 1e?5,epoch取值范圍[2,6],使用NOVA提出的高效訓練方法(包括Packing、Multi-layer Gradient Checkpointing和Sequence Parallel策略),還應用權重衰減防止過擬合。Reward。傳統獎勵模型僅保證不同反應的獎勵分數的相對順序,而缺乏絕對感知。例如:擬合獎勵分數差為 ???????????????????????????????????1 可能小于 ????????????1?????????2 ,這鼓勵模型找到獎勵的捷徑。為了減輕這種影響,添加了point wise MSE loss。獎勵模型將最小化以下目標:其中,α是一個可調系數, ??^?????? 和 ??^?????? 是所選數據和拒絕數據的標準化注釋絕對分數。另外,偏好數據集中,還混合了一些沒有絕對分數的數據集,例如開源 hh-rlhf[7]數據集、SHP[28]數據集。對于這些數據集中的數據,α設置為 0。通過這個目標,擬合的獎勵模型更加穩健。RM 根據其大小訓練 1~2 個 epoch。強化學習。選擇了GRPO[74]強化學習方法。相比 PPO[73], GRPO沒有critic模型,結果與PPO相當,同時節省近一半的訓練資源。此外,它比 DPO[68]和 KTO[29]等直接優化方法實現了更好的性能。GRPO優化目標如下:2.3 提示優化設計了一個提示增強系統(PAS),可以自動生成補充提示。pipeline一般會根據用戶提示生成相應的補充內容,并輸入到主模型中。PAS通常補充以下幾方面內容:1)應用場景響應要求。2)基于用戶意圖的擴展內容,非語氣。3)響應格式約束,例如“內容應邏輯清晰、條理清晰、易于用戶理解”。關于LLMs的檢索增強生成(RAG),擴展提示內容需要在檢索結果范圍內;因此,在生成補充提示時,搜索關鍵詞應作為新的約束條件。2.4 模型合并通過合并不同下游任務的微調模型,可以顯著增強LLM的綜合性能,緩解“蹺蹺板效應”。參考合并算法綜述[96]。百川使用模型合并工具包 MergeKit[32],從不同領域選擇最佳模型,應用各種合并算法,包括 Linear、Task Arithmetic[38]和 Model Stock[40]。實驗表明,合并模型實現了更平衡的性能。在測試的算法中,Model Stock 始終提供最佳整體性能。3 數據圖4描繪了構建 Nova 對齊數據集的流程。最初開發了一個提示系統和一個分類模型(第3.1.1節),它們構成了數據飛輪的基礎。然后詳細闡述數據構建的關鍵步驟,重點關注提示多樣性(第3.1.2節)和提示質量(第3.1.3節)。此外詳細介紹了生成響應的各種技術和最佳實踐(第3.2節)。最后總結構建偏好數據的見解(第3.3節)。3.1 Prompt 選擇3.1.1 Prompt系統與Prompt分類prompt系統在數據管理、增加數據覆蓋的廣度和平衡性、引導模型性能迭代的可靠性和方向等方面發揮著至關重要的作用。以分類學和統計分析為指導,輔以人類專業知識,經過多次迭代和完善,我們開發出了多維度、多粒度的提示標注系統。隨后,在數據生產的各個方面訓練和部署自動標簽分類模型。提示系統。策劃了一個多樣化的 initial prompt pool,結合了來自人類提示和各種開源數據集的真實請求。利用通用模型,為提示分配初步標簽。隨后,通過同義詞合并、長尾剪枝、層次關聯等技術開發了初步的提示標注系統。再通過人工注釋迭代完善擴展,精心建立了最終版本的標簽系統和豐富的標簽數據集。系統主要圍繞六個維度精心構建:能力、屬性、領域、語言、難度和提示約束。這些維度具有交織和分層結構,可以創建數千種組合類型。能力涵蓋LLM完成任務所需的技能,包括知識問答、文本生成、代碼和邏輯推理。屬性提供與功能相關的獨特上下文信息,例如用于文本生成的文學寫作和實用寫作。領域將現實世界與LLM聯系起來,賦予其相關性和活力,共同領域包括信息技術、歷史和人文學科。語言定義了表達的媒介,分為中文、外文、編程語言,再細分為簡體中文、繁體中文、文言文、英文、法文、Python、C++等。難度表示提示的復雜程度,分為簡單、中級、困難三個級別。提示約束強調了提示中約束的重要性,根據約束的數量將其分為無約束、簡單約束和強約束。這個集成框架確保了一個全面且適應性強的系統,擅長解決各種指令場景。分類模型。在上述提示系統的指導下,最初利用先進的LLMs對提示進行分類。通過投票和低置信度樣本的人工驗證等方法完善這一過程,最終構建了包含數萬個樣本的訓練集。隨后,基于Baichuan2-13B[94]和標簽數據,微調了專門的自動提示標注模型(automatic prompt labeling model),在評估集上標注準確率達到 90%。相比之下,經過微調的 BERT[24]僅 81%。提示系統與自動分類模型的集成,實現了提示集的高效管理和迭代。包括評估提示的多樣性和覆蓋范圍、分組以進行挖掘和優化,以及自動將提示與專門的人工注釋者進行匹配。訓練集中的每條新數據都會經歷這個系統過程,確保一致且全面地處理所有與提示相關的任務,如圖4最左側所示。3.1.2 Prompt 多樣性訓練了一種任務感知 embedding 模型,該模型可以精確地捕獲指令差異,促進多樣化。提示通常包括 instructions 和 inputs,通常格式化為與上下文信息連接的任務模板。如圖4右上部分,通過多粒度聚類方法提取高質量的任務感知訓練數據。從粗粒度聚類開始,然后在每個類別內進行細粒度聚類。利用最長公共子序列(LCS)算法和啟發式規則,從不同的細粒度簇中,將具有相似任務模板的樣本識別為硬正樣本,而將不具有相似任務模板的樣本識別為硬負樣本。然后將這些樣本用于對比學習(基于Triplet Loss),以訓練高質量的 embedding 模型。此外,通過設置閾值增量序列結合層次聚類原理執行分層聚類,從而增強算法的魯棒性、效率和穩定性。與原始算法相比,這種組合方法僅使用 50%原始數據量,能夠獲得顯著優越的結果。3.1.3 Prompt 質量利用 LLMs 開發了一個自動提示質量評估框架。訓練數據。受到ArenaHard評估系統[47]的啟發,利用基于LLM的成對判斷機制來構建訓練數據集。具體來說,最初采用第3.1.1節中概述的分類模型將指令分類為 20 個不同的桶。每個桶隨機選擇 30 條作為數據錨點。隨后,桶內的其他數據與錨點配對,并采用多個LLMs作為評估器。評估過程考慮四個維度:清晰度、實用性、復雜性和新穎性(Clarity, Practicality, Complexity, Novelty),使用評分系統進行成對比較。最終聚合多個錨點的評分結果為示例分配最終質量標簽。質量評分模型。考慮到性能和效率,使用上述訓練數據對Baichuan2-7B [9]基礎模型進行微調,以開發最終的提示評分模型Quality-7B。通過對200個評估樣本的測試,Quality-7B模型的評分準確性顯著超過GPT-4。3.2 Response 構造人工注釋+拒絕采樣。采用不同尺寸模型和不同生成策略,對同一提示的多個響應進行采樣。這些響應會根據類型標簽自動分配給專門的注釋器進行偏好排序。使用獎勵模型或LLM作為評估器預過濾響應,形成具有分級質量區別的響應集,以收集足夠豐富的偏好順序。當最佳答案不能滿足既定標準時,要求注釋者修改答案,從而構建高質量的SFT和偏好數據集。人機協同標注。使用LLM評估作為輔助信息來提高響應修改速度和質量。有時,要求評估人員根據采樣的數據子集編譯出一組質量缺陷,然后使用LLM進行缺陷挖掘和自動重寫。標注過程積累了很多有用的技術,任何利用LLM提高標注效率的嘗試方法都有增益。指令回譯。對于專業知識或創造力任務,受[49]的啟發,首先,收集大量高質量的文案、范文和好評帖子,再使用文本質量模型過濾高質量文本,最后,合成高質量的提示-響應對,反向翻譯生成相應的創意指令。個性化。對于同一提示,個人可能會表現出不同的答案風格偏好:有些人喜歡簡潔直接的答案,另一些人則喜歡詳細而結構化的回答。通過將不同響應風格描述合并到提示中,減輕了風格偏好沖突并增強了模型的風格適應性。此外,有關安全性、及時性、模型功能的提示很容易導致過度拒絕。通過嚴格控制拒絕比例,并將拒絕約束納入系統提示解決這個問題。3.3 偏好數據高數據質量和多樣性對于RLHF數據集也很重要。執行類似于第3.1節的數據過濾管道,以獲得高質量和多樣化的提示集合及其偏好數據集的標簽。此外,使用分類標簽過濾簡單、時間敏感、無意義或超出能力的任務提示。由于注釋者語言限制,只保留中英文提示。對于數據標注,參考并改進了 Llama 2[82]的流程管道。使用前 3 個最先進的模型對每個提示抽取 5 個響應樣本。模型生成設置 T?e?m?p?e?r?a?t?u?r?e=1,T?o?p?P=0.99,T?o?p?K=50。為了進一步增加數據多樣性并過濾模型已經很好回答的提示,使用 rouge[54] rule based 過濾器粗略過濾相似響應。對于不同的任務集,開發名為 AutoRator 的LLM-as-Judge[102]提示評估響應分數。綜上所述,判斷流程中使用的 AutoRator 分為三種類型:絕對分數:判斷開放響應任務(如寫作、OpenQA 等)的絕對評估分數。成對比較:判斷兩個響應是否具有相似思路,同樣的結果。對于有具體答案的任務,如數學、推理。黃金答案:對于有黃金答案的數據集,判斷相對于黃金答案的絕對評估分數。AutoRator 評估后,所有高分響應或相似評分響應提示都會被刪除,剩余數據發送給注釋者。對于一些有黃金答案的數學和推理數據,LLM-as-Judge分數已經足夠好,可以直接使用。在進行標注時,對于每組回復,不僅要求標注者打出自己喜歡的順序,還要求標注者對有用性、書寫流暢性和安全性進行絕對感覺評分。為了確保良好的注釋質量并供將來使用,要求注釋者突出顯示錯誤部分,并在響應存在事實錯誤或邏輯錯誤時添加有關錯誤注釋。如果提示的所有響應都獲得較低的絕對注釋分數,則被發送到3.2節描述的響應修改過程。由于大部分標注數據都是中文,增加其他語言的額外開源數據集,包括 hh-rlhf[7]、Helpsteer2[86]、UltraFeedback[21]和 SHP[28]。4 關鍵能力4.1 Instruction Following (IF)如圖5所示。指令遵循主要包括復雜系統消息構建、指令約束擴展、響應逆轉和教科書學習。系統消息(System Message)。一方面,從真實用戶日志和開源數據收集直接系統消息,進一步將它們分解為任務描述、工作流程、輸出規范、約束和初始語句。另一方面,從廣泛的多輪對話中提取具有復雜約束和要求的樣本,利用LLMs提取并合成相似組件。隨后,采用聚類和過濾技術獲得各種約束描述和其他組件池。將原始提示與約束無縫集成。同時,精心選擇系統消息的其余組成部分,并將約束提示嵌入到合適位置,伴隨著進化學習和約束合理化步驟。這個過程會重復多次,經過最后的過濾步驟,消除不合理系統消息,形成一個全面的系統提示數據庫(確保系統消息涵蓋多種任務類型,例如角色扮演、函數調用和安全性。還確保約束描述和任務描述的緊密集成,以及數據的整體高質量)。約束指令擴展(Constraint Instruction Expansion)。添加約束構建復雜指令已被證明可以增強IF能力[76,25,33,92]。如圖5(b)所示。借鑒之前的工作[99],利用LLMs從大量提示中分解、聚類和合成 30 多種約束類型。隨機采樣驗證約束類型覆蓋率達到90%,并獲得了每種約束對應的豐富描述。隨后,采用多個LLMs增加原始提示約束的復雜性。這個過程涉及詳細的提示工程指導,以確保LLMs選擇與提示相匹配的約束描述,重點關注約束類型的合理性、表達靈活性以及基于提示質量分數的過濾。最后,使用單獨的LLM作為驗證器選擇高質量、約束豐富的指令。響應逆轉(Response Reversal)。復雜指令的對齊提出了兩個關鍵挑戰:(1)包含多重約束的高質量提示稀缺且缺乏多樣性。(2)難以產生嚴格遵循這些提示的響應。互聯網上存在大量高質量的自然語言文本,利用這些文本的固有屬性作為生成指令的約束條件,即可大規模創建具有多重約束的高質量提示-響應對。為了解決這個問題,開發一個響應逆轉pipeline,如圖5(c) 所示。首先,采用質量評分模型進行質量過濾,從知識豐富的網頁段落中提取高質量文本。接下來,使用此高質量文本作為響應,并要求LLM生成相應的提示,并將響應的固有屬性合并為提示約束。最后, LLM評估生成的提示質量,打分,并提供改進建議。迭代此過程,直到響應中存在的所有約束都完全封裝在提示中。教科書(Textbook)。為了增強模型對復雜指令的理解能力,提出一種教學模仿方法。明確關注學習指令的意圖、思維過程、類比推理和對齊原則。具體來說,對于復雜指令,利用LLMs生成與提示高度一致的響應,如圖5(d) 所示。例如,當任務是理解指令時,可能會提示模型“解釋如何理解指令,從專業性、復雜性和輸出限制等多個維度分析其細節和挑戰。”或者,引導LLMs闡明解決方案背后的思維過程(例如,詳細闡述解決方案背后的推理過程,包括相關領域知識、推理方法和常見陷阱,特別關注錯誤的推理路徑和容易被忽視的輸出約束,如格式、風格、語氣、長度和字數限制。)另外,諸如“你需要從給定的例子xx中學習推理技巧和背景知識。”這些提示輸入LLM,可以賦予LLM泛化和適應不同任務場景的能力。還教授了一些對齊原則(如“盡可能避免使用技術術語或復雜表達方式”、“考慮用戶的情緒狀態”)。這些方法確保了LLM對復雜指令的更深入理解和穩健應用,從而增強了模型概括和適應不同教學要求的能力。4.2 MathPrompt Collection。平衡各難度級別的數學指令,如在小學、初中、高中和大學各個級別進行均勻抽樣。此外,使用更細粒度標準 – “知識點”,在每個級別選擇問題以均勻覆蓋 1,000 多個不同的知識點。優先考慮可以解決問題的樣本(通常包含更全面的步驟)。Response Generation。在許多解決數學問題的數據集中,提供的答案通常缺乏詳細的步驟。手動標注是一種常見的方法,但是,一些中間步驟可能會被忽略。盡管如此,這些步驟對于模型訓練很重要。通過利用LLM結合提示和標準答案,生成詳細的解決方案,并根據參保持一致的風格。這種方法通過詳細的步驟合成了大量的數學對齊數據,顯著增強了模型的數學能力。直接生成的答案通常很難匹配正確答案,因此提供參和步驟有助于模型將其豐富為連貫的推理鏈。實驗發現參可以顯著提高生成答案質量。然而,由于參可能包含錯誤,指示模型參正確率只有 95% 。這種方法減少了基于潛在錯誤參考的錯誤推論。最后,進行后處理以控制響應生成質量(如確保未明確提及參的存在)。4.3 Reasoning收集的推理數據類別如下:常識推理:涉及時間換算、時區計算、排序、路線規劃、日期推理、幾何空間推理、家庭關系判斷等;命題假設:包括演繹推理、歸納推理、反證陳述;關系判斷:涵蓋包含/蘊涵關系、因果關系、對立關系、中立關系、類比推理等;多步推理:包括并行推理、串行推理、鏈式推理、樹推理以及推理鏈攻擊。博弈論:囚徒困境、鷹鴿博弈等經典問題;破壞性問題:涉及引入破壞性條件來測試推理能力;反事實推理:涉及同一個人的場景,將不相關的個人聯系起來,顛倒因果關系,將字面上相關但因果上不相關的聯系起來,并探索科學上難以置信的情況。數據收集。開源數據中提供參可以顯著提高數據質量。邏輯推理任務對數據質量特別敏感,需要手動檢查響應風格和準確性。一些任務(如復雜的數值序列問題)對當前LLM提出了相當大的挑戰。這些任務通常涉及探索各種解決方案。如果手動標記的數據僅提供正確的答案,而不包括對不同解決方法的探索,則可能會產生負面影響。推理CoT。為了增強模型的推理能力,通過思維鏈提示增強指令調整數據[88,43,17]。該技術鼓勵模型將復雜問題分解為逐步推理過程。推理反思。有時LLMs會由于推理缺陷和自我糾正能力有限而產生錯誤答案。為了增強模型反映和糾正錯誤的能力,實施一種策略來識別錯誤響應,提供參讓LLMs重寫這些數據[2,75,60]。數據分布。邏輯推理訓練集中各難度數據應該如何分布?實驗得到了一些結論,如減少簡單數據比例可以提高模型性能,但如果減少過多則會產生負面影響。長尾謬誤理解。考慮涉及誤導性信息、不正確前提和故意模糊的推理問題。現有研究表明,當前的邏輯推理數據集并不能充分覆蓋這些長尾問題,這表明“弱智吧”數據可以增強模型的邏輯推理能力[51]。從互聯網收集更廣泛的“弱智吧”用戶問題仔細選擇和標記,以創建高質量的邏輯推理數據集。4.4 Code代碼類指令,類別分類如下:代碼生成,其中查詢采用自然語言,響應包含代碼;代碼完成,具有帶空格的部分代碼段;代碼調試,涉及提供代碼中的錯誤識別和糾正;代碼解釋,需要總結給定代碼的功能或流程;代碼知識問答,涉及常見的編碼知識。代碼類指令,難度分類如下:簡單,對于用基礎知識即可解決的小代碼問題;中等,針對需要高級知識和分析時間的更復雜問題;困難,對于需要深入算法理解和大量調試的大型復雜代碼;非常困難,需要專業知識、大量努力,還可能需要深入研究。代碼知識問答本質上是常識性提問,并不能增強編碼技能,所以進行了降采樣。被歸類為“非常困難”的數據通常需要超出模型能力的知識或廣泛的上下文才能解決,這使它容易產生幻覺,并且人類難以監督驗證,因此丟棄此類數據。最后,平衡不同編程語言的數據比例。Prompt Collection。最初的代碼相關提示來源多樣,包括代碼相關網站和開源數據集。對于提示回復,根據幾個標準驗證:一致性,檢查代碼塊和公式格式,確保正確縮進并包含必要的注釋;正確性,確保響應符合提示要求,例如使用指定的編程語言并提供所需示例,同時還評估解決方案的準確性和完整性,包括邊界情況討論;質量,評估響應是否提供了詳細的問題背景描述、解決方案的清晰解釋以及代碼后的進一步解釋或總結。Multi-turn。受 WizardCoder [59]啟發,利用LLMs在現有單輪問答基礎上生成一個新問題。這個新問題:1)以原問題為基礎,增加難度和深度,2)確保它具有現實意義,并且與第一輪問答相關。獲得新問題后再使用 LLMs推理答案。有趣的是,人類對第二輪問答的評估表明,后續問答通常比最初的答案更有用,這表明多輪對話更有效。4.5 Tool-using本節概述增強LLM通用工具使用和代碼解釋能力的方法。General Tool-using。模擬不同場景,合成通用的工具使用數據,包括單工具、單回合交互和多工具、多回合交互。在單工具場景中,重點是確定何時調用工具并通過理解上下文和格式化輸入以獲得所需結果來正確構建參數。在更復雜的多工具場景中,模型必須為用戶查詢選擇最佳工具,管理順序和并行工具調用,并協調多個工具獲得一致結果。這需要了解工具依賴性和功能,根據中間結果動態調整策略,并在輸出不符合預期時診斷問題。為了提高模型區分相似工具的能力,生成現有工具的變體,使模型能夠學習細微差別,并改進不同環境下選擇和使用工具的決策。Code Interpreter。在開發代碼解釋器能力時,重點關注編碼技能和解釋能力。為了提高編碼能力,主要利用 Jupyter Notebooks 和開源 Python 代碼數據。Jupyter 中的結構化數據(包括文本、代碼和執行結果)與多輪編碼提問、響應+執行結果場景非常吻合。實驗發現,在預訓練階段增加 Jupyter 數據比例可以提高模型在 Python 編碼、代碼解釋和工具使用方面的熟練程度。對于開源Python數據,設置Python Jupyter Notebook沙箱環境執行LLM生成的代碼,選擇運行無錯誤的輸出。為了構建調試功能,對沙箱執行中發生的錯誤進行分類,以識別真正的編碼問題錯誤。提示LLM反思完整的錯誤消息并相應地修改代碼,從而教會模型學習調試技能。對于解讀能力,重點關注數據分析和文件閱讀能力。為了解決涉及Excel、CSV、JSON和Markdown文件上傳的場景問題,使用LLM模擬用戶、問題解決者和驗證者的角色。使用 Pandas 和 Scikit-learn 等庫對主要任務進行分類,例如摘要、統計、圖表生成和機器學習。LLM作為用戶,將任務隨機組合并組織成連貫的請求。然后,問題解決者將這些任務分解為子任務,并在 Jupyter 沙箱中使用 Python 代碼解決每個子任務。驗證者檢查每個執行步驟,如有必要,使用DFS方法恢復到先前的步驟,直到完成。數據集均經過手動驗證。任務的多樣性帶來了廣泛的結果,平均對話 12 輪,超過 2000 個tokens。END點擊下方名片即刻關注我們
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
暫無評論...