GenStudio LLM API 部分模型价格调整公告GenStudio LLM API 部分模型价格调整公告 ,新价格 2025 年 11 月 1 日生效调价公告
Skip to content

发起 Verl 强化学习训练任务

本文以 Qwen3-4B 模型和 GSM8K 数据集为例,演示如何使用平台的 Ray 分布式框架提交 Verl 训练任务。

资源准备

在开始之前,请确保您已准备好以下资源,并将其上传至共享高性能存储中。

  1. 数据集:下载 GSM8K 数据集,并按照官方示例进行预处理
    • 本教程中示例存放路径:/mnt/public/InnovationLab/data/gsm8k
  2. 模型:下载 Qwen3-4B 模型
    • 本教程中示例存放路径:/mnt/public/InnovationLab/models/Qwen/Qwen3-4B
  3. 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_filesdata.val_filesactor_rollout_ref.model.path 等参数。

任务运行与监控

任务创建完成后,进入任务详情页。

  1. 查看 Ray Dashboard:点击详情页顶部的 Ray Dashboard 链接,可以查看 Ray Actor 的执行情况和资源使用状态。
  2. 查看日志:点击 任务日志 标签页,可以跟踪任务的执行日志,确认训练是否正常迭代。