ColossalChat: An Open-source Solution for Cloning ChatGPT with A Complete RLHF Pipeline

——Colossal-AI基于LLaMA预训练模型开源了一套完整的RLHF pipeline,包括监督数据采集、监督微调、奖励模型训练、强化学习微调,并分享最实用的开源ColossalChat非常类似于原始 ChatGPT 技术解决方案的项目!

ChatGPT、GPT-4等大型AI模型在全球范围内风靡一时,成为技术产业革命和AGI(Artificial General Intelligence)发展的基础。不仅科技巨头竞相发布新品,许多来自学术界和产业界的人工智能专家也加入了相关的创业浪潮。生成式 AI 每天都在快速迭代,不断完善!

然而,OpenAI 并没有将其模型开源,这让许多人对它们背后的技术细节感到好奇。

  • 我们如何才能跟上潮流并参与这一技术发展浪潮?
  • 如何降低构建和应用大型人工智能模型的高成本?
  • 如何保护核心数据和IP不被第三方大模型API泄露?

Colossal-AI作为当今领先的开源大型 AI 模型解决方案,率先开源了完整的 RLHF pipeline,包括监督数据收集、监督微调、奖励模型训练和强化学习微调,基于LLaMA预训练模型,并分享最实用的开源项目ColossalChat,酷似ChatGPT原技术方案

开源地址: https: //github.com/hpcaitech/ColossalAI

包含以下内容:

  • 演示:一个交互式演示,无需注册或等候名单即可在线试用。
  • 训练代码:开源完整的RLHF训练代码,包括7B和13B模型。
  • 数据集:开源的104K中英文双语数据集。
  • 推理:70 亿参数模型的 4 位量化推理,仅需要 4GB GPU 内存。
  • 模型权重:单台服务器仅需少量算力即可实现快速复现。
  • 其他更大的模型、数据集和其他优化将被快速更新和添加。

实惠机型,强大功能

ColossalChat只需要不到100亿个参数就可以达到中英文双语能力,通过RLHF在大语言模型的基础上进行微调,达到与ChatGPT和GPT-3.5相当的效果。

例如,常识测验:

用中文回答:

写一个算法:

完整的 ChatGPT 克隆解决方案

虽然 GPT 系列中的模型,例如 ChatGPT 和 GPT-4,非常强大,但它们不太可能完全开源。幸运的是,开源社区一直在努力解决这个问题。

例如,Meta 开源了 LLaMA 模型,它提供的参数大小从 70 亿到 650 亿不等。在大多数基准测试中,一个 130 亿参数的模型可以胜过 1750 亿个 GPT-3 模型。然而,由于它没有指令调整阶段,其实际生成的结果并不令人满意。

Stanford 的 Alpaca 通过调用 OpenAI 的 API 以自我指导的方式生成训练数据。这个轻量级模型只有 70 亿个参数,可以用一小部分成本进行微调,以实现类似于具有 1750 亿个参数的超大型语言模型(如 GPT-3.5)的会话性能。

然而,现有的开源解决方案在 RLHF(人类反馈强化学习)的第一阶段只能被视为有监督的微调模型,而不会执行后续的对齐和微调阶段。此外,Alpaca 的训练数据集仅限于英语,这在一定程度上限制了模型的性能。

然而,ChatGPT 和 GPT-4 令人印象深刻的效果是由于在训练过程中引入了 RLHF,这增加了生成内容与人类价值观的一致性。

ColossalChat基于LLaMA模型,是第一个包含完整的RLHF复制ChatGPT-like模型的实用开源项目,是最接近ChatGPT原有技术路线的项目

训练数据集开源

ColossalChat 发布了一个双语数据集,其中包含大约 100,000 个中英文问答对。该数据集是从社交媒体平台上的真实问题场景中收集和清理的,作为种子数据集,并使用自指导技术进行扩展,注释成本约为 900 美元。与其他自指导方法生成的数据集相比,该数据集包含更真实和多样化的种子数据,涵盖更广泛的主题。该数据集适用于微调和 RLHF 训练。在提供优质数据的情况下,ColossalChat 可以实现更好的对话交互,同时也支持中文。

RLHF 算法复制

RLHF 算法复制涉及三个阶段:

在 RLHF-Stage1 中,使用前面提到的数据集进行监督指令微调以微调模型。

在 RLHF-Stage2 中,通过对同一提示的不同输出手动排序来训练奖励模型分配相应的分数,然后监督奖励模型的训练。

在 RLHF-Stage3 中,使用了强化学习算法,这是训练过程中最复杂的部分:

在PPO部分,ColossalChat遵循两个阶段的流程:首先是make experience阶段,使用SFT(Supervised Fine-Tuning)、Actor、RM(Reward Model)和Critic模型计算生成的体验并存储在buffer中. 然后是参数更新阶段,利用经验计算策略损失和价值损失。

在 PTX 部分,ColossalChat 计算了 Actor 的输出响应与输入语料库的响应部分之间的交叉熵损失。这个loss用于在PPO梯度上加入预训练梯度,以保持语言模型原有的性能,防止遗忘。最后,将策略损失、价值损失和 PTX 损失相加用于反向传播和参数更新。

快速开始

ColossalChat开源了基于LLaMA模型分三阶段低成本复制ChatGPT的完整代码。

在第 1 阶段,训练 SFT 模型:

