人手一個ChatGPT的夢想,就要實現了?
剛剛,微軟開源了一個可以在模型訓練中加入完整RLHF流程的系統框架-DeepSpeed Chat。
也就是說,各種規模的高品質類別ChatGPT模型,現在都唾手可得了!
計畫網址:https://github.com/microsoft/DeepSpeed
眾所周知,由於OpenAI太不Open,開源社區為了讓更多人能用上類ChatGPT模型,相繼推出了LLaMa、Alpaca 、Vicuna、Databricks-Dolly等模型。
但由於缺乏一個支援端到端的RLHF規模化系統,目前類別ChatGPT模型的訓練仍然十分困難。而DeepSpeed Chat的出現,正好補全了這個「bug」。
更亮的是,DeepSpeed Chat把成本大大地打了下來。
此前,昂貴的多GPU設定超出了許多研究者的能力範圍,並且,即使能訪問多GPU集群,現有的方法也無力負擔數千億參數ChatGPT模型的訓練。
現在,只要花1620美元,就可以透過混合引擎DeepSpeed-HE,在2.1天內訓練一個OPT-66B模型。
而如果使用多節點、多GPU系統,DeepSpeed-HE可以花320美元,在1.25小時內訓練一個OPT-13B模型,花5120美元,就能在不到一天的時間內訓練一個OPT-175B模型。
前Meta AI專家Elvis激動轉發,稱這是一件大事,並表示好奇DeepSpeed Chat和ColossalChat相比起來如何。
下面,我們就來看看效果如何。
經過DeepSpeed-Chat的訓練,13億參數版「ChatGPT」在問答環節的表現非常亮眼。不但能get到問題的上下文關係,而且給的答案也有模有樣。
在多輪對話中,這個13億參數版「ChatGPT」所展現的性能,也完全超越了這個規模的固有印象。
當然,在體驗之前,還需要把環境設定一下:
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
如果你只有大約1-2小時的咖啡或午餐休息時間,也可以嘗試使用DeepSpeed-Chat來訓練一個「小玩具」。
團隊特地準備了一個針對1.3B模型的訓練範例,可在消費級GPU上進行測試。最棒的是,當你從午休回來時,一切都已準備就緒。
python train.py --actor-model facebook/opt-1.3b --reward-model facebook/opt-350m --num-gpus 1
配備48GB顯存的消費級NVIDIA A6000 GPU:
#如果你只有半天的时间,以及一台服务器节点,则可以通过预训练的OPT-13B作为actor模型,OPT-350M作为reward模型,来生成一个130亿参数的类ChatGPT模型:
python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --num-gpus 8
单DGX节点,搭载了8个NVIDIA A100-40G GPU:
如果你可以使用多节点集群或云资源,并希望训练一个更大、更高质量的模型。那么只需基于下面这行代码,输入你想要的模型大小(如66B)和GPU数量(如64):
python train.py --actor-model facebook/opt-66b --reward-model facebook/opt-350m --num-gpus 64
8个DGX节点,每个节点配备8个NVIDIA A100-80G GPU:
具体来说,针对不同规模的模型和硬件配置,DeepSpeed-RLHF系统所需的时间和成本如下:
DeepSpeed Chat是一种通用系统框架,能够实现类似ChatGPT模型的端到端RLHF训练,从而帮助我们生成自己的高质量类ChatGPT模型。
DeepSpeed Chat具有以下三大核心功能:
1. 简化ChatGPT类型模型的训练和强化推理体验
开发者只需一个脚本,就能实现多个训练步骤,并且在完成后还可以利用推理API进行对话式交互测试。
2. DeepSpeed-RLHF模块
DeepSpeed-RLHF复刻了InstructGPT论文中的训练模式,并提供了数据抽象和混合功能,支持开发者使用多个不同来源的数据源进行训练。
3. DeepSpeed-RLHF系统
团队将DeepSpeed的训练(training engine)和推理能力(inference engine) 整合成了一个统一的混合引擎(DeepSpeed Hybrid Engine or DeepSpeed-HE)中,用于RLHF训练。由于,DeepSpeed-HE能够无缝地在推理和训练模式之间切换,因此可以利用来自DeepSpeed-Inference的各种优化。
DeepSpeed-RLHF系统在大规模训练中具有无与伦比的效率,使复杂的RLHF训练变得快速、经济并且易于大规模推广:
DeepSpeed-HE比现有系统快15倍以上,使RLHF训练快速且经济实惠。
例如,DeepSpeed-HE在Azure云上只需9小时即可训练一个OPT-13B模型,只需18小时即可训练一个OPT-30B模型。这两种训练分别花费不到300美元和600美元。
DeepSpeed-HE能夠支援訓練擁有數千億參數的模型,並在多節點多GPU系統上展現出卓越的擴展性。
因此,即使是擁有130億參數的模型,也只需1.25小時就能完成訓練。而對於擁有1,750 億參數的模型,使用DeepSpeed-HE進行訓練也只需不到一天的時間。
#只憑單一GPU,DeepSpeed-HE就能支持訓練超過130億參數的模型。這使得那些無法使用多GPU系統的資料科學家和研究者不僅能夠輕鬆創建輕量級的RLHF模型,還能創建大型且功能強大的模型,以應對不同的使用情境。
為了提供無縫的訓練體驗,研究者遵循InstructGPT,並在DeepSpeed-Chat中包含了一個完整的端到端訓練流程。
DeepSpeed-Chat的RLHF訓練流程圖示,包含了一些可選擇的功能
流程包括三個主要步驟:
監督微調(SFT),使用精選的人類回答來微調預先訓練的語言模型,以應對各種查詢。
獎勵模型微調,用一個包含人類對同一查詢的多個答案評分的資料集,來訓練一個獨立的(通常比SFT小)獎勵模型(RW)。
RLHF訓練,在這一步,SFT模型透過使用近似策略來最佳化(PPO)演算法,從RW模型的獎勵回饋進一步微調。
在步驟3中,研究者也提供了兩個附加功能,來幫助提升模型品質:
- 指數移動平均線(EMA)的收集,可以選擇一個基於EMA的檢查點,進行最終評估。
- 混合訓練,將預訓練目標(即下一個詞預測)與 PPO 目標混合,以防止在公共基準(如SQuAD2.0)上的表現回歸。
EMA和混合訓練這兩個訓練特徵,常常被其他的開源框架所忽略,因為它們並不會妨礙訓練的進行。
然而,根據InstructGPT,EMA檢查點往往比傳統的最終訓練模型提供更好的反應質量,而混合訓練可以幫助模型保持訓練前的基準解決能力。
因此,研究者為使用者提供了這些功能,讓他們可以充分獲得InstructGPT中所描述的訓練經驗。
而除了與InstructGPT論文高度一致外,研究者還提供了功能,讓開發者使用多種資料資源,訓練自己的RLHF模型:
DeepSpeed-Chat配備了(1)抽象資料集層,以統一不同資料集的格式;以及(2)資料拆分/混合功能,從而使多個資料集被適當地混合,然後在3個訓練階段進行分割。
#指示引导的RLHF管道的第1步和第2步,类似于大模型的常规微调,它们由基于ZeRO的优化和DeepSpeed训练中灵活的并行策略组合,来实现规模和速度。
而管道的第3步是在性能影响方面最复杂的部分。
每个迭代都需要有效地处理两个阶段:a)推理阶段,用于token/经验的生成,产生训练的输入;b)训练阶段,更新actor和reward模型的权重,以及它们之间的互动和调度。
它引入了两个主要的困难:(1)内存成本,因为在整个第三阶段需要运行多个SFT和RW模型;(2)生成回答阶段的速度较慢,如果没有正确加速,将显著拖慢整个第三阶段。
此外,研究者在第三阶段增加的两个重要功能——指数移动平均(EMA)收集和混合训练,将产生额外的内存和训练成本。
为了应对这些挑战,研究者将DeepSpeed训练和推理的全部系统能力组成了一个统一的基础设施,即混合引擎(Hybrid Engine)。
它利用原有的DeepSpeed引擎进行快速训练模式,同时毫不费力地应用DeepSpeed推理引擎进行生成/评估模式,为第三阶段的RLHF训练提供了一个更快的训练系统。
如下图所示,DeepSpeed训练和推理引擎之间的过渡是无缝的:通过为actor模型启用典型的eval和train模式,在运行推理和训练流程时,DeepSpeed选择了不同的优化,以更快地运行模型,并提高整个系统的吞吐量。
用于加速RLHF流程中最耗时部分的DeepSpeed混合引擎设计
在RLHF训练的经验生成阶段的推理执行过程中,DeepSpeed混合引擎使用轻量级的内存管理系统,来处理KV缓存和中间结果,同时使用高度优化的推理CUDA核和张量并行计算,与现有方案相比,实现了吞吐量(每秒token数)的大幅提升。
在训练期间,混合引擎启用了内存优化技术,如DeepSpeed的ZeRO系列技术和低阶自适应(LoRA)。
而研究者设计和实现这些系统优化的方式是,让它们彼此兼容,并可以组合在一起,在统一的混合引擎下提供最高的训练效率。
混合引擎可以在训练和推理中无缝地改变模型分区,以支持基于张量并行的推理,和基于ZeRO的训练分片机制。
它还可以重新配置内存系统,以便在每一种模式中最大限度地提高内存可用性。
这就避免了内存分配瓶颈,能够支持大的batch size,让性能大大提升。
总之,混合引擎推动了现代RLHF训练的边界,为RLHF工作负载提供了无与伦比的规模和系统效率。
与Colossal-AI或HuggingFace-DDP等现有系统相比,DeepSpeed-Chat具有超过一个数量级的吞吐量,能够在相同的延迟预算下训练更大的演员模型或以更低的成本训练相似大小的模型。
例如,在單一GPU上,DeepSpeed使RLHF訓練的吞吐量提高了10倍以上。雖然CAI-Coati和HF-DDP都可以運行1.3B的模型,但DeepSpeed可以在相同的硬體上運行6.5B模型,直接高出5倍。
在單一節點的多個GPU上,DeepSpeed-Chat在系統吞吐量方面比CAI-Coati加速6-19倍,HF- DDP提速1.4-10.5倍。
團隊表示,DeepSpeed-Chat能夠獲得如此優異的結果,關鍵原因之一是混合引擎在生成階段提供的加速。
#以上是人手一個ChatGPT!微軟DeepSpeed Chat震撼發布,一鍵RLHF訓練千億級大模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!