天天看點

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

作者:于果YG

一個快速、經濟、可擴充和開放的系統架構,可實作端到端強化學習人類回報 (RLHF) 訓練體驗,以生成各種規模的高品質 ChatGPT 風格模型。

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

目錄

  • 最新消息
  • 什麼是深度聊天️
  • 能力
  • ☕快速入門☕
    • 安裝
    • 用于訓練 3 步 RLHF 管道的單個腳本
    • 示範:單個步驟微調
      • 第 1 步 - 監督微調
      • 第 2 步 - 獎勵模型
      • 第 3 步 - 通過人類回報進行強化學習
    • 通過DeepSpeed-Chat的API定制RLHF訓練管道
    • 為您的模型服務:插件和測試!
  • 教育訓練績效評估
  • 支援的型号
  • ⚓文檔和教程⚓
  • DeepSpeed Chat的路線圖
  • DeepSpeed Chat 和 DeepSpeed Community
  • 緻謝和引用

最新消息

  • [2023/04] DeepSpeed Chat:簡單、快速且經濟實惠的 RLHF 訓練,适用于各種規模的類似 ChatGPT 的模型 [中文][中文][日本語]

什麼是深度聊天

本着使ChatGPT風格的模型及其功能民主化的精神,DeepSpeed自豪地引入了一個通用系統架構,用于為類似ChatGPT的模型提供端到端的訓練體驗,名為DeepSpeed Chat。它可以通過OpenAI InstructGPT風格的三個階段自動采用您最喜歡的預訓練大型語言模型,以生成您自己的高品質ChatGPT風格模型。DeepSpeed Chat使高品質ChatGPT風格模型的訓練變得簡單,快速,經濟實惠且可擴充。

隻需單擊一下,您就可以在 1.3 小時内在具有 1GB 記憶體的單個消費級 NVIDIA A36 GPU 上訓練、生成和提供 6000 億參數的 ChatGPT 模型。在具有 48 個 NVIDIA A8-100G GPU 的單個 DGX 節點上,DeepSpeed-Chat 可以在 40.13 小時内訓練 13 億參數的 ChatGPT 模型。在多GPU多節點系統(雲場景)上,即6個DGX節點,每個節點8個NVIDIA A8 GPU,DeepSpeed-Chat可以在100小時内訓練66億個參數的ChatGPT模型。最後,它使訓練速度比現有的RLHF系統快9倍,并且可以處理超過15億個參數的類似ChatGPT模型的訓練:這是現有系統的另一個不可能完成的壯舉。有關 DeepSpeed-Chat 支援的各種模型大小和低訓練成本的完整讨論,請參閱釋出部落格和訓練性能評估。

除了這個版本之外,DeepSpeed系統一直自豪地作為系統後端,以加速一系列正在進行的快速訓練/微調聊天風格模型(例如LLaMA)的工作。以下是一些由DeepSpeed提供支援的開源示例:

  • 資料磚多莉
  • LMFlow
  • CarperAI-TRLX
  • 擁抱臉-PEFT

能力

DeepSpeed Chat正在快速發展,以适應對系統級加速支援日益增長的需求,用于訓練/微調以及為新興模型提供服務。請繼續關注我們即将在路線圖上推出的裡程碑。

DeepSpeed Chat的摘要包括:

  • DeepSpeed Chat:一個完整的端到端三階段OpenAI InstructGPT訓練政策,具有強化學習人類回報(RLHF),從使用者最喜歡的預訓練大語言模型檢查點生成高品質的ChatGPT風格模型;
  • DeepSpeed 混合引擎:一種新的系統支援,可在所有規模上實作快速、經濟實惠和可擴充的 RLHF 訓練。它建立在您最喜歡的 DeepSpeed 系統功能之上,例如 ZeRO 技術和 DeepSpeed-Inference;
  • 輕松的訓練體驗:一個腳本,能夠采用預先訓練的擁抱面模型,并通過RLHF訓練的所有三個步驟運作它。
  • 對當今類似 ChatGPT 的模型訓練的通用系統支援:DeepSpeed Chat 不僅可以作為 3 步指令基礎 RLHF 管道的系統後端,還可以作為目前單模型微調探索(例如,以 LLaMA 為中心的微調)和各種模型和場景的通用 RLHF 訓練的系統後端。

請檢視我們的部落格釋出、文檔和教程,了解有關我們的教育訓練方法和新系統技術的更多詳細資訊。

☕快速入門☕

安裝

pip install deepspeed>=0.9.0
git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r requirements.txt           