一旦得到微调后的模型权重,就可以通过量化降低推理的硬件成本,并可以推出在线推理服务,仅需单GPU约4GB显存即可部署70亿参数模型推理服务。

系统性能优化与开发加速

ColossalChat 能够快速跟进ChatGPT 复制的完整RLHF 过程,很大程度上得益于Colossal-AI的基础设施和相关优化技术的底层支持。在同等条件下,ColossalChat 的训练速度与 Alpaca 使用的 FSDP(Fully Sharded Data Parallel)相比可以提升两倍以上。

系统基础设施Colossal-AI

AI大模型开发系统Colossal-AI为该项目提供了基础支持。可高效快速部署基于PyTorch的AI大模型训练和推理,降低AI大模型应用成本。Colossal-AI 是基于加州大学伯克利分校特聘教授 James Demmel 教授和新加坡国立大学校长青年教授杨佑教授的专业知识开发的。自开源以来,Colossal-AI以约20000个GitHub star多次登上GitHub Trending榜首,并成功被SC、AAAI、PPoPP、CVPR、和国际学习中心。

零+Gemini 减少内存冗余

Colossal-AI 支持 ZeRO(零冗余优化器)以提高内存使用效率,能够以更低的成本容纳更大的模型,同时不影响计算粒度和通信效率。自动chunk机制可以通过提高内存使用效率、降低通信频率、避免内存碎片等方式进一步提升ZeRO的性能。异构内存空间管理器Gemini支持将优化器状态从GPU内存卸载到CPU内存或硬盘空间,以克服GPU内存容量的限制,扩大可训练模型的规模,降低大型AI模型应用的成本。

LoRA的低成本微调

Colossal-AI 包括用于对大型模型进行低成本微调的低秩适应 (LoRA) 方法。LoRA 方法假设大型语言模型是过度参数化的,并且微调期间的参数变化是一个低秩矩阵。因此,这个矩阵可以分解为两个更小的矩阵的乘积。fine-tuning时固定大模型的参数,只调整低秩矩阵的参数,显着减少训练所需的参数数量,降低成本。
低成本量化推理。

GPTQ 量化
为了降低推理部署的成本,Colossal-AI 使用 GPTQ 4 位量化推理。在 GPT/OPT/BLOOM 模型上,它可以获得比传统 RTN(round-to-nearest)量化技术更好的 Perplexity 结果。与普通的 FP16 推理相比,它可以减少 75% 的内存消耗,同时只牺牲少量的吞吐速度和 Perplexity 性能。

例如,使用ColossalChat-7B,使用4位量化推理,70亿参数模型只需要大约4GB的GPU内存就可以完成短序列(128长度生成)推理,这可以在普通的消费级GPU上完成就像只有一行代码的 RTX 3060。

如果使用高效的异步卸载技术,可以进一步降低内存需求,从而可以在更低成本的硬件上推断出更大的模型。

局限性

虽然进一步引入了RLHF,但受限于算力和数据集,在某些场景下实际性能仍有提升空间。

合作

幸运的是,与以往仅由少数科技巨头垄断的大型 AI 模型和前沿技术不同,PyTorch、Hugging Face 和 OpenAI 等开源社区和初创公司也在这一波浪潮中发挥了关键作用。Colossal-AI借鉴开源社区的成功经验,欢迎各方参与共建,拥抱大模型时代!

致谢

ColossalChat 非常感谢许多现有的作品和杰出的组织。令人难以置信的斯坦福羊驼项目一直是灵感的源泉。Self -Instruct研究论文为小型数据集的强大功能奠定了基础。精确的训练后量化来自于GPTQ。感谢 Meta AI Research 发布了LLaMA模型,Meta 的 PyTorch,以及 OpenAI 为最强大的 AI 铺平了道路。免责声明Stanford Alpaca类似,我们强调 ColossalChat 是对开源社区的贡献,仅用于学术研究目的,禁止任何商业用途:

  1. ColossalChat 建立在 LLaMA 的基础上,仅许可用于非商业用途。
  2. 源自 OpenAI 模型 API 的指令数据以及该数据的使用条款禁止开发竞争模型。
  3. ColossalChat 与其他大型语言模型一样,可能会表现出几种常见的缺陷,包括幻觉、毒性和偏见。

参考

[1] 王一中,等.“自我指导:将语言模型与自我生成的指令对齐。” arXiv 预印本 arXiv:2212.10560 (2022)。
[2] 图夫龙、雨果等。“LLaMA:开放高效的基础语言模型。” arXiv 预印本 arXiv:2302.13971 (2023)。
[3] Rohan, Taori, 等。“斯坦福羊驼:一种遵循指令的 LLaMA 模型。” arXiv 预印本 arXiv:2302.13971 (2023)。
[4] 胡,爱德华·J.,等。“Lora:大型语言模型的低阶改编。” arXiv 预印本 arXiv:2106.09685 (2021)。
[5] Frantar、Elias 等。“GPTQ:生成式预训练变压器的准确训练后量化。” arXiv 预印本 arXiv:2210.17323 (2022)。
[6] 开放人工智能。2022. 聊天 GPT。https://openai.com/blog/chatgpt
[7] https://medium.com/@yangyou_berkeley/colossalchat-an-open-source-solution-for-cloning-chatgpt-with-a-complete-rlhf-pipeline-5edf08fb538b