https://github.com/microsoft/DeepSpeedExamples/tree/master/applications/DeepSpeed-Chat
一個快速、負擔得起、可擴展和開放的系統(tǒng)框架,用于實現(xiàn)端到端強化學習人類反饋 (RLHF) 培訓體驗,以生成各種規(guī)模的高質(zhì)量 ChatGPT 樣式模型。
目錄
??最新消息??
??什么是DeepSpeed Chat ???
??特性??
?快速上手?
??訓練效果評估??
??支持的模型??
??DeepSpeed Chat 的路線圖??
1?? 什么是 DeepSpeed Chat ??
本著使 ChatGPT 式模型及其功能民主化的精神,DeepSpeed 自豪地推出了一個通用系統(tǒng)框架,用于為類 ChatGPT 模型提供端到端的培訓體驗,名為 DeepSpeed Chat。它可以自動采用你最喜歡的預訓練大型語言模型,通過 OpenAI InstructGPT 風格的三個階段來生成您自己的高質(zhì)量 ChatGPT 風格模型。DeepSpeed Chat 使類似ChatGPT 風格的模型訓練變得簡單、快速、經(jīng)濟且可擴展。
根據(jù)官方介紹,一鍵運行就可以在 1.36 小時內(nèi)在具有 48GB 內(nèi)存的單個消費級 NVIDIA A6000 GPU 上訓練、生成和提供 13 億參數(shù)的 ChatGPT 模型。在具有 8 個 NVIDIA A100-40G GPU 的單個 DGX 節(jié)點上,DeepSpeed-Chat 可以在 13.6 小時內(nèi)訓練一個 130 億參數(shù)的 ChatGPT 模型。在多 GPU 多節(jié)點系統(tǒng)上,即 8 個 DGX 節(jié)點和 8 個 NVIDIA A100 GPU/節(jié)點,DeepSpeed-Chat 可以在 9 小時內(nèi)訓練出一個 660 億參數(shù)的 ChatGPT 模型。最后,它使訓練速度比現(xiàn)有 RLHF 系統(tǒng)快 15 倍,并且可以處理具有超過 2000 億個參數(shù)的類 ChatGPT 模型的訓練:從這些性能來看,太牛X了,這是現(xiàn)有ChatGPT框架不能完成的壯舉。
除了這個版本之外,DeepSpeed 系統(tǒng)一直自豪地作為系統(tǒng)后端來加速一系列正在進行的快速訓練/微調(diào)聊天風格模型(例如,LLaMA)的工作。以下是一些由 DeepSpeed 提供支持的開源示例:
Databricks Dolly
https://github.com/databrickslabs/dolly
LMFlow
https://github.com/OptimalScale/LMFlow
CarperAI-TRLX
https://github.com/CarperAI/trlx
Huggingface-PEFT
https://github.com/huggingface/peft
2 ?? DeepSpeed Chat 特性??
DeepSpeed Chat 正在快速發(fā)展,可以滿足對訓練/微調(diào)以及服務新興模型的系統(tǒng)級加速并支持不斷增長的需求。
DeepSpeed Chat 的摘要包括:
DeepSpeed Chat:一個完整的端到端三階段 OpenAI InstructGPT 訓練策略,帶有強化學習人類反饋(RLHF),從用戶青睞的預訓練大型語言模型權重生成高質(zhì)量的 ChatGPT 風格模型;
DeepSpeed Hybrid Engine:一種新系統(tǒng),支持各種規(guī)模的快速、經(jīng)濟且可擴展的 RLHF 訓練。它建立在用戶最喜歡的 DeepSpeed 框架功能之上,例如 ZeRO 技術和 DeepSpeed-Inference;
Easy-breezy Training Experience:單個腳本能夠采用預訓練的 Huggingface 模型并通過 RLHF 訓練的所有三個步驟運行它。
對當今類似 ChatGPT 的模型訓練的通用系統(tǒng)支持:DeepSpeed Chat 不僅可以作為基于 3 步指令的 RLHF 管道的系統(tǒng)后端,還可以作為當前單一模型微調(diào)探索(例如,以 LLaMA 為中心的微調(diào))和針對各種模型和場景的通用 RLHF 訓練。
3 ? 快速上手 ?
3.1 ?? Installation
git clone https://github.com/microsoft/DeepSpeed.git
cd DeepSpeed
pip install .
git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r requirements.txt
3.2 ??一鍵完成RLHF三階段訓練并生成ChatGPT模型
?? DeepSpeed-Chat 的 RLHF 示例 1:用喝咖啡的時間類訓練一個1.3B ChatGPT 模型
如果有1-2小時喝咖啡的時間,可以嘗試使用 DeepSpeed-Chat 訓練小型/玩具模型。下面是一個1.3B模型的訓練示例:
python train.py --actor-model facebook/opt-1.3b --reward-model facebook/opt-350m --num-gpus 1
通過 DeepSpeed-Chat 在具有 48GB 內(nèi)存的NVIDIA A6000 GPU 上訓練 13 億參數(shù) ChatGPT 模型的 時間消費如下:
Model Size (A6000-48G)Step 1Step 2Step 3Total
Actor: OPT-1.3B Reward: OPT-350M2900 秒670秒1.2小時2.2小時
?? DeepSpeed-Chat 的 RLHF 示例 2:在單GPU 節(jié)點上為 13B ChatGPT 模型訓練,大約花費半天時間如果有大約半天的時間并且只有一個服務器節(jié)點,官方建議在以下單個腳本中使用預訓練的 OPT-13B 作為actor模型和 OPT-350M 作為獎勵模型的示例來生成最終的 13B ChatGPT模型:
python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --num-gpus 8
在具有 8 個 NVIDIA A100-40G GPU 的 DGX 節(jié)點上通過 DeepSpeed-Chat 訓練 130 億參數(shù) ChatGPT 模型的 時間消費如下:
Model Size (A100-40G)Step 1Step 2Step 3Total
Actor: OPT-13B Reward: OPT-350M2.5hr0.25hr10.8hr13.6hr
?? DeepSpeed-Chat 的 RLHF 示例 3:大型 66B ChatGPT 模型的低預算云訓練想要嘗試不同的型號尺寸和配置嗎?使用DeepSpeed聊天,用戶可以輕松做到這一點。例如,如果您可以訪問多節(jié)點集群或云資源,并且更喜歡為您的研究或業(yè)務訓練一個更大、更高質(zhì)量的模型,可以簡單地使用具有所需模型大小的類似腳本,例如66B和GPU計數(shù)=64
python train.py --actor-model facebook/opt-66b --reward-model facebook/opt-350m --num-gpus 64
通過 DeepSpeed-Chat 在 8 個 DGX 節(jié)點(每個節(jié)點具有 8 個 NVIDIA A100-80G GPU)上訓練 660 億參數(shù)的 ChatGPT 模型時間消費如下:
Model Size (A100-80g)Step 1Step 2Step 3Total
Actor: OPT-66B Reward: OPT-350M82mins5mins7.5hr9hr
3.3 ?? 演示:單步微調(diào)
train.py腳本有一個易于使用的命令行界面,可以通過幾個參數(shù)啟動,包括模型類型、模型大小和要運行的GPU數(shù)量。考慮到那些希望使用DeepSpeed Chat只在步驟1或2中微調(diào)預訓練模型,或者只直接使用自己的參與者和獎勵模型檢查點來執(zhí)行我們RLHF管道中的步驟3的用戶,DeepSpeed Chat提供了更大的可配置性和靈活性,以適應單個步驟的微調(diào):
?? 第 1 步 - 監(jiān)督式微調(diào)
# Move into the first step of the pipeline
cd training/step1_supervised_finetuning/
# Run the training script
bash training_scripts/single_gpu/run_1.3b.sh
# Evaluate the model
bash evaluation_scripts/run_prompt.sh
?? 第 2 步 - 獎勵模型
# Move into the second step of the pipeline
cd training/step2_reward_model_finetuning
# Run the training script
bash training_scripts/run_350m.sh
# Evaluate the model
bash evaluation_scripts/run_eval.sh
?? 第 3 步 - 通過人類反饋強化學習
作為整個三步InstructGPT管道中最復雜的一步,DeepSpeed Chat的Hyrbid引擎已經(jīng)實現(xiàn)了足夠的加速,以避免大量的訓練時間(成本)影響。有關更多信息,請參閱步驟3:強化學習人的反饋(RLHF)。如果您已經(jīng)擁有經(jīng)過微調(diào)的演員和獎勵模型檢查點,那么只需運行以下腳本即可啟用PPO訓練:
# Move into the final step of the pipeline
cd training/step3_rlhf_finetuning/
# Run the training script
bash training_scripts/single_gpu/run_1.3b.sh
3.4 ?? 使用 DeepSpeed-Chat 的 RLHF API 自定義您自己的 RLHF 訓練管道
DeepSpeed Chat允許用戶使用靈活的API構建自己的RLHF訓練管道,如下所示,用戶可以使用這些API來重建自己的RL高頻訓練策略。這使得通用接口和后端能夠為研究探索創(chuàng)建廣泛的RLHF算法。
engine = DeepSpeedRLHFEngine(
actor_model_name_or_path=args.actor_model_name_or_path,
critic_model_name_or_path=args.critic_model_name_or_path,
tokenizer=tokenizer,
num_total_iters=num_total_iters,
args=args)
trainer = DeepSpeedPPOTrainer(engine=engine, args=args)
for prompt_batch in prompt_train_dataloader:
out = trainer.generate_experience(prompt_batch)
actor_loss, critic_loss = trainer.train_rlhf(out)
3.5 ?? 服務:插入由 DeepSpeed-Chat 訓練的最終模型并進行測試!
為了快速測試DeepSpeed Chat訓練的最終模型,我們在下面提供了一個簡單的腳本。對于希望使用我們訓練有素的模型創(chuàng)建不同LLM應用程序(如個人助理、聊天機器人和代碼理解)的用戶,請參閱LangChain。
# serve the final model
python chat.py --path ${PATH-to-your-actor-model}
示例 1:服務于 DeepSpeed-Chat 訓練的 1.3B 最終模型的問答環(huán)節(jié)
示例 2:服務于從 DeepSpeed-Chat 訓練的模型的多輪對話
4?? 訓練性能評估 ??
4.1 ?? 優(yōu)越的模型規(guī)模和低訓練成本
表 1 全面展示了 DeepSpeed-RLHF 系統(tǒng)支持的規(guī)模和端到端訓練時間。它還展示了在 Azure Cloud 中訓練模型的最具成本效益的方法以及相關成本。
GPU SKUsOPT-1.3BOPT-6.7BOPT-13.2BOPT-30BOPT-66BBloom-175B
1x V100 32G1.8 days
1x A6000 48G1.1 days5.6 days
1x A100 40G15.4 hrs3.4 days
1x A100 80G11.7 hrs1.7 days4.9 days
8x A100 40G2 hrs5.7 hrs10.8 hrs1.85 days
8x A100 80G1.4 hrs($45)4.1 hrs ($132)9 hrs ($290)18 hrs ($580)2.1 days ($1620)
64x A100 80G31 minutes51 minutes1.25 hrs ($320)4 hrs ($1024)7.5 hrs ($1920)20 hrs ($5120)
表 1. 針對不同參與者模型大小的端到端 RLHF 訓練(第 3 步)和在硬件上運行的固定 350M 關鍵模型,從單個消費級 GPU (NVIDIA A6000) 到更強大的云設置 (64xA100-80GPU)
4.2 ?? 與現(xiàn)有 RLHF 系統(tǒng)的吞吐量和模型大小可擴展性比較
(I) 單個GPU的模型規(guī)模和吞吐量比較與Colossal AI或HuggingFace DDP等現(xiàn)有系統(tǒng)相比,DeepSpeed Chat的吞吐量高出一個數(shù)量級,可以在相同的延遲預算下訓練更大的演員模型,或者以更低的成本訓練類似大小的模型。例如,在單個GPU上,DeepSpeed可以在單個GPU上將RLHF訓練的吞吐量提高10倍以上。雖然CAI Coati和HF-DDP都可以運行1.3B的最大模型大小,但DeepSpeed可以在相同的硬件上運行6.5B的模型,高出5倍。
圖 2:第 3 步吞吐量與其他兩個系統(tǒng)框架(Colossal AI 的 Coati 和 Huggingface-DDP)的比較,用于在單個 NVIDIA A100-40G 商用 GPU 上加速 RLHF 訓練。沒有圖標代表 OOM 場景。
(II)單節(jié)點多GPU模型規(guī)模與吞吐量對比在單個節(jié)點的多 GPU 上,DeepSpeed-Chat 在系統(tǒng)吞吐量方面比 CAI-Coati 提速 6-19 倍,比 HF-DDP 提速 1.4-10.5 倍(圖 3)。
圖 3. 在配備 8 個 NVIDIA A100-40G GPU 的單個 DGX 節(jié)點上,不同模型大小的訓練管道第 3 步(最耗時的部分)的端到端訓練吞吐量比較。沒有圖標代表 OOM 場景。
(III) Step3中優(yōu)越的加速性能圖 3 結果的關鍵原因之一是DeepSpeed-Chat的混合引擎的卓越生成階段加速,如下所示。
圖 4. DeepSpeed Chat 混合引擎的卓越生成階段加速:在具有 8 個 A100-40G GPU 的單個 DGX 節(jié)點上訓練 OPT-1.3B 參與者模型 + OPT-350M 獎勵模型的時間/序列分解。
5?? 支持的模型 ??
目前, DeepSpeed Chat 支持以下模型系列。隨著時間的推移,將繼續(xù)發(fā)展,包括用于 ChatGPT 式培訓的新興模型!
model familysize range
opt0.1B - 66B
bloom0.3B - 176B
gpt_neox1.3B - 20B
gptj1.4B - 6B
gpt_neo0.1B - 2.7B
gpt20.3B - 1.5B
codegen0.35b - 16B
6??引用??
[1] Schulman, John, et al. "Introducing ChatGPT",https://openai.com/blog/chatgpt (2022).
[2] Ouyang, Long, et al. "Training language models to follow
instructions with human feedback." arXiv preprint arXiv:2203.02155
(2022). This is also referred as InstructGPT
[3] Stiennon, Nisan, et al. "Learning to summarise with human
feedback." Advances in Neural Information Processing Systems 33
(2020): 3008-3021.
[4] Transformers Hugging Face (github.com)
[5] CarperAI, https://github.com/CarperAI/trlx
[6] lvwerra/trl: Train transformer language models with reinforcementlearning. (github.com)
[7] pg-is-all-you-need/02.PPO.ipynb at master ·
MrSyee/pg-is-all-you-need (github.com)
進技術交流群請?zhí)砑覣INLP小助手微信(id: ainlp2)
請備注具體方向+所用到的相關技術點關于AINLP
AINLP 是一個有趣有AI的自然語言處理社區(qū),專注于 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統(tǒng)、計算廣告、招聘信息、求職經(jīng)驗分享等,歡迎關注!加技術交流群請?zhí)砑覣INLP小助手微信(id:ainlp2),備注工作/研究方向+加群目的。
閱讀至此了,分享、點贊、在看三選一吧??