使用 PPO 演演算法進行 RLHF 的 N 步實現細節

2023-11-16 18:01:41

當下,RLHF/ChatGPT 已經變成了一個非常流行的話題。我們正在致力於更多有關 RLHF 的研究,這篇部落格嘗試復現 OpenAI 在 2019 年開源的原始 RLHF 程式碼庫,其倉庫位置位於 openai/lm-human-preferences。儘管它具有 「tensorflow-1.x」 的特性,但 OpenAI 的原始程式碼庫評估和基準測試非常完善,使其成為研究 RLHF 實現工程細節的好地方。

我們的目標是:

  1. 復現 OAI 在風格化任務中的結果,並匹配 openai/lm-human-preferences 的學習曲線。
  2. 提供一個實現細節的清單,類似於 近端優化策略的 37 個實施細節 (The 37 Implementation Details of Proximal Policy Optimization)沒有痛苦折磨的偵錯 RL (Debugging RL, Without the Agonizing Pain) 的風格;
  3. 提供一個易於閱讀且簡潔的 RLHF 參考實現;

這項工作僅適用於以教育/學習為目的的。對於需要更多功能的高階使用者,例如使用 PEFT 執行更大的模型, huggingface/trl 將是一個不錯的選擇。

  • 匹配學習曲線 中,我們展示了我們的主要貢獻: 建立一個程式碼庫,能夠在風格化任務中復現 OAI 的結果,並且與 openai/lm-human-preferences 的學習曲線非常接近地匹配。

  • 然後我們深入探討了與復現 OAI 的工作相關的實現細節。在 總體實現細節 中,我們討論了基本細節,像如何生成獎勵/值和如何生成響應。在 獎勵模型實現細節 中,我們討論了諸如獎勵標準化之類的細節。在 策略訓練實現細節 中,我們討論了拒絕取樣和獎勵「白化」等細節。

  • 接下來,我們檢查了在獎勵標籤由 gpt2-large 生成的情況下,訓練不同基礎模型 (例如 gpt2-xl, falcon-1b) 的效果。

  • 最後,我們通過討論一些限制來總結我們的研究工作。

以下是一些重要連結: