Hotdry.
ai-systems

VERL 中异步 Actor-Critic 更新用于多轮对话实时在线对齐

探讨 VERL 框架中异步 Actor-Critic 更新机制,实现多轮 LLM 对话的实时偏好优化,支持低延迟对齐而无需完整离线重训,提供工程化参数与监控要点。

在大型语言模型(LLM)的后训练阶段,强化学习从人类反馈(RLHF)已成为提升模型对齐的关键技术。传统 RLHF 管道通常依赖离线批处理训练,导致在多轮对话场景中难以实现实时优化。VERL(Volcano Engine Reinforcement Learning for LLMs)框架通过引入异步 Actor-Critic 更新机制,解决了这一痛点。该机制允许 Actor 模型的训练与 Rollout 生成解耦,支持在线偏好优化,从而在保持低延迟的同时,实现对多轮对话的增量对齐,而无需进行完整的离线重训。

VERL 的异步 Actor-Critic 更新基于 PPO(Proximal Policy Optimization)算法的核心架构,其中 Actor 负责生成策略(即模型响应),Critic 评估状态价值。不同于同步训练的共置模式,VERL 的 “一歩离线异步训练”(one-step off-policy async training)将 Rollout 模型置于独立的 GPU 集群中,通过 NCCL 通信高效同步权重。这种设计显著降低了 GPU 闲置时间,尤其适用于工具调用频繁的多轮交互场景。例如,在 ReAct 循环中,当 Agent 发出搜索 API 或代码执行请求时,事件循环可立即切换到其他 Rollout 请求,确保 GPU 利用率接近 100%。

证据显示,该机制在 8 张 A100 GPU 上训练 Qwen2.5-3B 模型时,异步模式下的延迟通常低于 300ms,与基线共置模式的吞吐量相当,甚至在多节点扩展时表现出色。实验对比了三种配置:共置基线、独立 Rollout 和一歩离线异步。结果表明,异步同步开销可忽略不计,同时提升了整体训练效率。VERL 还集成了 vLLM 和 SGLang 作为 Rollout 后端,支持基于 Token 的生成接口,避免文本 - Token 转换的不可逆问题,确保优势计算的准确性。在多轮对话中,通过实例 ID 管理有状态会话,异步处理工具调用,进一步降低了延迟。

要落地 VERL 的异步 Actor-Critic 更新,可从配置入手。核心参数包括:设置 actor_rollout_ref.hybrid_engine=False 以禁用混合引擎,实现模型分离;rollout.n_gpus=4 指定 Rollout 模型占用的 GPU 数量(例如总 8 张 GPU 时,剩余用于 Actor 和 Critic);rollout.nnodes=1trainer.nnodes=1 配置节点数,支持多节点扩展。优化 Rollout 时,使用 rollout.name=vllmsglang,并设置 rollout.gpu_memory_utilization=0.6 控制内存利用率。PPO 更新参数:actor_rollout_ref.actor.ppo_mini_batch_size=256critic.ppo_mini_batch_size=256,确保 Actor 和 Critic 的 mini-batch 大小匹配;actor_rollout_ref.actor.ppo_epochs=4 指定更新轮数,平衡收敛速度与稳定性。KL 散度控制:algorithm.kl_ctrl.type=adaptive 启用自适应 KL 控制器,防止策略崩溃。

对于多轮对话的在线对齐,需集成工具调用支持。使用 SGLang 的 async_generate 接口,通过 Ray Actor 远程调用 TP 组。配置 data.max_prompt_length=512data.max_response_length=1024 处理长序列;启用 data.filter_overlong_prompts=True 过滤过长提示。监控要点包括:追踪权重同步延迟(目标 <300ms),使用 WandB 日志记录 trainer.logger=['console','wandb'];观察 GPU 利用率,避免长尾请求阻塞;优势估计使用 GAE(Generalized Advantage Estimation),参数 algorithm.adv_estimator=grpo 以提升稳定性。在生产环境中,回滚策略为:若 KL 散度超过阈值(e.g., 0.02),暂停异步同步,切换至同步模式重训一轮。

实施清单:

  1. 安装 VERL 并配置环境:pip install verl ,准备 Ray 集群。
  2. 数据准备:Parquet 格式的多轮对话数据集,包含提示、响应和偏好标签。
  3. 模型加载:actor_rollout_ref.model.path=Qwen/Qwen2.5-3B-Instruct
  4. 启动训练:运行 python -m recipe.one_step_off_policy.async_main_ppo ,指定配置 YAML。
  5. 验证:监控收敛曲线,确保 AIME 等基准分数提升 ≥5%。
  6. 部署:集成到生产 Agent 框架如 LangGraph,测试端到端延迟 <1s。

潜在风险包括异步更新的陈旧性(staleness)可能导致轻微不稳定,但低延迟设计已证明在实践中可控。相比离线 PPO,该方法在多轮场景下将对齐延迟从小时级降至秒级,适用于实时聊天机器人和 Agent 系统。

资料来源:VERL GitHub 仓库(https://github.com/volcengine/verl),PR #2231(one-step off async training recipe),官方文档(https://verl.readthedocs.io/en/latest/)。

查看归档