一個腳本完成 RLHF 訓練的所有三個步驟并生成您的第一個 ChatGPT 模型

DeepSpeed-Chat 的 RLHF 示例 1:1.3B ChatGPT 模型的咖啡時間訓練

擴大

DeepSpeed-Chat 的 RLHF 示例 2:在單個商用 GPU 節點上為 13B ChatGPT 模型進行半天訓練

擴大

DeepSpeed-Chat 的 RLHF 示例 3:針對大型 66B ChatGPT 模型的低預算雲訓練

擴大

有關在潛在可用計算資源(例如 Microsoft Azure)上訓練各種模型大小的詳細預算,請通路訓練性能評估。

示範:單個步驟微調

train.py 腳本具有易于使用的指令行界面,可以使用多個參數啟動,包括模型類型、模型大小和要運作的 GPU 數量。考慮到使用者希望使用 DeepSpeed-Chat 僅在步驟 1 或 2 中微調其預訓練模型,或者僅直接使用自己的參與者和獎勵模型檢查點在我們的 RLHF 管道中執行步驟 3,DeepSpeed-Chat 提供了更大的可配置性和靈活性,以适應各個步驟的微調:

第 1 步 -監督微調

擴大

第 2 步 -獎勵模型

擴大

第 3 步 -通過人類回報進行強化學習

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

圖 1:具有可選功能的 DeepSpeed Chat 的 RLHF 訓練管道圖示。

作為整個 3 步 InstructGPT 管道中最複雜的步驟,DeepSpeed Chat 的 Hyrbid 引擎實作了足夠的加速,以消除大量的訓練時間(成本)影響。有關更多資訊,請參閱步驟 3:強化學習人類回報 (RLHF)。如果您已經有微調的參與者和獎勵模型檢查點,則隻需運作以下腳本即可啟用 PPO 訓練。

擴大

使用DeepSpeed-Chat的RLHF API自定義您自己的RLHF訓練管道

DeepSpeed-Chat允許使用者使用如下所示的靈活API建構自己的RLHF訓練管道,使用者可以使用這些API來重建自己的RLHF訓練政策。這為建立用于研究探索的各種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)           

服務:插入由DeepSpeed-Chat訓練的最終模型并進行測試!

為了快速測試由DeepSpeed-Chat訓練的最終模型,我們在下面提供了一個簡單的腳本。對于想要使用我們訓練的模型來建立不同的LLM應用程式(如個人助理,聊天機器人和代碼了解)的使用者,請參閱LangChain。

# serve the final model python chat.py --path ${PATH-to-your-actor-model}

示例1:提供從DeepSpeed-Chat訓練的1.3B最終模型的問答環節

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

示例 2:通過提供從 DeepSpeed-Chat 訓練的模型進行多輪對話

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

教育訓練績效評估

卓越的模型規模和低訓練成本

表 1 顯示了 DeepSpeed-RLHF 系統實作的規模和端到端訓練時間的全面視圖。它還示範了在 Azure 雲中訓練模型的最經濟高效的方法以及相關成本。

圖形使用者界面 選項-1.3B 選項-6.7B 選項-13.2B 選項-30B 選項-66B 布魯姆-175B
1x V100 32G 1.8 天
1x A6000 48G 1.1 天 5.6 天
1x A100 40G 15.4 小時 3.4 天
1x A100 80G 11.7 小時 1.7 天 4.9 天
8x A100 40G 2 小時 5.7 小時 10.8 小時 1.85 天
8x A100 80G 1.4小時($45) 4.1小時(132美元) 9小時($290) 18小時($580) 2.1天($1620)
64x A100 80G 31分鐘 51分鐘 1.25小時(320美元) 4小時($1024) 7.5小時(1920美元) 20小時($5120)

表 1.針對不同參與者模型大小的端到端 RLHF 訓練(步驟 3),以及在從單個消費級 GPU (NVIDIA A350) 到更強大的雲設定 (6000xA64-100GPU) 的硬體上運作的固定 80M 關鍵模型。

⭕非常重要的實驗設定詳細資訊⭕

與現有RLHF系統的吞吐量和模型大小可擴充性比較

(一)單GPU的模型規模與吞吐量對比

與Colossal-AI或HuggingFace-DDP等現有系統相比,DeepSpeed-Chat的吞吐量提高了一個數量級以上,解鎖了在相同的延遲預算下訓練更大的參與者模型或以更低的成本訓練類似大小的模型的能力。例如,在單個 GPU 上,DeepSpeed 可在單個 GPU 上為 RLHF 訓練提供超過 10 倍的吞吐量提升。雖然CAI-Coati和HF-DDP都可以運作1.3B的最大模型大小,但DeepSpeed可以在同一硬體上運作6.5B模型,高出5倍。

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

