Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

这个团队做了OpenAI没Open的技术,开源OpenRLHF让对齐大模型超简单

随着大型语言模型(LLM)规模不断增大,其性能也在不断提升。尽管如此,LLM 依然面临着一个关键难题:与人类的价值和意图对齐。在解决这一难题方面,一种强大的技术是根据人类反馈的强化学习(RLHF)。

但是,随着模型越来越大,RLHF 通常需要维持多个模型以及越来越复杂的学习流程,这又会导致内存和计算资源需求增长。举个例子,近端策略优化(PPO,这是 RLHF 常用的一种算法)需要在训练过程中维持四个模型。

由此,当语言模型参数规模超过 700 亿时,为了训练和协调多个模型,所需的计算资源和调度复杂性会显著增长 —— 这是当前的架构设计难以满足的需求。

Transformer 强化学习(TRL)、ColossalChat(CAIChat)和 DeepSpeed-Chat(DSChat)等现有的开源 RLHF 框架是依靠零冗余优化器(Zero Redundancy Optimizer/ZeRO),来将 RLHF 训练涉及的四个模型配置到同一台 GPU 上。这个过程被称为 co-location,即空间并置。

但是,随着模型参数规模超过 700 亿,在内存有限的 GPU 上,这种调度方法的效率会越来越低。

为了解决空间并置的限制,TRL 等一些框架选择在内存使用上做出妥协,其做法包括将 actor 和 critic 模型融合起来或采用低秩适应(LoRA)等技术。但是,这些技术会降低模型性能,而且融合 actor-critic 式架构与备受推崇的实践做法不兼容,即使用奖励模型的权重来初始化 critic 模型的权重

另一种替代方法是使用来自英伟达 Megatron 的张量并行化和管道并行化技术。但是,Megatron 与人们常用的 Hugging Face 软件库不兼容,而适应新模型又需要大量修改源代码,如此就很难使用了。

为了轻松实现大规模 RLHF 训练,OpenLLMAI、字节跳动网易伏羲 AI Lab、阿里巴巴的一个联合团队提出并开源了 OpenRLHF,其中第一作者为 Jian Hu。该框架使用 Ray、vLLM 和 DeepSpeed 对模型调度进行了重新设计,可支持超 700 亿参数的模型的 RLHF 训练,其优势包括简单易用、高性能、实现了分布式 RLHF、集成了 PPO 实现技巧。

图片

  • 论文标题:OpenRLHF: An Easy-to-use, Scalable and High-performance RLHF Framework

  • 论文地址:https://arxiv.org/pdf/2405.11143

  • 开源项目:https://github.com/OpenLLMAI/OpenRLHF

有关 Ray、vLLM 和 DeepSpeed 的具体详情,请访问原论文:

OpenRLHF 可与 Hugging Face Transformer 无缝整合,并且支持混合专家(MoE)、Jamba 和 QLoRA 等常用技术。此外,OpenRLHF 还实现了多个对齐算法,包括直接偏好优化(DPO)和 Kahneman-Tversky 优化(KTO)、条件 SFT 和拒绝采样

因此,可以说 OpenRLHF 是一个非常全面的 RLHF 训练框架。

表 1 比较了常用的 RLHF 框架。

图片

OpenRLHF 的设计

调度优化

要为更大的模型执行 RLHF 训练,需要高效地在多台 GPU 上分配至少四个组件模型(actor、critic、奖励、参考)。为什么需要多台 GPU?因为每台 GPU 加速器的内存有限,比如 NVIDIA A100 的内存不到 80GB。OpenRLHF 在模型调度方面创新性地使用了 Ray 来进行模型安放和细粒度的编排。

同时,OpenRLHF 还使用了针对推理优化的软件库 vLLM 和针对训练优化的软件库 DeepSpeed;它们都由基于 Ray 的调度器管理。

OpenRLHF 能将四个模型分配到多台 GPU 上,而不是将它们并置于同一台 GPU,如图 1 所示。

图片

这样的设计很自然就支持在 RLHF 训练过程中使用多个奖励模型,如图 2 所示,并适用于多种算法实现。

图片

基于此,算法工程师无需关心底层数据流的细节,就能快速构建多种对齐策略,比如有用性和有害性分离。这样的调度器设计还可使用 Ray 和 DeepSpeed 来实现灵活的模型融合或卸载策略。比如可以融合 actor - 参考或 critic - 奖励模型以节省 GPU 资源。

除了能高度定制算法实现这一优点,该调度器还能以最优方式编排 GPU,从而提升整体训练性能。

