豆包大模型团队开源RLHF框架,破解强化学习训练部署难题

1. 引言

 1.1 强化学习

强化学习(Reinforcement Learning, RL)是与监督学习和无监督学习并列的一种机器学习方法,其用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。

图1 强化学习的工作流程

具体说来,强化学习由动作、智能体、状态、奖励、回报和策略五大元素组成,如图1所示[1]。以“Flappy bird”游戏为例[1],如果小鸟躲过了各种水管而飞得越远则能获得更高的积分奖励,如图2所示。在这个游戏中,小鸟充当智能体,动作是让小鸟用力向上飞一下或者保持不动,状态包括小鸟的位置、高度、速度等,奖励是获得的积分,回报是获得的奖励的总和,策略是小鸟选择避开水管而飞得更远的依据。从上面的描述中可以看出,与监督学习不同的是,强化学习中不存在“标签”而只能从自身的经验中学习;与无监督学习不同的是,强化学习并非寻找隐藏的数据集结构而其目标是最大化奖励[2]。

图2 Flappy bird游戏

从强化学习发展至今,已在自动驾驶、工业、贸易金融、自然语言处理、医疗保健、游戏、机器人等领域中有着广泛的应用。例如,自动驾驶汽车AWS DeepRacer使用摄像头查看赛道,并使用强化模型来控制油门和方向盘; Alvin C. Grissom II等人提出了基于强化学习的同步机器翻译方法[3];AlphaStar 在《星际争霸2》中以 10:1 击败了人类顶级职业玩家[4];谷歌将深度学习与强化学习相结合以训练机械臂的长期推理能力[5]。

RL对大模型复杂推理能力提升有关键作用,然而RL 复杂的计算流程以及现有系统局限性,也给训练和部署带来了挑战[6]。其一,所需的样本数量太大,可能导致计算成本较高且难以部署在边缘设备上。其二,探索阶段代价太大,难以对环境进行准确建模从而对训练效果造成影响。其三,稳定性较差,导致学习效果不佳或无法收敛到最优策略。其四,超参数的影响非常大,即使是细微的超参数区别也会影响最终的效果。

1.2 豆包大模型

近日,字节跳动豆包大模型团队与香港大学联合提出HybridFlow,一个灵活且高效的大模型 RL 训练框架,兼容多种训练和推理框架,支持灵活的模型部署和多种 RL 算法实现。

HybridFlow 采用混合编程模型,将单控制器的灵活性与多控制器的高效性相结合,解耦了控制流和计算流。基于 Ray 的分布式编程,动态计算图,异构调度能力,通过封装单模型的分布式计算、统一模型间的数据切分,以及支持异步 RL 控制流,HybridFlow 能够高效地实现和执行各种 RL 算法,复用计算模块和支持不同的模型部署方式,大大提升了系统的灵活性和开发效率。实验结果表明,HybridFlow 在各种模型规模和 RL 算法下,训练吞吐量相比其他框架提升了 1.5 倍至 20 倍。

目前,该论文已被 EuroSys 2025 接收,代码仓库也对外公开。

论文链接:HybridFlow: A Flexible and Efficient RLHF Framework - 研究成果 - 豆包大模型团队

代码链接:GitHub - volcengine/verl: veRL: Volcano Engine Reinforcement Learning for LLM

图3 豆包模型大家族

如图3所示,豆包大模型团队成立于2023年致力于开发业界最先进的AI大模型技术,成为世界一流的研究团队,为科技和社会发展作出贡献,其下设Foundation、Vision、Speech、LLM四个分支[7]。Foundation 团队负责大模型的工程架构、模型结构设计、代码生成等方面工作,其开发的豆包 MarsCode工具支持智能识别当前编码任务相关的上下文信息,同时将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体,帮助开发者提升代码开发质量和效率。Vision团队致力于视觉理解和生成的多模态基础模型研发,其开发的豆包·文生图模型现已应用于抖音、剪映、豆包、星绘等产品。Speech团队的使命是利用多模态语音技术丰富交互和创作方式,其开发的Seed-Music 工具提供了可控音乐生成、谱转曲、词曲编辑、零样本人声克隆四大核心功能。 LLM 研究大模型研发的基础问题,包括但不限于模型的自学习、记忆和长文本生成、可解释性等方向。

2. HybridFlow,一个灵活且高效的 RL/RLHF 框架概述

HybridFlow框架的核心在于将强化学习和人类反馈强化学习(RLHF)有机结合,以实现更高效、更精准的模型训练。