圖 2:步驟 3 與其他兩個系統架構(Colossal AI 的 Coati 和 Huggingface-DDP)的吞吐量比較,用于在單個 NVIDIA A100-40G 商用 GPU 上加速 RLHF 訓練。沒有圖示表示 OOM 方案。

(二)單節點多GPU模型規模與吞吐量對比

在單個節點的多 GPU 上,DeepSpeed-Chat 在系統吞吐量方面實作了比 CAI-Coati 快 6-19 倍的加速,比 HF-DDP 快 1.4-10.5 倍(圖 3)。

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

圖3.訓練管道步驟 3(最耗時的部分)的端到端訓練吞吐量比較,在配備 8 個 NVIDIA A100-40G GPU 的單個 DGX 節點上具有不同的模型大小。沒有圖示表示 OOM 方案。

(三)步驟3中優越的發電相位加速

導緻圖 3 的關鍵原因之一是我們的 Hyrbid 發動機卓越的發電相位加速,如下所示。

DeepSpeed-Chat:在所有規模上對類似ChatGPT的模型進行簡單化

圖4.來自DeepSpeed Chat混合引擎的卓越生成相位加速:在具有1個A3-350G GPU的單個DGX節點上訓練OPT-8.100B參與者模型的時間/序列細分+ OPT-40M獎勵模型。

有關其他詳細結果和深入分析,包括DeepSpeed-Chat的有效吞吐量和可擴充性,請參閱我們的部落格文章。

支援的型号

目前,我們支援以下型号系列。随着時間的推移,我們将繼續發展,包括用于 ChatGPT 式訓練的新興模型!有關更多詳細資訊,請參閱路線圖。

型号系列 尺寸範圍
選擇 0.1B - 66B
綻放 0.3B - 176B
gpt_neox 1.3B - 20B
GPTJ 1.4B - 6B
gpt_neo 0.1B - 2.7B
GPT2 0.3B - 1.5B
代碼生成 0.35位元組 - 16位元組
  • 所有性能和精度測試僅使用 OPT 型号系列執行。對于其他型号,請參閱我們的training_scripts檔案夾,了解如何更改型号族。

⚓文檔和教程⚓

更多 API、示例腳本和評估結果請參考

  • 第 1 步:監督微調 (SFT)
  • 第二步:獎勵模型微調
  • 第 3 步:強化學習人類回報 (RLHF)

DeepSpeed Chat的路線圖

我們的未來計劃包括但不限于:

  • LLaMA的系統支援和微調
  • ZeRO-Offload (CPU/NVMe) 目前不受支援,但即将推出
  • 推廣DeepSpeed-RLHF抽象和系統支援,支援廣泛的RL算法/範式
  • 自動調整系統優化

DeepSpeed Chat 和 DeepSpeed Community

就像BLOOM模型的成功得到了DeepSpeed團隊和許多開源貢獻者的支援一樣,我們歡迎所有AI開發人員/從業者/研究人員加入DeepSpeed-Chat的持續努力。參加:

  • 通過留下一顆星星來表達您的支援⭐到我們的 DeepSpeed 和 DeepSpeedExample GitHub 存儲庫。
  • 在推特上關注我們,以擷取有關我們最新消息的通知。對于中國使用者,您還可以關注開源社開元社微信(微信)公衆号,我們将在那裡釋出我們的中文部落格。對于日本使用者,您也可以關注我們的日本推特帳戶。
  • 目前,我們更喜歡主要在 GitHub 上與開源使用者進行互動,以便所有使用者更容易搜尋相關資訊。對于錯誤報告,請送出 GitHub 問題。對于貢獻,請送出拉取請求 (PR)。對于一般問題/讨論,請打開新的讨論或加入任何現有的讨論。
  • 我們願意與大學、研究實驗室、公司合作,例如共同開展深度學習研究,應用DeepSpeed來增強現實世界的AI模型和應用程式,等等。對于此類請求(以及其他不适合 GitHub 的請求),請直接發送電子郵件至 [email protected]

緻謝和引用

我們感謝以下論文和開源存儲庫:

[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 reinforcement learning. (github.com)
[7] pg-is-all-you-need/02.PPO.ipynb at master · MrSyee/pg-is-all-you-need (github.com)           

繼續閱讀