性能优化

RLHF 算法的性能取决于训练和推理两方面的效率。从分析结果看,主要瓶颈是在 PPO 样本生成阶段(如图 2 所示),这个阶段占到了整体训练时间的 80%。原因是:在生成阶段,自回归解码的复杂度为 O (n^2),并且也受到内存限制。

为了进一步加快样本生成的速度以及支持无法载入到单台 GPU 的更大型 LLM(比如 700 亿参数的模型),OpenRLHF 使用了 vLLM 的张量并行化等先进技术(连续批处理和分页注意力)来执行生成过程,如图 1 所示。

在 RLHF 的生成和学习阶段,OpenRLHF 采用了以下技术来获得进一步的提升:

  • 将 Adam 优化器状态卸载到 CPU,这能将 GPU 内存解放出来用于较大的推理批量大小,这能提升效率以及避免生成的内存瓶颈。置顶内存和梯度积累,用于降低梯度聚合过程中的 GPU-CPU 通信负载。

  • 使用 Flash Attention 2 来加速 Transformer 模型训练。

  • 使用 PyTorch 张量切片移除训练样本中的冗余填充。

图 2 中另外三个模型使用了 ZeRO 的第 3 阶段(对模型、梯度和优化器进行分片)。OpenRLHF 使用了英伟达 NCCL 和 vLLM 权重加载器来同步 ZeRO 和 vLLM 引擎的权重,确保实现快速又简单的集成。

表 2 比较了 OpenRLHF 与该团队精心微调过的 DSChat 的性能。

图片

训练稳定性

在训练大型语言模型(LLM)时,PPO 等强化学习算法容易不稳定。为了保证稳定,该团队尽力验证了 OpenRLHF 的实现细节。图 2 和图 3 分别给出了一般的推理和学习流程。

图片

此外,OpenRLHF 还借助了一些技巧来保证 PPO 实现的训练稳定,包括:

  • 仅在序列的文本末端 token 上预测奖励

  • 语言模型使用 token 层级的强化学习

  • 在 PPO 中使用 KL 散度损失项

  • 在 PPO 中使用已预训练的损失项,其根据策略损失的相对规模进行调整

  • 为训练稳定度使用奖励归一化

  • 通过全局统计使用分布式优势归一化

  • 使用线性预热余弦退火学习率调度

易用性

为便于用户使用,该团队还为支持的算法提供了一键可用的可训练脚本(详见原论文),并且该脚本与 Hugging Face 软件库完全兼容。下面给出了 Llama2 70B 模型的 RLHF 训练的最低配置:

图片

更多技术细节请参阅原论文。

工程OpenRLHF
相关数据
字节跳动机构

北京字节跳动科技有限公司成立于2012年,是最早将人工智能应用于移动互联网场景的科技企业之一,是中国北京的一家信息科技公司,地址位于北京市海淀区知春路甲48号。其独立研发的“今日头条”客户端,通过海量信息采集、深度数据挖掘和用户行为分析,为用户智能推荐个性化信息,从而开创了一种全新的新闻阅读模式

https://bytedance.com
网易机构

网易成立于1997年6月24日,是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

https://www.163.com/
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

调度技术

调度在计算机中是分配工作所需资源的方法。资源可以指虚拟的计算资源,如线程、进程或数据流;也可以指硬件资源,如处理器、网络连接或扩展卡。 进行调度工作的程序叫做调度器。调度器通常的实现使得所有计算资源都处于忙碌状态,允许多位用户有效地同时共享系统资源,或达到指定的服务质量。 see planning for more details

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

拒绝采样技术

在数学中,拒绝抽样是用来从分布产生观测值的基本技术。它也被称为接受拒绝方法或“接受 - 拒绝算法”,是一种蒙特卡罗方法

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

阿里巴巴机构

阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的18人于1999年在浙江杭州创立的公司。

https://www.alibabagroup.com/
机器之心机构

机器之心,成立于2014年,是国内最具影响力、最专业、唯一用于国际品牌的人工智能信息服务与产业服务平台。目前机器之心已经建立起涵盖媒体、数据、活动、研究及咨询、线下物理空间于一体的业务体系,为各类人工智能从业者提供综合信息服务和产业服务。

https://www.jiqizhixin.com/
网易伏羲机构

网易伏羲成立于2017年,是网易游戏用于从事游戏与泛娱乐AI研究和应用的研究机构。

https://fuxi.163.com/
推荐文章
暂无评论
暂无评论~