RLHF是一种让人工智能(尤其是大型语言模型)通过人类反馈进行改进的训练方法,其主要由三个步骤组成:首先,预训练一个语言模型(LM);其次,聚合问答数据并训练一个奖励模型 (Reward Model,RM) ;最后,用强化学习(RL)方式微调LM。以PPO(Proximal Policy Optimization)模型为例,假设你在教一只智能机器人(AI助手)回答问题:首先(生成阶段),AI助手通过自回归生成来生成一组提示的响应;其次(准备阶段),评论家计算生成响应的价值,参考策略计算参考的对数概率,奖励模型计算奖励值;最后(学习/训练阶段),演员和评论家模型利用Adam优化器更新,通过之前生成的数据和损失函数来训练模型。

图4 HybridFlow框架

如图4所示,HybridFlow框架主要由Hybrid Programming Model、3D-HybridEngine和Auto-Mapping algorithm组成:Hybrid Programming Model以实现RLHF数据流的灵活表达和数据流中模型的高效计算;3D-HybridEngine专为高效训练和生成演员模型而设计;Auto-Mapping algorithm以最大化RLHF的吞吐量。在该框架中,RLHF的工作流程如下:首先,用户提供输入信息,包括模型配置、设备配置等;其次,初始化RLHF数据流中的模型并分配虚拟资源池;然后,多控制器程序实现Parallel-Worker类,构建各模型的并行组,并调用3D-HybridEngine来执行演员模型的训练和生成;最后,单一控制程序协调传输协议以实现数据传输与重分配.

在HybridFlow框架中,RL和RLHF的结合主要体现在以下几个方面:第一,数据增强:通过人类反馈,可以为模型提供更加丰富和多样化的训练数据,从而增强模型的泛化能力和鲁棒性。第二,策略优化:人类反馈可以作为额外的奖励信号,引导模型在关键决策点上做出更优的选择。第三。错误纠正:在训练过程中,人类可以及时发现并纠正模型的错误行为,避免模型陷入局部最优解[8]。

3. HybridFlow创新点及优势

3.1 Hybrid Programming Model
分布式计算和模型部署

HybridFlow通过3DParallelWorker基类实现了模型的分布式计算封装。该基类负责初始化模型权重,并建立模型的3D并行组,支持张量并行(TP)和数据并行(DP)。这种架构允许每个模型类,如ActorWorker或CriticWorker,(如图5)独立执行其分布式计算任务,包括前向和反向传播,自回归生成,以及优化器的更新。这种封装方式简化了复杂计算的实现,使得模型能够有效地在多GPU环境中并行处理。

利用ResourcePool类,HybridFlow为模型部署提供了极大的灵活性。这个类将GPU设备集虚拟化,允许开发者根据需要将模型映射到指定的设备上。这种设计使得相同ResourcePool实例的模型可以共享同一组GPU,而不同实例则可以部署在不同的GPU集上,从而优化资源配置和使用效率。

图5   Actor模型初始化

数据流管理与异步执行

HybridFlow通过定义统一的数据传输协议(如3D_PROTO),管理模型间的数据流。每个协议包括一个集合函数和一个分发函数,这些函数负责在模型间高效地聚合和分配数据。例如,Actor模型的输出通过集合函数被送至单一控制器,然后通过分发函数按需分配给Critic模型。这种统一的数据切分机制确保了数据在不同并行组件间的正确同步和最小化延迟。

HybridFlow支持模型在分布式环境中的异步执行。(如图6)当模型部署在不同设备上时,它们的执行可以在输入数据准备就绪后立即触发,而无需等待其他模型。这种异步执行策略提高了整体的计算效率,使系统能够更快响应并处理复杂的RL任务。

图6  在两个模型之间使用 3D_PROTO 中的收集和分发函数进行异步数据重分配

灵活实现多种强化学习控制流算法

HybridFlow的API设计使得开发者可以用少量代码灵活实现多种强化学习算法。通过修改或添加简单的代码行,可以调整或实现如PPO、ReMax及Safe-RLHF等不同的RL算法。这种模块化的API设计大大降低了算法实现的复杂度,加快了开发和测试新算法的速度。

图7  用户可以通过简单地添加或删除几行代码来适应不同的 RLHF 算法

3.2 3D-HybridEngine(训练推理混合技术)

在在线强化学习(Online RL)中,Actor模型在训练和生成(Rollout)阶段需要频繁切换并适应不同的并行处理策略,造成了在传统计算框架下高额的通信和内存开销。3D-HybridEngine的设计旨在优化在线强化学习(RLHF)中actor模型的训练和生成过程,通过高效地管理模型权重重整和数据流转,显著提升系统的整体性能和资源利用率。3D-HybridEngine在一次迭代中的具体流程如图8所示。

图8 3D-HybridEngine 一次迭代的流程

迭代开始:模型参数更新与收集

在RLHF迭代开始时,3D-HybridEngine首先从上一迭代中收集更新后的actor模型参数。这一步通过所有GPU进行一个“all-gather”操作,确保每个计算单元都同步更新到最新状态。如图9(a)和9(b),显示了在训练与生成不同阶段使用的并行组。

