verl 架构精通指导

发布时间:2026/9/29 7:42:59

verl 架构精通指导 verl 架构精通指导面向已跑通 PPO/GRPO、需要改算法、换并行策略、做异步训练、扩展后端或压吞吐的工程师与研究员。阅读建议先读同目录《verl 架构入门指导》再按本文「问题驱动」深入。1. 精通目标你要能回答的问题为什么 HybridFlow 在 LLM-RL 上优于「纯多 Controller」与「纯单 Controller」权衡点在哪register/ Dispatch / Collect / n-d mesh 如何把 SPMD Worker 伪装成单机 APIActorRolloutRefWorkerTrainingWorkerBaseEngine Rollout 的职责边界与扩展点训练并行度DP/TP/PP/EP与生成并行度不一致时权重如何 reshard内存为何能接近「零冗余」如何用同一套 Worker 能力拼出 Online DPO / GRPO / 自定义算法而不复制后端代码Colocated vs Disaggregated、同步 vs One-step-off async 各自适用什么规模与延迟模型若以上都能画图并落到配置/代码路径即可视为「精通 verl 架构」。2. HybridFlow 设计精读2.1 两层 Dataflow 与软件复用论文与官方指南的关键洞察NN 训练图节点是算子边是 tensor。RL 图节点是高层算子rollout / logprob / update边是跨角色数据移动。LLM 把「节点内部」变成多进程后若把控制流也多进程化并对齐绑定维度统一多 Controller分离verl固定算法 固定后端的峰值效率往往更高略有 Driver 通信税换 FSDP↔Megatron / vLLM↔SGLang难控制与计算耦合易控制流不动写新算法GRPO、Online DPO…多进程协调成本高Driver 上改几段调用动态/异构放置难ResourcePool 映射即可verl 明确选择用少量通信换算法与后端的组合爆炸复用。论文报告相对基线约1.5×–20×吞吐提升来源不仅是编程模型还有3D-HybridEngine等系统优化。2.2 执行模型Driver 视角main_task (Ray remote, 建议非 head) └── RayPPOTrainer.fit() ├── RLHFDataset / DataLoader → 全局 batch在 Driver ├── ResourcePool colocated WorkerGroup └── loop: dispatch DataProto → Workers Workers 内部Engine / Rollout SPMD collect → union → 轻量 advantageDriver update metrics ckpt精通要点Driver 应保持「薄」——只做编排、轻量统计与 advantage重计算、集体通信、优化器状态必须在 Worker/Engine 内。3. 现行组件分层2025–2026 主线旧fsdp_workers/megatron_workers/ 独立 Actor·Critic·ShardingManager 已收敛。精通应以engine_workers为准。3.1 分层图┌──────────────────────────────────────────────────────────┐ │ Trainer 层main_ppo / RayPPOTrainer / Hydra config │ │ - 算法循环、KL、advantage、校验、日志、ckpt 调度 │ └────────────────────────────┬─────────────────────────────┘ │ RayWorkerGroup DataProto ┌────────────────────────────▼─────────────────────────────┐ │ Worker 层engine_workers │ │ ActorRolloutRefWorker ─┬─ TrainingWorker (actor/ref) │ │ ├─ BaseRollout (vLLM/SGLang/HF) │ │ └─ checkpoint_engine (权重同步) │ │ TrainingWorker独立── Critic / RM / SFT / DPO │ └────────────────────────────┬─────────────────────────────┘ │ EngineRegistry ┌────────────────────────────▼─────────────────────────────┐ │ Engine 层BaseEngine 实现 │ │ FSDP/FSDP2 | Megatron | Automodel | VeOmni | TorchTitan │ │ ( NPU MindSpeed 等) │ │ forward_step / train_batch / infer_batch / ckpt / export│ └──────────────────────────────────────────────────────────┘3.2 ActorRolloutRefWorker角色组合表role构建内容典型场景actorTrainingWorker checkpoint engine纯训练角色rolloutBaseRollout独立推理池refforward-only TrainingWorker独立参考策略actor_rolloutactor rollout ckpt最常见 colocated PPOactor_rollout_ref三者全开单池最大复用LoRA PPO 友好为何 colo actorrollout权重同步可走 NCCL/本地避免跨机全量拷贝成为瓶颈。为何 colo actorrefLoRAref 即 baseadapter 开关即可省一整份大模型。3.3 TrainingWorker统一「引擎外壳」职责持有一个BaseEngine optimizer profilerset_loss_fn注入 PPO / distillation / 自定义 losstrain_mini_batch按 PPO epoch × mini-batch 循环每 mini-batch 一步优化infer_batchlogprob / value / reward / teacher支持no_lora_adapterto(cpu|device)手动 offload和生成阶段抢显存时关键Critic、RM、独立 Ref 都是同一套 TrainingWorker 不同 engine configlm_head vs value_head。3.4 EngineRegistry后端真正插拔点运行时由actor.strategy/engine.strategy解析例如model_typebackendEnginelanguage_modelfsdp / fsdp2FSDPEngineWithLMHeadlanguage_modelmegatronMegatronEngineWithLMHeadvalue_modelfsdp2 / megatron*EngineWithValueHead…automodel / veomni / torchtitan / mindspeed对应实现扩展新后端的标准路径实现BaseEngine子类forward_step、并行、ckpt、get_per_tensor_param等EngineRegistry.register(model_type..., backend...)配置strategy: your_backendWorker 层无需改已 engine-agnostic4. 单 Controller 编程模型深潜4.1 没有语法糖时的真实成本chunksdata.chunk(dp_size)futs[wg._workers[i].generate_sequences.remote(chunks[i])foriinrange(dp_size)]outtorch.cat(ray.get(futs),dim0)每个 RPC 都重复切分 → 分发 → 收集。算法一长可读性与正确性双崩。4.2register的契约register(dispatch_modeDispatch.DP_COMPUTE_PROTO)defgenerate_sequences(self,data:DataProto)-DataProto:...含义输入/输出遵循DataProto或现行 TensorDict 路径以源码为准Dispatcher 按并行拓扑切 batch各 rank SPMD 执行Collector 拼接/归约回 Driver预置模式历史与现行Dispatch.ONE_TO_ALL如init_model、update_weightsDispatch.DP_COMPUTE_PROTO纯 DP 切分make_nd_compute_dataproto_dispatch_fn(mesh_name...)从 Engine 实际 mesh 推导Megatron 的 PP 可对 Driver投影为额外 DP 维从而避免为每个后端手写MEGATRON_PP_AS_DP_PROTO精通时请直接读verl/single_controller/base/decorator.py与 Worker 上每个register。4.3 DataProto / batch 代数主循环大量使用pop抽出生成所需字段union把 logprob / values / rewards 并回同一 batchmeta_info携带 metrics、全局步数等设计纪律凡跨 Worker 的数据字段名、dtype、sequence 维、mask 约定必须稳定算法扩展优先「加字段 union」而不是另起平行数据结构。5. 权重同步与 3D-HybridEngine5.1 问题本质Actor训练并行布局大 TP/PP/EP、FSDP shard与推理布局vLLM/SGLang 的 TP、可能不同 PP几乎总不一致。朴素做法训练一份权重 推理一份权重 →约 2× 显存 昂贵 broadcast。5.2 3D-HybridEngine 思想论文精心选择生成阶段的 TP/PP 分组与 micro-DP使各卡上的训练分片与生成分片最大化重叠过渡期用并发 all-gather在 micro-DP 内完成布局变换目标近零权重冗余 显著降低 reshard 通信实践中在 verl 里体现为colocatedcheckpoint_engine.backend naive→engine.get_per_tensor_param→rollout.update_weightsdisaggregated / asyncnccl全量广播或delta只同步相对上轮变化的参数见 One Step Off Policy 配方LoRAmodel.lora.mergeTrue时可先 merge 再推给 rollout5.3update_weights时序典型同步 PPOupdate_actor → (可选 offload optimizer) → update_weights → generate_sequences → ...异步 / one-step-off边生成边训练rollout 用 θ_tactor 更新 θ_{t1}再通过 checkpoint_engine 推送精通者必须能根据集群拓扑选择模式优点代价 / 风险Colocated sync实现简单权重一致调试友好生成与训练串行GPU 利用率波形明显Disaggregated训练池与推理池异构扩缩需要稳定的权重传输与版本协议One-step-off async掩盖气泡吞吐更高轻微 off-policy要控 KL / 学习率 / sync 频率6. Ray Trainer初始化与放置策略6.1 ResourcePool 与 colocateRayResourcePool(process_on_nodes[n_gpus_per_node]*nnodes,use_gpuTrue,max_colocate_count1,# FSDP 常荐 1多角色进同一进程)FSDPmax_colocate_count1create_colocated_worker_cls合并角色减少 CUDA/分布式上下文。Megatron历史上更常1或分池若强行同进程合并各角色共享同一 3D 并行度——若要 actor/critic 不同 TP/PP应分 ResourcePool、不要 colocate。6.2 初始化顺序文档硬建议critic / ref / rm 先init_modelactor_rollout 最后 init让 vLLM 在剩余显存上规划 KV cache这是大规模训练「能不能稳跑」的关键运维知识不是风格问题。6.3 并行配置思维模型全局 batch在 Drivermicro batch在 Engine 防 OOM。改吞吐优先rollout 并行与 KV、生成长度、n每 prompt 采样数。改收敛优先ppo_mini_batch_size、ppo_epochs、clip_ratio、KL 机制、adv_estimator。切勿把 micro_batch 当成算法超参去扫在实现正确时不应改变收敛语义。7. 算法扩展范式从 PPO 到任意 RLHF官方原则一句话Single process drives multi-process computation and data communication.7.1 三步法务必内化列出 SPMD 计算 API例generate_sequences/compute_log_prob/update_policy/infer为每种分布式拓扑实现 dispatch/collect或复用内置在 Driver 用这些 API 编排控制流7.2 Online DPO 映射示例算法步骤Worker API每 prompt 生成 N 条SampleGenerator.generate_sequences打分排序成 pairDriver 或 RM Workerref logprobReferencePolicy.inferDPO 更新DPOActor.update同一 ResourcePool 可挂多组 WorkerGroup也可 colocate。多数情况下应复用 PPO 已验证的 Engine/Rollout而不是重写分布式。7.3 GRPO / 无 Critic 算法配置层algorithm.adv_estimatorgrpo等架构层可关掉 critic WorkerDriver 用组内相对奖励估优势精通点理解advantage 估计是算法可插拔点与 Engine 无关7.4 KL 控制的两条管路Reward 内 KLalgorithm.use_kl_in_rewardkl_ctrlfixed / adaptiveActor KL lossactor.use_kl_losskl_loss_coefkl_loss_typek1/k2/k3/full 及直通变体二者语义不同调参时不要混为同一个旋钮。Dual-clipclip_ratio_c则是对负优势过大 ratio 的下界保护。8. 性能与正确性精通级排查清单8.1 吞吐火焰图逻辑阶段阶段常见瓶颈方向timing/genKV、采样长度、rollout TP、调度气泡升推理引擎、拆推理池、异步weight sync全量广播、冗余两份权重HybridEngine / delta sync / coloupdate_actor并行度、重计算、通信FSDP2、Megatron 3D、activation ckptDriver 侧过大 batch 集中在 Driver、频繁 ray.get减 meta、避免大结果落地 CPU数据变长 padding 浪费seqlen balancing、pack8.2 正确性雷区Dispatch mesh 与真实并行不一致→ 静默错分数据比 OOM 更可怕。生成用 θ_new、logprob 用 θ_old 未对齐→ PPO ratio 语义损坏。token-level score 与 response mask 不对齐→ advantage 泄漏到 prompt。ref 与 actor tokenizer/chat template 不一致→ KL 失真。异步训练未限制离策略程度→ 短期吞吐升、长期不收敛。8.3 FSDP2 / Megatron 选择直觉中小模型、快速迭代FSDP2官方推荐方向更好内存与 composability可torch.compile。超大模型 / MoE / 极致 3DMegatron EP与 vLLM/SGLang 组合冲击数百 B 级。多轮 / 工具 / Agent优先评估 SGLang multiturn 与 sandbox 配方。9. 配置与代码的「控制平面」精通者应能从一份 Hydra 覆盖还原运行时拓扑actor_rollout_ref:model:path:...actor:strategy:fsdp2ppo_mini_batch_size:...ppo_micro_batch_size:...clip_ratio:0.2use_kl_loss:falserollout:name:vllm# 或 sglangn:1tensor_model_parallel_size:...ref:...critic:strategy:fsdp2algorithm:adv_estimator:gaeuse_kl_in_reward:falsegamma:...lam:...trainer:nnodes:...n_gpus_per_node:...阅读配置的顺序资源 → 角色是否 colocate → 训练 strategy → 推理引擎 → batch 三维global/mini/micro→ 算法adv/KL/clip→ 日志与 ckpt。10. 源码阅读地图建议顺序顺序路径读什么1verl/trainer/main_ppo.py入口、RewardManager、Worker 装配2verl/trainer/ppo/ray_trainer.pyfit真源placementvalidate3verl/single_controller/**WorkerGroup、decorator、ResourcePool4verl/workers/engine_workers.pyRPC 面与 role 组合5verl/workers/engine/**你使用的 Backend 实现6verl/workers/rollout/**生成与 update_weights7verl/trainer/ppo/core_algos.py或等价loss、KL、advantage8examples/tests/special_e2e/可运行契约与回归论文 HTMLhttps://arxiv.org/html/2409.19256 —— 精读Hybrid controller API与3D-HybridEngine 分组两节。11. 精通实践课题建议亲手做最小改动换算法在 Driver 把 PPO 换成「生成 N 条 → 组内归一化优势 → 无 Critic 更新」对照 GRPO 实现。自定义 Reward规则 RM 融合断言 token-level 形状。拆池ActorRollout 与 Critic 分 ResourcePool测量利用率与通信。新 Backend 骨架一个 dummyBaseEngine注册进 Registry跑通init_model 空train_batch。异步配方按官方 one-step-off 文档打开 delta sync画 θ 版本时间线。故障注入故意错误dispatch mesh观察现象并写排查笔记。12. 架构决策备忘录决策推荐默认何时偏离控制/计算分离保持极致定制内核且算法冻结时可考虑更紧耦合FSDP2中小到中大模型默认上 Megatron 当 3D/MoE 刚需Actor↔Rollout colo默认同步 PPO推理池要弹性扩缩时 disaggregateAdvantage 在 Driver轻量估计估计本身很重时下沉 Worker奖励在 Driver 组合规则多、逻辑活RM 很大时独立 RM Worker先正确后异步sync 收敛基线基线稳定后再 one-step-off13. 小结精通 verl不是背更多类名而是掌握四条杠杆控制流单进程—— 算法创新的主战场WorkerGroup Dispatch—— 把 SPMD 藏起来的边界Engine / Rollout 双后端—— 训练与生成各自 SOTAHybridEngine / checkpoint_engine—— 消除 RLHF 最贵的「两份权重 布局切换」税抓住这四条就能在 verl 上稳定扩展算法、模型规模与集群拓扑。参考链接HybridFlow 论文https://arxiv.org/abs/2409.19256Programming Guidehttps://verl.readthedocs.io/en/latest/hybrid_flow.htmlPPO Ray Trainerhttps://verl.readthedocs.io/en/latest/workers/ray_trainer.htmlEngine Workershttps://verl.readthedocs.io/en/latest/workers/engine_workers.html算法扩展https://verl.readthedocs.io/en/latest/advance/dpo_extension.htmlPPO / GRPOhttps://verl.readthedocs.io/en/latest/algo/ppo.html代码仓库https://github.com/verl-project/verl
延伸阅读

更多相关文章

2026/9/25 2:04:14

开源AI编程助手Kimi K3本地部署与前端开发实战指南

最近,AI编程助手领域又迎来了一波新的冲击。如果你还在纠结是继续订阅 Claude 还是等待 GPT-5,那么一个来自国内的开源模型可能已经悄然改变了游戏规则。它不是 DeepSeek,而是月之暗面(Moonshot AI)最新推出的Kimi K3。…

2026/9/25 13:01:00

LangChain学习——Agent入门

一、什么时Agent Agent 是能自己思考、自己决定要不要调用工具、完成复杂任务的 AI 智能体。 普通大模型:你问一句,它直接回答,不会自己调用外部能力。 Agent:大模型充当 “大脑”,可以自主决策:判断要不要…

2026/9/28 18:19:11

链表 -- 环链表

环链表的创建4 node_t *clinklist_create(void)5 {6 node_t*pheadmalloc(sizeof(node_t));7 if(pheadNULL)8 {9 printf("malloc fail");10 return NULL;11 }12 phead->nextphead;13 return phead;14 }与普通链表区分&…

2026/9/29 12:39:46

C++模板元编程面试必考:从入门到精通,一文全解析!

C++模板元编程面试必考:从入门到精通,一文全解析! 本文是C++高级面试系列第12篇,专注于模板元编程(Template Metaprogramming, TMP)。模板元编程是C++最强大的特性之一,也是大厂面试中最常被问到的难点。无论你是准备校招还是社招,这篇文章都将帮你彻底拿下这个知识点。…

2026/9/29 12:39:46

数智人一体机低功耗设计与全生命周期成本优化指南

在规划数字人展厅或智能门店项目时,很多决策者容易陷入一个直观的误区:盯着采购报价单上的数字,谁便宜就选谁。这种“一次性买断”的思维模式在短期看来似乎控制了预算,但一旦设备进入 724 小时的长时运行状态,隐藏的账…

2026/9/29 12:39:46

2024年TensorFlow 2.x实战:从安装配置到模型部署

1. TensorFlow为什么值得重新关注:2024年的生态现状坦白说,过去两年里我的主力框架一直是PyTorch。2023年底有一个工业界项目需要把训练好的模型部署到几十台不同配置的服务器上,我重新把TensorFlow捡了回来,结果发现它和我印象里…

2026/9/29 12:39:46

用Dify搭建智能复盘工具:让项目沉淀不再是马后炮

hindsight这个英文词,直译过来是"后见之明",说难听点就是"马后炮"。但把它做成一个正经的AI应用,价值就完全不一样了——团队项目做完后,复盘不能只靠口头感慨和文档归档。我在Dify上搭了一个叫"hindsig…

2026/9/29 12:34:46

端侧智能体部署实战:算力之外的内存、功耗与调度瓶颈

端侧智能体这个词,过去一年在各种发布会和行业峰会上被反复提及,但真正动手做过端侧部署的开发者心里都清楚,从"芯片能跑模型"到"智能体真正能干活",中间隔着的距离远比想象中大。我过去一年多时间先后在几款…

2026/9/29 11:07:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/28 6:05:15

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 0:04:04

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:04:04

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/29 9:46:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