论文阅读:2024 arxiv HybridFlow: A Flexible and Efficient RLHF Framework
https://www.doubao.com/chat/3875396379023618
HybridFlow: A Flexible and Efficient RLHF Framework
https://arxiv.org/pdf/2409.19256
https://github.com/volcengine/verl
速览
这篇论文主要介绍了一个名为HybridFlow的新型框架,旨在提升大语言模型(LLM)中“基于人类反馈的强化学习”(RLHF)的效率和灵活性。以下是核心内容的通俗解读:
1. RLHF是什么?为什么需要优化?
RLHF是训练大语言模型(如GPT、Llama)的关键技术,通过人类反馈让模型生成更符合伦理、更有用的内容。传统RLHF框架存在两个主要问题:
- 效率低:用单一控制器管理所有计算和通信,导致调度开销大,尤其在处理数十亿参数的LLM时效率低下。
- 灵活性差:用多控制器独立管理每个设备,导致代码耦合度高,难以支持不同算法和模型配置。
2. HybridFlow的核心创新:混合编程模型
HybridFlow结合了单一控制器和多控制器的优点:
- 节点间(模型间):用单一控制器统一协调数据传输和执行顺序。例如,演员模型生成文本后,控制器自动将数据分发给评论家模型评分,无需手动编写通信代码。
- 节点内(模型内):每个模型(如演员、评论家)内部用多控制器并行计算,利用现有的LLM训练框架(如Megatron-LM、DeepSpeed)优化计算效率。
好处:
- 灵活:用户只需几行代码即可搭建不同RLHF流程(如PPO、Safe-RLHF),无需关心底层分布式计算细节。
- 高效:减少控制器调度开销,同时利用多GPU并行计算,提升吞吐量。
3. 3D-HybridEngine:零冗余的模型切换
在RLHF中,演员模型需要在“训练阶段”(更新参数)和“生成阶段”(生成文本)之间切换,传统方法会导致大量内存冗余和通信开销。3D-HybridEngine通过以下方式优化:
- 零内存冗余:训练和生成阶段共享同一套模型参数,通过巧妙的分组策略(如调整张量并行和数据并行的比例),避免重复存储参数。
- 低通信开销:仅在小范围内(如“微数据并行组”)同步参数,相比传统方法减少70%以上的通信量。
4. 自动设备分配算法:让GPU资源更高效
HybridFlow提供自动算法,根据模型大小和集群规模,动态分配GPU资源:
- 场景适配:小集群中,将所有模型放在同一组GPU上,充分利用资源;大集群中,将演员和评论家模型分开放置,实现并行计算。
- 负载均衡:避免GPU空闲或内存溢出,例如将大模型(如70B参数的评论家)分配更多GPU,小模型(如7B参数的演员)分配较少GPU。
5. 实验效果:速度提升显著
在不同模型规模(7B到70B参数)和算法(PPO、ReMax等)中,HybridFlow相比现有框架(如DeepSpeed-Chat、OpenRLHF):
- 吞吐量提升:1.53倍到20.57倍,尤其在大模型和复杂算法中优势明显。
- 过渡开销降低:演员模型在训练和生成阶段的切换时间减少55%以上,70B模型切换时间从78秒降至8秒以内。
6. 总结:HybridFlow的价值
- 推动RLHF研究:开源框架降低开发门槛,支持更多新算法(如安全RLHF、数学推理训练)。
- 资源利用率优化:通过混合架构和自动分配,让不同规模的团队(从小型集群到大型数据中心)都能高效训练LLM。
一句话总结:HybridFlow通过“分层控制+高效切换+智能分配”,让大模型的人类反馈训练更快、更灵活,为开发更安全、更智能的AI奠定基础。
github
这个仓库 verl
是一个由 ByteDance Seed 团队发起并由 verl
社区维护的强化学习训练库,全称为 Volcano Engine Reinforcement Learning for LLMs
,用于大语言模型(LLMs)的训练。以下是关于该仓库的详细介绍:
仓库概述
verl
是 HybridFlow: A Flexible and Efficient RLHF Framework 论文的开源版本,具有灵活、高效且适合生产环境的特点。它可以轻松扩展各种强化学习算法,与现有的大语言模型基础设施无缝集成,支持灵活的设备映射,并能与流行的 HuggingFace 模型集成。
主要特性
- 灵活性
- 多样化 RL 算法扩展:通过混合控制器编程模型,能够灵活表示和高效执行复杂的后训练数据流,只需几行代码就能构建如 GRPO、PPO 等 RL 数据流。
- 模块化 API 集成:解耦计算和数据依赖,可与现有的大语言模型框架(如 FSDP、Megatron - LM、vLLM、SGLang 等)无缝集成。
- 灵活的设备映射:支持将模型灵活放置在不同的 GPU 集合上,以实现高效的资源利用和跨不同集群规模的可扩展性。
- 与 HuggingFace 模型集成:可直接使用流行的 HuggingFace 模型。
- 高效性
- 高吞吐量:集成了最先进的大语言模型训练和推理引擎,实现了最先进的 RL 吞吐量。
- 高效的模型重分片:使用 3D - HybridEngine 进行高效的 actor 模型重分片,消除内存冗余,显著减少训练和生成阶段之间转换时的通信开销。
支持的算法和技术
- 训练框架:支持 FSDP 和 Megatron - LM 进行训练。
- 生成框架:支持 vLLM、SGLang 和 HF Transformers 进行 rollout 生成。
- 模型兼容性:与 Hugging Face Transformers 和 Modelscope Hub 兼容,如 Qwen - 2.5、Llama3.1、Gemma2、DeepSeek - LLM 等。
- 学习类型:支持监督微调(Supervised fine - tuning)和多种强化学习算法,如 PPO、GRPO、ReMax、REINFORCE++、RLOO、PRIME、DAPO、DrGRPO 等。
- 奖励类型:支持基于模型的奖励和基于函数的奖励(可验证奖励)。
- 多模态支持:支持视觉语言模型(VLMs)和 [多模态 RL](examples/grpo_trainer/run_qwen2_5_vl - 7b.sh)。
- 优化技术:支持 Flash attention 2、[sequence packing](examples/ppo_trainer/run_qwen2 - 7b_seq_balance.sh)、sequence parallelism(通过 DeepSpeed Ulysses)、LoRA、Liger - kernel。
- 扩展性:可扩展到 70B 模型和数百个 GPU。
- 实验跟踪:支持使用 wandb、swanlab、mlflow 和 tensorboard 进行实验跟踪。
近期新闻
- 2025/05:
verl
将在 GOSIM x PyTorch Day 2025 上展示。 - 2025/04:将在 ICLR 2025 Expo、[SCI - FM workshop](https://open - foundation - model.github.io/) 和 LMSys afterparty 上进行关于最新后训练技术和
verl
编程指南的教程。 - 2025/04:[Seed - Thinking - v1.5](https://github.com/ByteDance - Seed/Seed - Thinking - v1.5/blob/main/seed - thinking - v1.5.pdf) 技术报告发布,该模型使用
verl
训练,在 AIME 2024、Codeforces 和 GPQA 等测试中表现出色。 - 2025/04:正在开发 VAPO 的开源配方,该算法在 AIME 2024 上取得了 60.4 的成绩。
- 2025/03:
verl v0.3.0.post1
发布。 - 2025/03:[DAPO](https://dapo - sia.github.io/) 开源,基于 Qwen2.5 - 32B 预训练模型在 AIME 2024 上取得 50 分的成绩,其训练完全由
verl
支持,复现代码可在recipe/dapo
中找到。
代码结构
.gitignore
.pre - commit - config.yaml
.readthedocs.yaml
LICENSE
Notice.txt
README.md
pyproject.toml
requirements.txt
requirements_sglang.txt
setup.py
recipe/dapo/drgrpo/prime/r1/
.vscode/settings.json
scripts/converter_hf_to_mcore.pydiagnose.pymodel_merger.py
.github/dependabot.ymlworkflows/
verl/__init__.pymodels/protocol.pysingle_controller/third_party/trainer/utils/version/workers/
docs/MakefileREADME.mdREADME_vllm0.7.md...
examples/...
docker/...
tests/...
未来特性
- 路线图:https://github.com/volcengine/verl/issues/710
- DeepSeek 671b 与 Megatron v0.11 的优化:https://github.com/volcengine/verl/issues/708
- 多轮 rollout 优化:https://github.com/volcengine/verl/pull/1037 https://github.com/volcengine/verl/pull/1138
- 环境交互:https://github.com/volcengine/verl/issues/1172