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