发起 Verl 强化学习训练任务
本文以 Qwen3-4B 模型和 GSM8K 数据集为例,演示如何使用平台的 Ray 分布式框架提交 Verl 训练任务。
资源准备
在开始之前,请确保您已准备好以下资源,并将其上传至共享高性能存储中。
- 数据集:下载 GSM8K 数据集,并按照官方示例进行预处理。
- 本教程中示例存放路径:
/mnt/public/InnovationLab/data/gsm8k
- 本教程中示例存放路径:
- 模型:下载 Qwen3-4B 模型。
- 本教程中示例存放路径:
/mnt/public/InnovationLab/models/Qwen/Qwen3-4B
- 本教程中示例存放路径:
- Verl 代码:下载 Verl 代码库(本例使用 0.5.0 版本)。
- 本教程中示例存放路径:
/mnt/public/InnovationLab/code/verl
- 本教程中示例存放路径:
创建任务
在智算云平台任务列表页面点击 创建任务,选择「训练任务」。
基础配置
首先,我们需要配置任务的基础运行环境,包括算力资源、镜像以及分布式框架的选择。这些配置将决定 Verl 训练任务的底层计算能力和网络通信方式。
- 算力资源:选择合适的 GPU 规格(例如 8 卡算力规格)。
- 镜像:选择包含必要依赖的镜像(例如平台预置的 Verl 0.5+vLLM 镜像)。
- 分布式框架:选择 Ray。如需了解平台对 Ray 框架的支持详情,请参考 发起 Ray 分布式训练。
- RDMA 配置:建议使用支持 IB/RoCE 训练网的 8 卡资源规格,且开启 RDMA 配置。
- 容错:建议开启。
注意
本文仅涵盖 Verl 训练任务所需的特定配置。关于任务创建页面的通用配置项(如资源池选择、存储挂载、基本信息填写等)的详细说明,请参考文档 快速创建训练任务。
配置 Runtime Env
Verl 需要通过 Ray 的 Runtime Env 广播环境变量和工作目录。在任务配置页面的 RuntimeEnv 配置栏(JSON 格式)中填入以下内容:
json
{
"working_dir": "/mnt/public/InnovationLab/code/verl",
"excludes": [
"/.git/"
],
"env_vars": {
"VLLM_USE_V1": "1",
"RAY_DEDUP_LOGS": "0",
"TORCH_NCCL_AVOID_RECORD_STREAMS": "1",
"CUDA_DEVICE_MAX_CONNECTIONS": "1",
"WANDB_MODE": "offline",
"WANDB_DIR": "/mnt/public/InnovationLab/logs"
}
}提示
您也可以通过前端的 环境变量 栏配置您希望配置的环境变量,平台会自动将环境变量解析并带入到 Ray Cluster 的 Runtime Env 中。
填写启动命令
在启动命令栏中,无需编写 ray job submit,只需填写实际的 Python 训练命令。平台会自动创建 Ray Cluster 并提交作业。
示例启动命令:
shell
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_files="/mnt/public/InnovationLab/data/gsm8k/train.parquet" \
data.val_files="/mnt/public/InnovationLab/data/gsm8k/test.parquet" \
data.train_batch_size=1024 \
data.max_prompt_length=1024 \
data.max_response_length=1024 \
data.filter_overlong_prompts=True \
data.truncation='error' \
actor_rollout_ref.model.path="/mnt/public/InnovationLab/models/Qwen/Qwen3-4B" \
actor_rollout_ref.actor.optim.lr=1e-6 \
actor_rollout_ref.model.use_remove_padding=True \
actor_rollout_ref.actor.ppo_mini_batch_size=256 \
actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=16 \
actor_rollout_ref.actor.use_kl_loss=True \
actor_rollout_ref.actor.kl_loss_coef=0.001 \
actor_rollout_ref.actor.kl_loss_type=low_var_kl \
actor_rollout_ref.actor.entropy_coeff=0 \
actor_rollout_ref.model.enable_gradient_checkpointing=True \
actor_rollout_ref.actor.fsdp_config.param_offload=False \
actor_rollout_ref.actor.fsdp_config.optimizer_offload=False \
actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=16 \
actor_rollout_ref.rollout.tensor_model_parallel_size=2 \
actor_rollout_ref.rollout.name=vllm \
actor_rollout_ref.rollout.gpu_memory_utilization=0.6 \
actor_rollout_ref.rollout.n=5 \
actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=16 \
actor_rollout_ref.ref.fsdp_config.param_offload=True \
algorithm.use_kl_in_reward=False \
trainer.critic_warmup=0 \
trainer.logger='["console","wandb"]' \
trainer.project_name='verl_grpo_example_gsm8k_math' \
trainer.experiment_name='qwen3_4b_function_rm' \
trainer.n_gpus_per_node=8 \
trainer.nnodes=2 \
trainer.save_freq=20 \
trainer.test_freq=5 \
trainer.total_epochs=15注意
请根据您的实际路径修改 data.train_files、data.val_files 和 actor_rollout_ref.model.path 等参数。
任务运行与监控
任务创建完成后,进入任务详情页。
- 查看 Ray Dashboard:点击详情页顶部的 Ray Dashboard 链接,可以查看 Ray Actor 的执行情况和资源使用状态。
- 查看日志:点击 任务日志 标签页,可以跟踪任务的执行日志,确认训练是否正常迭代。