图9  模型权重重分片。 使用两台机器,每台机器配备4个GPU,用于Actor训练和生成。

中间阶段:生成响应与数据处理

加载到每个模型副本的提示数据后,系统利用当前的模型参数生成响应。此阶段每个微数据并行(micro DP)组独立处理其数据子集。生成阶段完成后,3D-HybridEngine在每个微DP组内执行“all-gather”操作,聚合生成的响应数据。

迭代结束:训练阶段的参数重组与优化

根据生成阶段的需要,模型参数按新的并行组配置重新划分,以准备进入训练阶段。通过巧妙地重新定义生成阶段的并行分组,可以使每个 GPU 在生成阶段复用训练阶段已有的模型参数分片,避免在 GPU 内存中保存额外的模型参数,消除内存冗余。完成模型权重、提示和响应数据的正确分配后,计算actor模型的损失并更新模型权重,以根据RLHF算法进行优化。

3D-HybridEngine通过优化通信流程显著降低了模型训练和生成阶段之间的通信开销。通过在各个微数据并行组内局部执行“all-gather”操作,而非在所有GPU上进行广泛的数据聚合,该设计不仅减少了全局的通信需求,还提高了各GPU的独立处理能力,从而有效提升了整体计算效率并减少了系统资源的消耗。

3.3 实验性能

团队在 16 台 A100 GPU 集群上,对 HybridFlow 和主流 RLHF 框架进行对比实验。HybridFlow 的性能优势体现在其对不同强化学习算法如PPO、ReMax、和Safe-RLHF的处理上,其通过改进的数据处理和并行计算策略在各种模型尺度上显示出卓越的性能。

吞吐量提升

如图10和图11显示,HybridFlow在使用PPO和ReMax算法时,在128个GPU上处理13B参数模型的吞吐量是其他系统(如DeepSpeed-Chat和OpenRLHF)的数倍。对于PPO算法,HybridFlow在处理13B参数模型时,比DeepSpeed-Chat快最高达18.96倍(图10b)。在使用ReMax算法时,HybridFlow在相同的GPU配置下处理13B参数模型,速度提升高达3.66倍(图11b)。

图10 PPO 吞吐量。 括号内的数字表示与基线相比的 HybridFlow 加速比。

图11  ReMax 吞吐量。 括号内的数字表示与基线相比的 HybridFlow 加速比。

过渡时间减少

在图12中,HybridFlow显著减少了训练和生成阶段之间的过渡时间。例如,在使用70B模型时,HybridFlow的过渡时间比DeepSpeed-Chat减少了71.2%,HybridFlow采用的并行策略减少了必要的全局数据同步操作,从而大大减少了整体迭代时间。

图12 Actor训练与生成之间的过渡时间。

资源利用率

如图13所示,在16个GPU上运行7B模型时,通过适当调整生成阶段的TP大小,HybridFlow的生成时间比使用最大TP大小(即训练时的配置)减少了60.3%。HybridFlow通过调整并行策略,有效利用了GPU资源,减少了执行时间。

