寫在前面
最近正好在關注ChatGPT,所以對目前開源的包括ChatGPT全流程訓練代碼的項目做了一個整理。文章包括三部分內容:
- ChatGPT 開源項目匯總表格
- 介紹 ChatGPT 訓練的思路
- 介紹每一個開源的項目的情況
閱讀時間預估需要10min。
1. ChatGPT 開源項目匯總表格
下面是根據 star 數量進行排序的 ChatGPT 開源項目匯總,希望詳細了解的開源項目可以通過目錄進行跳轉。

2. ChatGPT 全訓練流程介紹
ChatGPT 完整訓練包括三個流程:
- Supervised FineTune(SFT):使用人工編寫的期望模型如何輸出的數據集,對GPT-3進行微調
- Reward Model(RM):使用人工標注的排序數據,訓練獎勵模型,預測人類更喜歡哪個輸出
- 強化學習微調 SFT:使用獎勵模型作為強化學習優化目標,微調SFT模型
各個環節的一些訓練細節:
-
SFT:
- GPT-3 175B 架構
- 訓練16epoch
- 殘差dropout 0.2
- 1.3B和6B用32的bs+9.65e-6的lr
- 175B用8bs+5.03e-6lr
-
RM:
- 模型輸入是(prompt,response),輸出是打分
- GPT-3 6B 架構(175B會不穩定),最后一層替換成輸出一個標量
- 損失函數:最大化好回答和壞回答pair的得分差異
-
RL:
- GPT-3的模型結構
- 訓練2個epoch
- 混合了10%的預訓練數據
- 為了不要學的太偏:增加模型之間的KL距離作為優化目標
- 為了不降低通用性:增加通用NLP任務的性能作為優化目標
各個環節需要的數據量:
- SFT
- 訓練:標注員 1.1w,用戶 1.4k
- 驗證:標注員 1.5k,用戶 103
- RM
- 訓練:標注員 6.6k,用戶 2.66w
- 驗證:標注員 3.49k,用戶 1.44w
- PPO
- 訓練:用戶 3.1w
- 驗證:驗證 1.6w
強化學習在訓練中起到的作用:
- 人類的反饋是的模型生成的結果更偏向人類想要知道的結果,消除一些偏見和負面的信息
- 強化學習只告訴模型結果好不好,但不限制模型如何去變好,可以增加模型的探索能力
下面整理了包括了全流程訓練的開源項目,github 項目整理的 star 信息截止到 2023.2.23,歡迎大家糾正補充
3. TRL - 從頭訓練一個 ChatGPT 模型
https://github.com/lvwerra/trl[1]
Star 1.7k, Fork 180,代碼更新 一天前,issue 13open 60 close
第一步:用 codeparrot 數據訓練 GPT-2 124.2M 模型
- 和 chatgpt 的區別在于,chatgpt 是微調已經預訓練好的,這個是從頭訓練
- 數據路徑為https://huggingface.co/codeparrot/codeparrot[2]
- 數據含義:輸入一行代碼,輸出補全的代碼
第二步:用sentiment訓練獎勵模型,模型用的是distilbert
- 數據路徑https://ai.stanford.edu/~amaas/data/sentiment/[3]
- 數據含義:輸入影評,輸出得分(積極1,消極0)
第三步:RL訓練
整體介紹文章:萬字長文教你如何做出 ChatGPT
4. RLHF - transformers_tasks
https://github.com/HarderThenHarder/transformers_tasks/tree/main/RLHF[4]
Star 274,Fork 51,更新 五天前, Issue 1 open 16 closed
基于上面的TRL做的;
增加了基于人工打分的Reward模型訓練,還提供了Reward數據的標注平臺;
RM 模型訓練:基于 ernie-3.0-base-zh 繼續訓練的;
RL 訓練:
- RM:用的一個現成的情感分類模型,roberta-base-fintuned-jd-binary-chinese
- 生成模型:用的gpt2-chinese-cluecorpussmall
目前 RM 和 RL 兩個是獨立的訓練,不支持把訓練好的 RM 模型放到 RL 里面去加載
文章介紹:【AI】想訓練ChatGPT?得先弄明白Reward Model怎么訓(附源碼)
5. OpenAssistant
https://github.com/LAION-AI/Open-Assistant[5]
Star 16.8k,Fork 1.3k,Issue 308open,535closed,代碼更新三天前
文檔:https://projects.laion.ai/Open-Assistant/docs/intro[6]
在huggingface上面的模型:OpenAssistant (OpenAssistant)[7]
數據格式介紹:https://github.com/LAION-AI/Open-Assistant/blob/363a3a124471217e723d57b084122ae1ca41ab2a/notebooks/data-augmentation/stackexchange-builder/README.md[8]
是LAION機構開源的,全稱為 Large-scale Artificial Intelligence Open Network,是一個非盈利的機器學習研究機構,致力于為公眾提供 AI 模型、數據集和開源代碼。
Stable Diffusion用的開放數據集,就是LAION-AI組織做的。
RL 訓練部分用到了即將要介紹的 trlX庫
有網絡訓練絲滑如水,沒有網絡訓練懷疑人生...
文檔里下載 OA 那一段沒有寫太清楚,不知道去哪里下載
整體使用下來,這個庫是目前訓練下來最順利的,庫的代碼也看起來最規范,文檔支持也比較多的。
這里是全流程的訓練指南:yuannnn:Open Assistant 全流程訓練細節(GPT3+RL)[9]
文章介紹:https://mp.weixin.qq.com/s/qg5H6hBDMfrAeVF1Ia9CVA
6.trlX - CarperAI
https://github.com/CarperAI/trlx[10]
Star 2k, Fork 183, Issue 59open 95closed, 代碼更新 6小時前
CarperAI 是EleutherAI研究小組的一個新實驗室,其任務是“通過強化學習提高大型語言模型 (LLM) 的性能和安全性?!?CarperAI 開源了 Transformer Reinforcement Learning X (trlX),這是一個使用 RLHF 微調 HuggingFace 語言模型的框架。
7.PaLM-rlhf-pytorch - Phil Wang
GitHub - lucidrains/PaLM-rlhf-pytorch: Implementation of RLHF (Reinforcement Learning with Human Feedback) on top of the PaLM architecture. Basically ChatGPT but with PaLM[11]
star 5.4k,Fork 412,Issue 8open 16 close,代碼更新 4小時前
以Imagen和Make-A-Video等深度學習研究模型的開源實現而聞名的 AI 開發人員 Phil Wang分享了他正在為PaLM語言模型(稱為 PaLM + RLHF)實施 RLHF 的工作。
其中,PaLM(Pathways Language Model)是谷歌在今年4月發布的5400億參數全能大模型,基于Pathways系統訓練,BERT之父Jacob Devlin為主要貢獻者之一。
但是第一步的訓練,這個項目中只有PaLM架構和代碼,沒有預先訓練好的權重。所以還得自己重新訓練一個。
8. ChatRWKV
https://github.com/BlinkDL/RWKV-LM[12]
Star 1.8k,Fork 182,Issue 7open 16closed,代碼更新 7小時前
用 RWKV 架構(不是transformer結構)訓練的chatgpt
開源了 14B 的模型,可以在 hugging face上面試用:Rwkv 14b - a Hugging Face Space by yahma[13]
支持分布式訓練,感謝@PENG Bo[14]糾正
文章介紹:PENG Bo:參與 ChatRWKV 項目,做開源 ChatGPT(可以在每個人電腦和手機直接運行的)[15]
9. RL4LMs
https://github.com/allenai/RL4LMs[16]
Star 971,Fork 87,Issue 20open 7closed,代碼更新一個月之前
這個庫包括了比較多 RL 算法(PPO,NLPO,A2C和TRPO),它論文說在 2000 個實驗里做了 RL 在 LLM 上面的訓練。RL4LMs當前的計劃包括分布式訓練更大的模型和新的RL算法。
包括了多種語義度量(例如:BERTSCORE、BLEURT)
包括了多種任務特定指標(例如:PARENT、CIDER、SPICE)
包括了多種詞法指標(例如:ROUGE、BLEU、SacreBLEU、METEOR)
包括了6種常見的 LLM 任務。
論文:https://arxiv.org/abs/2210.01241[17]
10. ColossalAI ChatGPT
https://github.com/hpcaitech/ColossalAI/tree/main/applications/ChatGPT[18]
Star 15.5k, Fork 1.6k,代碼更新 一天前,issue 212open 337close
訓練 Reward 模型的 rm-static 數據
- 該數據包括同一個 prompt 的不同 response 的選擇和拒絕的標簽
- https://huggingface.co/datasets/Dahoas/rm-static/tree/main[19]
訓練 Prompt 模型的 awesome-chatgpt-prompts 數據
- 該數據量比較小,大約 100 個prompt
- https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/tree/main[20]
README里面介紹的步驟和chatgpt訓練步驟的對應關系如下:
- train with dummy prompt data: 用隨機生成的數據訓練的第三步驟(RL來fintune sft)
- train with real prompt data: 用真實數據訓練的第三步驟(RL來fintune sft)
- train with reward model:訓練第二步的 reward 模型
目前應該還沒有包括 SFT 的訓練部分。
另外訓練好的 Reward 模型暫時還不支持放到 RL 里面去用,目前作者們正在解決。
感謝作者@BlueRum[21]熱心幫我解決之前遇到的問題,后面更新了以后我會再嘗試一下使用的。
11. Nebullvm
github:https://github.com/nebuly-ai/nebullvm[22]
Star 5.7k, 更新 一天前,Issue 33open,68close
Meta 最近發布了 LLaMA,這是一組包含 7 到 650 億個參數的基礎大型語言模型。LLaMA 正在引起很多興奮,因為它比 GPT-3 更小,但性能更好。
ChatLLaMA可以做到:
- 一個完整的開源實現,使您能夠基于預訓練的 LLaMA 模型構建 ChatGPT 樣式的服務。
- 與原始的 ChatGPT 相比,利用 LLaMA 架構的較小尺寸,訓練過程和單 GPU 推理更快、成本更低。
- ChatLLaMA 內置了對 DeepSpeed ZERO 的支持,以加速微調過程。
- 該庫還支持所有 LLaMA 模型架構(7B、13B、33B、65B),因此您可以根據自己對訓練時間和推理性能的偏好對模型進行微調。
審核編輯 :李倩
-
開源
+關注
關注
3文章
4207瀏覽量
46130 -
語言模型
+關注
關注
0文章
571瀏覽量
11310 -
ChatGPT
+關注
關注
31文章
1598瀏覽量
10264
原文標題:寫在前面
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
CoreLink? SSE-100子系統軟件開發人員勘誤表
2009鋰電池質量監測不合格商品匯總表
無人駕駛航空匯總表顯示:有5759家無人機企業獲取經營許可證
STM32全系列調試接口匯總
ChatGPT的使用方式匯總
ChatGPT以及相關開源項目體驗
ChatGPT了的七個開源項目
ChatGPT開源項目匯總表格
評論