mcpField
V
verl-async-dapo

verl-async-dapo

github.com/ascend开发52100 次安装25 周前更新
代码仓库

关于 verl-async-dapo

verl-async-dapo 是用于启动 Verl 异步 DAPO 训练的 skill,面向需要配置容器、训练资源和特性的工作流。它提供单步异步训练流程,并在 OOM 时逐步追加显存相关特性后重试。

主要功能

  1. 01交互式选择容器与配置
  2. 02启动 One-Step-Off-Policy 训练
  3. 03配置训练与 Rollout GPU
  4. 04管理性能及显存特性
  5. 05OOM 后追加特性并重试
  6. 06集成 SwanLab 监控配置

适用场景

  1. 01启动 DAPO 异步训练任务
  2. 02为训练和 Rollout 分配 GPU
  3. 03通过特性调整训练配置
  4. 04发生 OOM 时自动重试训练

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ascend/agent-skills --skill verl-async-dapo

安装后在 Claude Code 中输入/verl-async-dapo确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
params.md
troubleshooting.md
workflow.md
scripts/
common.sh
config_generator.py
feature_manager.sh
preflight_check.sh
quick_start.sh
run_dapo.sh
run_one_step_off_policy.sh

详细介绍

来自项目 README

Verl 单异步 DAPO 训练

交互式启动流程

启动训练服务前,Agent 必须按以下顺序询问用户:

1. 容器选择
检测到以下容器:
  [1] jins ( 运行中)
  [2] 创建新容器

请选择容器 (1/2):
2. 代理配置(如创建新容器或网络问题)
请提供代理配置(如不需要请回复"无"):
  http_proxy: ?
  https_proxy: ?
3. 特性选择
是否有自定义特性需求?(回复"默认"使用默认配置)

性能特性(默认全开):
  - flash_attn: Flash Attention 加速
  - dynamic_batch: 动态 Batch Size
  - remove_padding: Remove Padding 优化
  - gradient_checkpointing: 梯度检查点

显存特性(默认关闭,OOM 时自动开启):
  - offload: 参数/优化器卸载
  - recompute: 重计算

可选特性:
  - prefix_cache: Prefix Cache
  - chunked_prefill: Chunked Prefill
4. SwanLab 配置(如未配置)
SwanLab 监控配置:
  Host: ?
  API Key: ?

快速开始

# 方式 1: 快速启动脚本 (推荐)
CONTAINER=jins TRAIN_STEPS=100 \
SWANLAB_HOST=http://10.143.2.129:8000 \
SWANLAB_API_KEY=your-key \
bash scripts/quick_start.sh

# 方式 2: 分步执行
# 2.1 训练前检查
bash scripts/preflight_check.sh

# 2.2 启动单异步 DAPO 训练 (使用默认特性进行训练)
export TRAIN_STEPS=4
bash scripts/run_dapo.sh

# 2.3 启动 One-Step-Off-Policy 训练
export TRAIN_STEPS=4
bash scripts/run_one_step_off_policy.sh
One-Step-Off-Policy 训练

One-Step-Off-Policy 是资源隔离的单异步训练模式,Trainer 和 Rollout 使用独立的 GPU 组。

# 基本用法
export TRAIN_STEPS=100
export TRAINER_GPUS=4
export ROLLOUT_GPUS=4
bash scripts/run_one_step_off_policy.sh

# 启用 offload 特性
export ENABLE_OFFLOAD=True
bash scripts/run_one_step_off_policy.sh

# FSDP2 框架
export FRAMEWORK=fsdp
bash scripts/run_one_step_off_policy.sh

配置参数:

变量默认值说明
FRAMEWORKmegatron框架 (megatron/fsdp)
TRAINER_GPUS4训练 GPU 数
ROLLOUT_GPUS4Rollout GPU 数
MAX_RESPONSE_LENGTH8192最大响应长度
ENABLE_OFFLOADFalse是否启用 offload

SwanLab 配置

SwanLab 配置由 swanlab-setup skill 提供,common.sh 启动时自动加载。详见 swanlab-setup skill 的 SKILL.md。

配置按优先级自动获取:环境变量 > 配置文件 > 交互式输入

# 环境变量(推荐)
export SWANLAB_HOST="http://your-swanlab-host:8000"
export SWANLAB_API_KEY="your-api-key"

重要:必须在 trainer.logger 参数中包含 "swanlab" 才能启用监控:

# 正确的 logger 配置(启用 SwanLab 监控)
trainer.logger='["console", "swanlab"]'

# 仅控制台输出(不启用监控)
trainer.logger='["console"]'

SwanLab 环境变量会自动被 verl tracking 模块读取:

  • SWANLAB_API_KEY: API 密钥
  • SWANLAB_LOG_DIR: 日志目录 (默认: swanlog)
  • SWANLAB_MODE: 模式 (cloud/local, 默认: cloud)

代理配置

export http_proxy="http://your-proxy:8080"
export https_proxy="http://your-proxy:8080"

训练监控策略

启动后行为:

  1. 输出 SwanLab 链接供用户自行查看
  2. 后台静默运行,不实时推送进度
  3. 仅在错误时通知用户(OOM、崩溃、配置错误等)

用户自行监控命令:

# 查看当前进度
docker exec {container} grep "Training Progress" /verl/train.log | tail -1

# 实时跟踪日志
docker exec {container} tail -f /verl/train.log

# 检查是否出错
docker exec {container} grep -E "Error|error|OOM|Exception" /verl/train.log | tail -10

特性管理策略

特性分类
类型特性默认状态说明
性能特性flash_attn✅ 默认开Flash Attention 加速
性能特性dynamic_batch✅ 默认开动态 Batch Size
性能特性remove_padding✅ 默认开Remove Padding 优化
性能特性gradient_checkpointing✅ 默认开梯度检查点
显存特性offload❌ 默认关参数/优化器卸载 (OOM 时自动追加)
显存特性recompute❌ 默认关重计算 (OOM 时自动追加)
可选特性prefix_cache❌ 默认关Prefix Cache
可选特性chunked_prefill❌ 默认关Chunked Prefill
特性优先级
用户显式指定 > 默认性能特性 > OOM 自动追加显存特性

重要:

  • 用户未指定时 → 使用默认性能特性(全开)
  • OOM 时 → 自动追加显存特性(即使用户指定了其他特性)
  • 用户显式指定的特性永不移除,只在 OOM 时追加
OOM 自动恢复流程
启动训练 (默认性能特性)
    ↓
OOM 错误?
    ├─ 是 → 追加 offload → 重试
    │   └─ 仍 OOM → 追加 recompute → 重试
    │       └─ 仍 OOM → 报告失败,建议调整参数
    └─ 否 → 训练成功(静默完成)

配置参数

环境变量
变量默认值说明
FRAMEWORKmegatron框架 (megatron/fsdp)
MODEL_PATHQwen3-8B模型路径
TRAIN_FILEdapo-math-17k.parquet训练数据
VAL_FILEaime-2024.parquet验证数据
TRAIN_STEPS100训练步数
TRAINER_GPUS4训练 GPU 数
ROLLOUT_GPUS4Rollout GPU 数
USER_FEATURES(空)用户显式指定特性,逗号分隔
MAX_OOM_RETRIES2OOM 最大重试次数
SWANLAB_HOST(从配置获取)SwanLab 服务器地址
SWANLAB_API_KEY(从配置获取)SwanLab API 密钥

详细参考

评论

支持 Markdown