图13 在16个GPU上的Actor模型不同生成并行大小的时间分解

  1. (62 条消息) 强化学习 (Reinforcement Learning) - 知乎 (zhihu.com)
  2. 一文看懂什么是强化学习?(基本概念+应用场景+主流算法) (easyai.tech)
  3. 强化学习(一):简介——什么是强化学习?-CSDN博客
  4. 2014_emnlp_simtrans.pdf (umd.edu)
  5. 星际争霸2人类1:10输给AI!DeepMind “AlphaStar”进化神速 (baidu.com)
  6. 深度学习与强化学习相结合,谷歌训练机械臂的长期推理能力 | 雷峰网 (leiphone.com)
  7. 【深度强化学习】目前落地的挑战与前沿对策_深度强化学习前沿-CSDN博客
  8. 豆包大模型团队 - 字节跳动大模型团队 (doubao.com)
  9. HybridFlow框架:豆包大模型与香港大学的创新合作解读-易源AI资讯 | 万维易源 (showapi.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8635.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

练习LabVIEW第四十三题

学习目标: 模拟红绿灯,红灯亮十秒,绿灯亮五秒,交替,并用波形图将波形显示 开始编写: 前面板 两个指示灯,一个红色,一个绿色,一个波形图; 程序框图 创建…

css:基础

前言 我们之前其实也可以写出一个看起来算是一个网页的网页,为什么我们还要学css? CSS(Cascading Style Sheets)也叫层叠样式表,是负责美化的,我们之前说html就是一个骨架,css就可以用来美化网…

解析 “Cookies Not Marked as HttpOnly” 漏洞

一、引言 在 Web 应用安全领域,Cookies 相关的漏洞一直是备受关注的问题。其中,“Cookies Not Marked as HttpOnly” 漏洞可能会对用户数据安全和网站的正常运行造成潜在威胁。本文将详细介绍这个漏洞,包括其原理、影响、检测方法以及修复措…

基于MATLAB DCT域图像水印技术

1数字水印技术的概念和特点 数字水印(Digital Watermark)技术是将与多媒体内容相关或不相关的一些标示信息直接嵌入多媒体内容当中,但不影响原内容的使用价值,并不容易被人的知觉系统觉察或注意到。通过这些隐藏在多媒体内容中的…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 文章目录 【语义分割|代码解析】CMTFNet-2: …

在暗处执着生长,终有一日馥郁传香

总有人说很孤独,一个人吃饭,一个人上班,一个人逛街; 总有人又说享受孤独,面对时间,迎接苦难,战胜痛苦; 可没人说这些的大前提是你要有信念支撑啊,如果干完了上面的所有&a…

揭秘集装箱箱号自动识别原理,箱号识别算法

集装箱箱号自动识别算法是一种高效且实用的软件工具。它利用相机、手机或其他摄像头捕获集装箱箱号图像,并通过深度学习的OCR(光学字符识别)识别技术对集装箱号码进行准确识别。要想进行集装箱箱号识别,需要以下几个基本步骤&…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言,主要用于网页开发。它使得网页具有动态交互性,能够响应用户的操作。随着前端开发的不断发展,JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

高新技术企业知识库搭建:在创新创业中的支撑作用

在快速迭代的科技时代,高新技术企业(以下简称“高企”)作为推动经济社会发展的核心力量,正面临着前所未有的创新挑战与机遇。知识库,作为信息时代的智慧宝库,不仅承载着企业内部的宝贵知识与经验&#xff0…

ReposVul: A Repository-Level High-Quality Vulnerability Dataset 论文阅读

本文发表于 ICSE2024 会议中。 引入 在过去的漏洞数据库中,主要存在以下几种问题: 无效补丁(Tangled Patches):针对某个漏洞的补丁无法正确修复该漏洞缺乏跨函数漏洞(Inter-procedural Vulnerabilities&…

【图解版】力扣第70题:爬楼梯

推理出状态表达式 f(5)表示到达第5层,所有可能的方法数。 到达第5层,有可能是从第4层走一步上来,也有可能是从第3层走两步上来。所以我们可以慢慢延伸,画出上面👆🏻的图。 从图中,我们可以看到…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术,对进程进行封装隔离,一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行,镜像是容器的只读模板,容器是模板的一个实例。镜像是分层结…

QT——自定义控件绘图

一.QPaintEvent绘图事件 QPaintEvent是QT中一个重要的类,专门用于绘图事件。当QT视图组件需要重绘制自己的一部分时,就会产生该事件,通常发生在以下几种情况。 窗口第一次显示时:当窗口或控件第一次出现在屏幕中,系统…

Java项目实战II基于Java+Spring Boot+MySQL的高校办公室行政事务管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在高等教育…

非计算机背景但是想从事医学AI研究,需要掌握的编程语言|个人观点·24-11-08

小罗碎碎念 目前,我们从事医学AI研究的,接触的最多的两种编程语言应该就是R和Python了。那么初学者很容易提出一个疑问,**我想从事医学AI相关的研究的话,应该学哪些编程语言呢?**在文章的开头,我可以先给出…

arkUI:Flex弹性布局的各个属性

arkUI:Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 (Flex弹性布局的方向)2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

高效Web测试:构建Pytest、Allure和Jenkins的自动化测试生态

Pytest介绍 pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活、容易上手、文档丰富;支持参数化,可以细粒度地控制被测用例;能够支持简单的单元测试和复杂的功能测试,还可以用来…

ros入门:topic话题通信(c++)

准备工作 创建工作空间 mkdir -p demo02_pub/src/ 生成依赖文件 cd demo02_pub/ catkin_make 进入src目录执行 catkin_create_pkg ros_pub_sub/ roscpp rospy std__msgs 发布者实现 消息发布代码编写 cd demo02_pub/src/ros_pub_sub/src 创建代码文件demo01_pub.cc …

重建大师7.0 | 质效全面提升,塑造更优质的实景三维重建

在大势智慧“AI智算、国产信创”2024秋季新品发布会上,重建大师7.0版以其卓越性能惊艳登场。这一新版本不仅引入了创新的倾斜高斯泼溅方法(OPGS),实现城市级场景的高效三维重建。 针对传统倾斜建模方法,重建大师7.0同…

Unity性能优化5【物理篇】

1.刚体的碰撞检测属性首选离散型 离散碰撞的缺点是小物体快速移动时,有丢失碰撞的风险。此下拉菜单中,越下面的选项碰撞检测频率越高,性能消耗也显著增加。因此在选择碰撞检测类型时尽量选择离散型。 2.优化碰撞矩阵 合理标记碰撞矩阵可以减…