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_IFNAME、GLOO_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 与评估结果已写入共享目录。

