跳到主要内容

MT-VeRL 入门

MT-VeRL 简介

环境准备

VeRL(Volcano Engine Reinforcement Learning)是面向大语言模型强化学习的训练框架,支持 PPO、GRPO 等算法,并可组合 Megatron 负责训练、SGLang 负责推理,通过 Ray 进行多机任务编排。典型流程包括准备数据和模型、将 HuggingFace 权重转换为 MCore 格式、配置 Ray 集群及 MCCL 网络,最后提交 RL 训练任务。

硬件与存储环境

本文示例基于四机 32 卡 MTT S5000 集群,使用摩尔线程训练镜像 training-suite:v2.1.5-musa-4.3.7。四台机器通过 NFS 共享 /data/datapool/,共享目录中放置 VeRL 代码、模型和数据。

创建并启动训练容器

在每台宿主机执行:

sudo docker create \
--privileged --env MTHREADS_VISIBLE_DEVICES=all --net host \
-v /data/:/data/ --name train-rl \
registry.mthreads.com/mcctest/training-suite:v2.1.5-musa-4.3.7 sleep infinity
sudo docker start train-rl
docker exec train-rl service ssh restart

配置四机 SSH 免密登录,并在主节点容器内创建 hostfile:

10.10.142.125 slots=8
10.10.134.71 slots=8
10.10.142.116 slots=8
10.10.142.119 slots=8

进入容器后使用 mthreads-gmi 检查 GPU;多机训练还需确认 MCCL_SOCKET_IFNAMEGLOO_SOCKET_IFNAME 与实际网卡一致。

使用 VeRL 进行强化学习训练

1. 准备数据集

典型数据目录为 /data/datapool/verl/musa_examples/data/,包含训练集和验证集 Parquet 文件。开始训练前检查文件是否可读:

ls -lh /data/datapool/verl/musa_examples/data/

2. 准备并转换模型

使用 ModelScope 下载 HuggingFace 格式模型:

pip install modelscope
modelscope download --model Qwen/Qwen3-8B \
--local_dir /data/datapool/models/Qwen3-8B

VeRL 的 Megatron 后端通常需要 MCore 格式。使用仓库中的 scripts/converter_hf_to_mcore.py 将模型转换到共享目录,并检查转换后的分片和元数据是否完整。

3. 配置运行环境

runtime_env.yaml 中声明 VeRL 依赖和代码路径;四机训练脚本中配置 MCCL、Gloo、模型、数据、Ray Head 地址及训练超参数。MoE 模型还需根据模型结构调整最大 prompt/response 长度和并行参数。

4. 启动 Ray 集群并提交训练

主节点启动 Ray 后,在主节点容器内提交任务:

RAY_ADDRESS="http://10.10.142.125:8265" ray job submit \
--runtime-env=runtime_env.yaml --no-wait -- \
python3 -u -m verl.trainer.main_ppo \
--config-path=/data/datapool/verl/verl/trainer/config \
--config-name=ppo_megatron_trainer_demo.yaml

根据算法配置选择 PPO 或 GRPO,并在 YAML 或命令行中设置 actor、rollout、critic、数据和 checkpoint 参数。

5. 监控和排障

  • 使用 Ray Dashboard、训练日志和 mthreads-gmi 观察任务状态、吞吐量及显存;
  • 多机通信失败时优先检查网卡名、IP、SSH 免密、MCCL 环境变量和端口;
  • 模型加载失败时检查 HF/MCore 路径、转换产物和共享存储挂载;
  • 长序列训练出现 OOM 时,降低 batch size 或 response length,并重新评估并行策略;
  • 训练完成后确认 checkpoint 与评估结果已写入共享目录。