首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
使用 verl 对 Qwen3 进行强化学习(RL)训练:GRPO/PPO 全流程实战指南
📅 2026/9/11 7:27:30
✍️ 爱科研究院
👁 阅读 3,247
使用 verl 对 Qwen3 进行强化学习RL训练GRPO/PPO 全流程实战指南【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5verl 是火山引擎开源的 LLM 强化学习RL训练库也是论文 HybridFlow: A Flexible and Efficient RLHF Framework 的开源实现。本文以 Qwen3 系列模型为核心完整介绍如何在 verl 中配置环境、准备数据并通过 FSDP vLLM 的组合以 GRPO 算法启动 Qwen3-1.7B 的 RL 训练同时深入解析训练命令中每一个关键参数的作用与取值建议。verl 是什么面向 LLM 的灵活、高效、生产级 RL 训练库verl 是一个专门为大型语言模型LLM设计的强化学习训练库其定位是灵活flexible、高效efficient且生产就绪production-ready。它是论文 HybridFlow: A Flexible and Efficient RLHF Framework、LLaMA-Factory、ms-swift、Unsloth 共同构成 Qwen3 的后训练工具链参见 docs/source/index.rst 中 Training 目录的编排。灵活性与易用性verl 的灵活性和易用性主要体现在以下四个方面多样化的强化学习算法扩展verl 采用混合控制器hybrid-controller编程模型融合了单一控制器single-controller与多控制器multi-controller的优势能够灵活表示并高效执行复杂的后训练数据流Post-Training dataflows。用户只需几行代码即可构建 GRPO、PPO 等强化学习数据流。与现有 LLM 基础设施无缝集成verl 通过模块化 API 解耦计算与数据依赖能够与 PyTorch FSDP、Megatron-LM、vLLM、SGLang 等主流 LLM 训练与推理框架无缝集成且易于扩展至其他框架。灵活的设备映射与并行性verl 支持将模型放置到不同的 GPU 集合上实现高效的资源利用并支持在不同规模的集群上灵活扩展。与热门 HuggingFace 模型即插即用verl 支持 Qwen、Llama 等主流 LLM 模型可直接以 HuggingFace 仓库 ID 或本地路径指定模型。高效性业界领先的吞吐量verl 集成了先进的 LLM 训练与推理引擎实现了领先的 RL 吞吐性能。3D-HybridEngine 高效 Actor 重分片verl 在训练与生成两个阶段切换时通过 3D-HybridEngine 消除内存冗余并显著降低通信开销这是其 RL 吞吐性能的重要来源。强化学习RL支持的多框架组合与多算法verl 当前支持多种训练框架与推理框架的组合包括 FSDP、Megatron-LM 与 vLLM、SGLang 等并支持 PPO、GRPO、DAPO 等多种强化学习算法。这意味着你可以根据自身硬件与业务诉求自由选择训练框架 × 推理框架 × RL 算法的组合。第一步环境与训练准备环境配置请按照 verl 官方安装指南完成。准备阶段通常包含两步数据准备与模型下载。数据准备以 GSM8K 数学推理数据集为例通过 verl 仓库提供的预处理脚本生成训练所需的标准格式数据git clone https://github.com/volcengine/verl.git cd verl python3 examples/data_preprocess/gsm8k.py --local_dir ~/data/gsm8k执行后会在~/data/gsm8k目录下生成train.parquet与test.parquet等文件供后续训练命令中的data.train_files与data.val_files引用。模型下载可直接通过 HuggingFace 的 transformers 管线触发模型下载例如下载 Qwen3-1.7Bpython3 -c import transformers; transformers.pipeline(text-generation, modelQwen/Qwen3-1.7B)第二步开始训练在 verl 中训练框架与推理框架可以自由组合只要训练框架和推理框架本身分别支持模型训练与推理任务verl 即可支撑相应的 RL 训练。官方示例选择了FSDP训练 vLLM推理 GRPO算法的组合来训练 Qwen3-1.7B因为该模型仅需一张 80GB 显存的 GPU外加内存大于 64GB 的机器即可启动训练。以下是完整的训练命令python3 -m verl.trainer.main_ppo \ algorithm.adv_estimatorgrpo \ data.train_files$HOME/data/gsm8k/train.parquet \ data.val_files$HOME/data/gsm8k/test.parquet \ data.train_batch_size1024 \ data.max_prompt_length512 \ data.max_response_length1024 \ data.filter_overlong_promptsTrue \ data.truncationerror \ actor_rollout_ref.model.pathQwen/Qwen3-1.7B \ actor_rollout_ref.actor.optim.lr1e-6 \ actor_rollout_ref.model.use_remove_paddingTrue \ actor_rollout_ref.actor.ppo_mini_batch_size80 \ actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu20 \ actor_rollout_ref.actor.use_kl_lossTrue \ actor_rollout_ref.actor.kl_loss_coef0.001 \ actor_rollout_ref.actor.kl_loss_typelow_var_kl \ actor_rollout_ref.actor.entropy_coeff0 \ actor_rollout_ref.model.enable_gradient_checkpointingTrue \ actor_rollout_ref.actor.fsdp_config.param_offloadFalse \ actor_rollout_ref.actor.fsdp_config.optimizer_offloadFalse \ actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu20 \ actor_rollout_ref.rollout.tensor_model_parallel_size1 \ actor_rollout_ref.rollout.namevllm \ actor_rollout_ref.rollout.gpu_memory_utilization0.6 \ actor_rollout_ref.rollout.n3 \ actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu20 \ actor_rollout_ref.ref.fsdp_config.param_offloadTrue \ algorithm.use_kl_in_rewardFalse \ trainer.critic_warmup0 \ trainer.logger[console] \ trainer.project_nameverl_grpo_example_gsm8k \ trainer.experiment_nameqwen3_1_7b_function_rm \ trainer.n_gpus_per_node1 \ trainer.nnodes1 \ trainer.save_freq-1 \ trainer.test_freq5 \ trainer.total_epochs15 $该命令以python3 -m verl.trainer.main_ppo作为入口说明 verl 使用同一个 PPO 训练主程序承载多种算法——通过algorithm.adv_estimatorgrpo指定优势估计器advantage estimator为 GRPO即可将同一套 RL 数据流切换到 GRPO 算法类似地将其切换为 ppo 即可运行 PPO这也印证了文档中几行代码构建 GRPO、PPO 数据流的设计理念。数据与模型相关参数解析参数取值作用说明data.train_files/data.val_files$HOME/data/gsm8k/train.parquet/test.parquet指定训练与验证数据文件即第一步预处理生成的 parquet 文件data.train_batch_size1024每轮 RL 迭代的全局训练 batch 大小data.max_prompt_length512prompt 的最大 token 长度超长样本会被截断或过滤data.max_response_length1024模型生成响应response的最大 token 长度data.filter_overlong_promptsTrue是否过滤过长的 prompt 样本防止超出上下文窗口data.truncationerror截断策略设为error表示当数据超出设定长度时直接报错而不是静默截断从而保证数据质量actor_rollout_ref.model.pathQwen/Qwen3-1.7BActor 模型的来源可以是 HuggingFace 仓库 ID 或本地路径训练端actor参数解析参数取值作用说明actor_rollout_ref.actor.optim.lr1e-6Actor 学习率。RL 训练通常采用比 SFT 更小的学习率如 1e-6 量级以稳定训练actor_rollout_ref.model.use_remove_paddingTrue训练时移除 padding token减少无效计算、提升效率actor_rollout_ref.actor.ppo_mini_batch_size80PPO/GRPO 更新阶段每个 mini-batch 的大小actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu20每张 GPU 上的微批次大小用于控制显存占用actor_rollout_ref.actor.use_kl_lossTrue是否使用 KL 惩罚KL loss约束 Actor 与参考模型ref的分布差异actor_rollout_ref.actor.kl_loss_coef0.001KL 惩罚系数权衡探索与稳定性actor_rollout_ref.actor.kl_loss_typelow_var_klKL 损失的计算类型low_var_kl为低方差变体有助于稳定训练actor_rollout_ref.actor.entropy_coeff0熵奖励entropy bonus系数设置为 0 表示不引入额外的熵正则actor_rollout_ref.model.enable_gradient_checkpointingTrue开启梯度检查点activation checkpointing以计算换显存降低显存需求actor_rollout_ref.actor.fsdp_config.param_offloadFalse是否将模型参数 offload 到 CPU。训练阶段关闭可保持吞吐参考模型阶段则开启见下文actor_rollout_ref.actor.fsdp_config.optimizer_offloadFalse是否将优化器状态 offload 到 CPU本例关闭以保证训练速度生成端rollout与参考模型ref参数解析参数取值作用说明actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu20生成阶段计算 log_prob 时每 GPU 的微批次大小actor_rollout_ref.rollout.tensor_model_parallel_size1vLLM 生成时的张量并行度单卡场景下为 1actor_rollout_ref.rollout.namevllm推理引擎选择为 vLLM即采用 FSDP训练 vLLM生成的组合actor_rollout_ref.rollout.gpu_memory_utilization0.6vLLM 可使用的 GPU 显存比例本例为 60%为训练过程预留余量actor_rollout_ref.rollout.n3GRPO 中每个 prompt 采样的响应数量GRPO 通过对 n 个采样响应估计优势值actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu20参考模型计算 log_prob 时每 GPU 的微批次大小actor_rollout_ref.ref.fsdp_config.param_offloadTrue参考模型参数 offload 到 CPU。由于参考模型不参与梯度更新将其 offload 可显著释放显存值得注意的是actor_rollout_ref.rollout.namevllm与 FSDP 的组合体现了 verl 的模块化设计训练端使用 FSDP 做数据并行与分片训练生成端调用 vLLM 做高吞吐采样两者通过 3D-HybridEngine 在训练与生成阶段之间高效切换并重分片模型从而规避显存冗余与通信开销问题。算法与训练调度参数解析参数取值作用说明algorithm.adv_estimatorgrpo选择优势估计器为 GRPO确定 RL 算法algorithm.use_kl_in_rewardFalse是否将 KL 惩罚并入奖励计算此处为 FalseKL 惩罚由actor_rollout_ref.actor.use_kl_loss独立控制trainer.critic_warmup0Critic 预热步数。GRPO 属于 actor-only 算法无需 Critic故设为 0trainer.logger[console]日志输出方式可扩展为 wandb 等trainer.project_nameverl_grpo_example_gsm8k实验所属项目名trainer.experiment_nameqwen3_1_7b_function_rm本次实验名trainer.n_gpus_per_node1每节点使用的 GPU 数量trainer.nnodes1节点数量单机训练为 1trainer.save_freq-1保存 checkpoint 的频率-1表示训练期间不保存trainer.test_freq5每 5 轮迭代在验证集上测试一次trainer.total_epochs15总训练轮数命令末尾的$允许你将其他任意参数透传给训练程序例如在需要多机多卡时覆盖trainer.nnodes、trainer.n_gpus_per_node等配置而无需改写整条命令。调参要点与实操建议基于上述参数结构在实际训练中可关注以下几点显存紧张时优先开启梯度检查点enable_gradient_checkpointingTrue是最直接的省显存手段若仍不足可将actor_rollout_ref.rollout.gpu_memory_utilization适当调低为训练端预留更多显存。扩大 GRPO 采样数 nactor_rollout_ref.rollout.n直接决定每个 prompt 的采样响应数量n 越大优势估计越稳定但生成成本随之线性上升需要根据吞吐目标权衡。KL 惩罚是稳定性的关键kl_loss_coef过小可能导致策略漂移过大则限制探索kl_loss_typelow_var_kl适合在训练初期快速收敛的稳定版本。多卡扩展该命令以单机单卡为基准。扩展到多卡或多节点时可保持 FSDP vLLM 组合不变调整trainer.n_gpus_per_node、trainer.nnodes以及 vLLM 的tensor_model_parallel_sizevLLM 的并行度应与 GPU 拓扑匹配以获得最优采样吞吐。从 FSDP 切换到 Megatron-LM若需要训练更大规模的 Qwen3 模型如 30B-A3B、235B-A22B 等 MoE 模型可将训练端替换为 Megatron-LM推理端仍使用 vLLM 或 SGLangverl 的模块化 API 支持这类自由组合。结束语verl 以混合控制器编程模型和 3D-HybridEngine 为核心为 Qwen3 等主流 LLM 提供了一套灵活、高效、可组合的强化学习训练方案。通过本文的完整命令与逐参数解析你已经可以在单张 80GB GPU 上启动 Qwen3-1.7B 的 GRPO 训练并具备向 PPO、DAPO 等算法以及 FSDP/Megatron-LM × vLLM/SGLang 等组合扩展的能力。如果在使用过程中遇到任何困难可以前往 verl 官方讨论区 参与讨论。【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/11 7:27:30
FlatBuffers Java 开发指南:从 `flatc --java` 代码生成到字典式二分查找实战
2026/9/11 7:27:30
在 Render 上部署 agentmemory:Blueprint 持久化磁盘 + HMAC 密钥安全落地的完整方案
2026/9/11 7:22:29
SystemInformer 历史版本获取与版本回退:3条路径装对旧版本
2026/9/11 8:12:33
Linux管道:匿名与命名管道的原理与应用
2026/9/11 8:12:33
FFmpeg与Shell实现智慧园区视频自动化处理方案
2026/9/11 8:12:33
原创视频时间戳保护:原理、流程与维权指南
2026/9/11 8:12:33
Java锁机制详解:从synchronized到分布式锁
2026/9/11 8:12:33
MacOS下Jam编译工具链问题解析与优化
2026/9/11 8:07:32
AI大模型工程实战课:聚焦LLM服务化、RAG与Agent工业落地
2026/9/11 0:02:03
数据容灾核心指标与实战方案解析
2026/9/11 0:02:03
Huly 平台 ClickUp 任务导入实战指南:从 CSV 导出到一键迁移全流程解析
2026/9/11 0:02:03
PyTorch 构建与代码生成工具链深度解析:从 tools 目录看懂构建流程、autograd/JIT 代码生成与 HIPify 移植
2026/9/11 5:40:15
超人会飞不算本事:系统稳定依赖清晰规则与边界设计
2026/9/10 5:51:31
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
2026/9/10 8:32:02
基于CNN的调制信号识别:MATLAB实现时频图分类实战