從PPO到GRPO:算力減半的大模型推理能力訓練革命 原創(chuàng) 精華
編者按: 還在為訓練推理模型燒光算力預算而發(fā)愁?當開源小模型遇上數學題就“智商掉線”,如何低成本突破性能瓶頸?
傳統(tǒng) RLHF 動輒百萬級算力投入,讓多少團隊在強化學習門前望而卻步;格式混亂、邏輯斷層、答案偏差——這些模型推理的頑疾是否也在阻礙你的 AI 產品落地?
本文深入解析 DeepSeek 團隊突破性的 GRPO(群組相對策略優(yōu)化)技術,這項創(chuàng)新將強化學習所需計算資源幾乎減半,甚至可以結合 LoRA 在普通消費級 GPU 上進行模型訓練。作者通過親身實踐,成功在僅需 16GB 顯存的環(huán)境下將 1B 參數的 Llama 3.2 轉化為推理模型(后續(xù)文章會分享相關細節(jié)),完全顛覆了傳統(tǒng)強化學習的資源需求認知。
作者 | Greg Schoeninger
編譯 | 岳揚
不久前,我們深入研究了 DeepSeek-R1 背后的技術原理,但是沒有詳細介紹其訓練流程中采用的一項名為"群組相對策略優(yōu)化"(Group Relative Policy Optimization, GRPO)的關鍵技術。
GRPO 本質上是一種旨在提升模型推理能力的強化學習算法。該技術最早發(fā)表于其研究論文《DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models》[1],隨后也被應用于 DeepSeek-R1 的后訓練階段。
在《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》這一論文[2]中,研究團隊詳細闡述了從基礎預訓練語言模型到最終推理模型的完整構建路徑。雖然之前我們未深入探討 GRPO 的數學原理和代碼實現(xiàn),但今天這篇文章將全面解析 GRPO 的技術細節(jié),助力各位讀者掌握這項技術的核心要義并應用于實際工作。
01 要點回顧:DeepSeek-R1如何運用GRPO技術
為幫助理解,我們首先梳理從基礎模型到推理模型的完整訓練流程。該流程通過監(jiān)督式微調(SFT)與群組相對策略優(yōu)化(GRPO)的交替迭代實現(xiàn)模型能力躍升:
1.監(jiān)督式微調(SFT)階段
a.冷啟動訓練:采用數千條人工標注的高質量數據微調模型
b.數據驗證:所有樣本均通過人工審核確保可靠性
2.GRPO 強化學習階段
a.推理軌跡訓練:引導模型生成結構化推理過程(具有標簽的推理軌跡)
b.三重確定性獎勵:基于格式規(guī)范性、邏輯一致性、答案正確性設計獎勵機制
3.增強型 SFT 階段
a.合成數據生成:創(chuàng)建 80 萬條合成訓練樣本并進行篩選
b.模型自檢過濾:通過"LLM As A Judge"機制剔除錯誤響應
4.最終 GRPO 對齊階段
a.價值觀校準:確保模型輸出兼具實用性與安全性
在這篇文章中,我們將深入探討 GRPO 的細節(jié),助您掌握這項推動大模型推理能力突破的關鍵技術。筆者已開展基于 GRPO 的小模型訓練實驗,后續(xù)將發(fā)布完整代碼與工程實踐細節(jié),通過可復現(xiàn)案例串聯(lián)理論知識與實際應用。
02 為什么 GRPO 很重要?
TLDR ~ 大幅降低了計算需求且簡化了強化學習流程。與 ChatGPT(PPO)使用的基于人類反饋的強化學習(RLHF)相比,所需的計算資源幾乎減半。當你結合 LoRA 使用時,即使“GPU poor”(譯者注:GPU 的性能不足)也能進行強化學習訓練。我試過了,確實有效。我成功地將 1B 參數的 Llama 3.2 模型改造成了僅需 16GB 顯存的推理模型。后續(xù)文章會分享代碼和硬件要求細節(jié)。
我們只需在云 GPU 服務上花不到 100 美元,就能從自家車庫訓練推理模型。如果用自己的硬件跑小模型,基本上算是"免費"。其底層原理是什么呢?下一節(jié)將討論從 PPO 到 GRPO 的演變過程。
03 從 PPO 到 GRPO
傳聞 ChatGPT 背后的強化學習(RL)技術是 PPO(Proximal Policy Optimization,近端策略優(yōu)化)。該流程在 InstructGPT 論文[3]中被提出,用于創(chuàng)建能夠遵循指令而不僅僅是簡單預測下一個單詞的模型。
訓練過程需要收集大量標注數據。對于給定的用戶查詢,模型需生成多個候選響應,然后由人類或 AI 在循環(huán)中對輸出進行標注并按質量從優(yōu)到劣排序。這些數據可用于訓練“獎勵模型”,其職責是為新接收的提示詞計算“獎勵值”。該獎勵值應體現(xiàn)給定用戶查詢下模型響應的優(yōu)劣程度。
收集完所有這些經過排序和標注的數據后,即可啟動 PPO 來訓練大語言模型(LLM)。
問題在于 PPO 的訓練成本可能非常高昂。 GRPO 論文[1]中的相關圖表展示了 PPO 和 GRPO 過程中涉及的不同 LLM。下方藍色和黃色方框中共有 4 個不同的 LLM。
為了幫助大家理解上圖的一些術語,我在這里給出了一些簡單的定義:
- 策略模型(Policy Model)- 對當前正在訓練的 LLM 的別稱
- 參考模型(Reference Model)- 被訓練原始 LLM 的凍結版本
- 獎勵模型(Reward Model)- 基于人類偏好訓練的模型(來自上文提到的 InstructGPT 技術)
- 價值模型(Value Model)- 試圖估算特定動作長期獎勵的模型
04 通過 GRPO 減少內存使用量
在 PPO 算法中,策略模型和價值模型都包含需要通過反向傳播進行優(yōu)化的可訓練參數。反向傳播過程需要消耗大量內存資源。 從上面的架構圖可以看出,GRPO 算法移除了價值模型模塊。
PPO 算法中混合使用了 4 個大語言模型(LLMs),這些模型都需要消耗大量的內存和計算資源。其中價值模型和獎勵模型的參數量通常與正在訓練的目標語言模型相當。參考模型通常是訓練初期的語言模型的凍結副本。
這種實現(xiàn)方法不僅帶來高昂的計算成本,還存在諸多需要協(xié)調的動態(tài)組件,而且還有多個模型需要優(yōu)化。組件數量越多,通常意味著優(yōu)化難度越大。GRPO 通過精簡架構有效降低了系統(tǒng)復雜度。
出于興趣,我在 H100 上測試了不同參數規(guī)模的模型,觀察使用 GRPO 進行微調的難易程度。
如果想了解具體技術細節(jié),可以查閱相關文檔:
??https://www.oxen.ai/blog/grpo-vram-requirements-for-the-gpu-poor??
若您理解了所有系統(tǒng)需求的來源,就可以開始參與開源項目貢獻,或像我最近看到的 trl 倉庫的這個 PR 那樣,動手優(yōu)化自己的機器學習庫:
05 群組相對優(yōu)勢(Group Relative Advantages)
在強化學習過程中,我們從語言模型(LLMs)中獲取的主要信號是代表"優(yōu)勢"(Advantage)的"A"。這個信號為更新原始語言模型的權重提供了方向指導:當優(yōu)勢值較高時,我們需要鼓勵模型重復當前行為;當優(yōu)勢值較低時,則需要引導模型嘗試不同的行為。
在 PPO 算法中,傳統(tǒng)價值模型的核心任務是評估生成內容的質量,或者說預測這些內容獲得高獎勵值(high reward)的可能性。為了完成這項評估工作,需要訓練大語言模型作為價值判斷模塊。那么 GRPO 是如何擺脫對價值模型的依賴的呢?
第一個技巧是:GRPO 不再針對單個查詢生成單一輸出,而是開始生成多個候選回答。
具體來說,如果問題是一道數學題,模型可能會嘗試幾種不同的解題方法。以下面這個數學問題為例:
Mr. Curtis has 325 chickens on his farm where 28 are roosters and the rest are hens. Twenty hens do not lay eggs while the rest of the hens do. How many egg-laying hens does Mr. Curtis have on his farm?
Curtis 先生的農場有 325 只雞,其中 28 只是公雞,其余是母雞。其中有 20 只母雞不下蛋,問有多少只產蛋母雞?
模型可能會嘗試多種解題思路,有的正確(答案為 227),有的不正確(答案為 305)。
正確推理路徑:
First, let's find out how many hens there are. The total number of chickens is 325, and 28 are roosters. So, the number of hens is 325 - 28 = 297. Of these 297 hens, 20 do not lay eggs, so the number of egg-laying hens is 297 - 20 = 277.
277
首先,我們來看看有多少只母雞。雞的總數是 325 只,公雞有 28 只。因此,母雞的數量是 325 - 28 = 297。在這 297 只母雞中,有 20 只不下蛋,所以下蛋母雞的數量是 297 - 20 = 277。
277
錯誤推理路徑:
You need to subtract the 20 hens that do not lay eggs from the total number of hens to find the number of egg-laying hens. So, the number of egg-laying hens is 325 - 20 = 305.
305
您需要從母雞總數中減去不下蛋的 20 只母雞,才能求出下蛋母雞的數量。因此,產蛋雞的數量為 325 - 20 = 305。
305
然后我們對每個輸出根據其回答質量計算"獎勵值"(reward)。可能存在多個評估不同響應屬性的獎勵函數。我們暫時將獎勵函數視為黑盒,但知道它們會返回數值型結果——如果響應質量較好則數值較高,較差則較低,例如:
- Formatting(格式規(guī)范度)=1.0
- Answer(答案正確性)=0.0
- Consistency(邏輯一致性)=0.5
當獲得所有輸出的獎勵值 (r) 后,GRPO 通過計算獎勵值的均值 μ 和標準差 σ,生成群組相對優(yōu)勢 A。具體公式為:
這個公式在機器學習特征工程中非常實用,它可以將任意數值歸一化為更易學習的正負信號。 其直觀含義是:“這個數據點偏離平均值多少個標準差?”
讓我們來看幾個例子。
若用原生 numpy 代碼表示可能如下:
再試另一組數值:
通過歸一化,將獎勵值轉換為以均值為中心(0.0)的相對優(yōu)勢值。正值表示優(yōu)于平均水平,負值表示劣于平均水平。這為我們建立了一套基準:“給定當前提示詞,平均響應的質量如何?”在訓練過程中,強化表現(xiàn)好的輸出(提高其概率),抑制表現(xiàn)差的輸出(降低其概率),從而引導模型優(yōu)化方向。
這與傳統(tǒng)價值模型的目標相似:預測給定響應的獎勵值。由于我們現(xiàn)在訓練的是語言模型,只需調整 temperature 參數即可生成多個候選回答,所有生成回答的平均獎勵值即可作為衡量當前模型表現(xiàn)的良好信號,以及決定是否需要強化該行為。
06 KL 散度
這個方程的最后一項是 KL 散度項。
無需深入數學細節(jié),這就是我們在訓練過程中始終保留"參考模型"的原因。我們不希望新模型偏離原始模型太遠,對于每個詞元(token),都要確保新模型的預測結果不會與原始模型的預測結果產生過大偏差。
強制執(zhí)行 KL 散度的直接原因是:初始模型已經具備生成連貫語句和遵循指令的能力。我們不希望新模型通過"獎勵欺騙"(reward hack)或利用獎勵信號中某些與原始模型不匹配的特性來取巧。例如,如果模型發(fā)現(xiàn)使用"pamplemousse"(葡萄柚的法語,發(fā)音有趣且較罕見)這個詞能獲得高獎勵,但該詞在預訓練階段并不常用,我們就要阻止模型過度依賴這種用詞行為。
將這些要素整合,就得到了完整的最終方程!
或者就像我們值得信賴的"牛人 Eric"說的那樣… 這個數學公式看起來比實際復雜…
07 獎勵信號機制
DeepSeek-R1-Zero 研究的突破性在于,他們通過完全棄用"神經獎勵模型"進一步大幅降低了內存消耗。
這意味著什么?簡而言之,他們直接使用正則表達式(regex)和字符串匹配技術生成獎勵信號。研究團隊認為,這種方法既能規(guī)避"獎勵欺騙"(reward hacking)問題,又能簡化整個訓練流程。
如果將前文提到的“準確性獎勵(Accuracy Rewards)”和“格式獎勵(Format Rewards)”規(guī)則轉化為代碼,其代碼實現(xiàn)可能如下所示:
reference:
??https://gist.github.com/willccbb/4676755236bb08cab5f4e54a0475d6fb??
訓練過程中完全無需引入額外的獎勵模型 LLM,僅需保留策略模型和參考模型作為主要內存占用源。將所需 LLM 數量從 4 個削減至 2 個,顯著降低了 GPU 資源需求。
若你的直覺此時感到不對勁,質疑“這種獎勵函數是否具備泛化能力?”,那么你是對的。這類獎勵機制僅在預設的特定任務(如數學推理和格式規(guī)范)上表現(xiàn)良好,但無法擴展到其他實用場景。 例如,模型可能擅長生成格式的數學解題過程,卻無法完成開放式對話或創(chuàng)意寫作。
我的預測是"苦澀的教訓"(The Bitter Lesson)[4]將在此重現(xiàn):當計算資源和數據量足夠時,模型更傾向于自主學習。我們越是減少人工編碼規(guī)則,讓模型自主探索,其表現(xiàn)就越優(yōu)異。當前 GRPO 的獎勵機制仍顯人工干預痕跡 —— 為何不讓模型自行學習獎勵信號的權重呢?
盡管如此,嘗試不同的獎勵機制其實挺有意思的。GRPO 的亮點在于: 只要能用代碼定義獎勵函數(輸入響應、輸出數值),即可基于此進行優(yōu)化。甚至可以通過外部 API 調用其他 LLM 生成獎勵信號。 我預感未來幾周/月內,因為 GRPO 訓練門檻的降低,開發(fā)者將開始探索各種創(chuàng)意獎勵機制的設計。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
END
本期互動內容 ??
?對于文中提到的“不到100美元訓練推理模型”,你有何看法?歡迎在評論區(qū)暢所欲言。
??文中鏈接??
[1]??https://arxiv.org/abs/2402.03300??
[2]??https://arxiv.org/abs/2501.12948??
[3]??https://arxiv.org/abs/2203.02155??
[4]??http://www.incompleteideas.net/IncIdeas/BitterLesson.html??
原文鏈接:
??https://ghost.oxen.ai/why-grpo-is-important-and-how-it-works/??
