上级索引:verl/README.md。
本页面面向:已在昇腾机器上装好驱动与 Docker 的用户,介绍如何使用 Verl 框架跑通 Qwen2.5-7B 的 GRPO 训练。
技术细节与参数说明请以 Verl 官方文档 为准。
按以下步骤操作后,你将在 Atlas 200T A2 Box16 上使用 Verl 框架完成 Qwen2.5-7B 的 GRPO 训练。
本页不解决以下问题:宿主机未安装昇腾驱动、无对应机型、无 Docker——请先完成 昇腾环境准备。
在宿主机执行以下命令(有正常输出即可进入下一步):
npu-smi info
docker --version
python --version参考 Verl Ascend Quickstart,安装以下软件包:
| 软件 | 版本 |
|---|---|
| Python | >= 3.10, <3.12 |
| CANN | == 8.5.0 |
| torch | == 2.8.0 |
| torch_npu | == 2.8.0 |
# 安装torchvision,版本需要和torch匹配
pip install torchvision==0.22.1
# 清理环境上可能存在的历史triton/triton-ascend软件包残留
pip uninstall -y triton triton-ascend
# 安装triton-ascend
pip install triton-ascend==3.2.0
# 安装transformers
pip install transformers==4.57.6# 激活CANN环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
# 安装vllm
git clone --depth 1 --branch v0.13.0 https://github.com/vllm-project/vllm.git
cd vllm && pip install -r requirements/build.txt
VLLM_TARGET_DEVICE=empty pip install -v -e . && cd ..
# 安装vllm-ascend
git clone -b releases/v0.13.0 https://github.com/vllm-project/vllm-ascend.git
cd vllm-ascend && pip install -r requirements.txt
export COMPILE_CUSTOM_KERNELS=1 && pip install -v -e . && cd ..git clone --recursive https://github.com/volcengine/verl.git
cd verl && pip install -r requirements-npu.txt && pip install -v -e . && cd ..
# (可选)更新recipe子模块
cd recipe && git checkout main && cd ..| 来源 | 链接 |
|---|---|
| HuggingFace | Qwen/Qwen2.5-7B-Instruct |
mkdir -p ~/.cache/huggingface
# 使用 huggingface-cli 或 git lfs 下载到本地python3 examples/data_preprocess/gsm8k.py --local_save_dir ~/data/gsm8k在 verl 目录下执行:
set -x
export VLLM_ATTENTION_BACKEND=XFORMERS
python3 -m verl.trainer.main_ppo \
algorithm.adv_estimator=grpo \
data.train_files=$HOME/data/gsm8k/train.parquet \
data.val_files=$HOME/data/gsm8k/test.parquet \
data.train_batch_size=128 \
data.max_prompt_length=512 \
data.max_response_length=128 \
data.filter_overlong_prompts=True \
data.truncation='error' \
actor_rollout_ref.model.path=Qwen/Qwen2.5-7B-Instruct \
actor_rollout_ref.actor.optim.lr=5e-7 \
actor_rollout_ref.model.use_remove_padding=False \
actor_rollout_ref.actor.entropy_coeff=0.001 \
actor_rollout_ref.actor.ppo_mini_batch_size=64 \
actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=20 \
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.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=40 \
actor_rollout_ref.rollout.enable_chunked_prefill=False \
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=40 \
actor_rollout_ref.ref.fsdp_config.param_offload=True \
algorithm.kl_ctrl.kl_coef=0.001 \
trainer.critic_warmup=0 \
trainer.logger=console \
trainer.project_name='verl_grpo_example_gsm8k' \
trainer.experiment_name='qwen2_7b_function_rm' \
trainer.n_gpus_per_node=8 \
trainer.nnodes=1 \
trainer.save_freq=-1 \
trainer.test_freq=5 \
trainer.total_epochs=1 $@| 现象 | 建议 |
|---|---|
| 训练报错找不到 torch_npu | 检查 CANN 和 torch_npu 是否正确安装 |
| OOM / 显存不足 | 调小 train_batch_size 或 max_prompt_length |
| 模型下载慢 | 宿主机预先下载并挂载到容器内 |
| 参数看不懂 | 阅读 官方文档 |
| 说明 | 链接 |
|---|---|
| Verl 官方文档 | 文档 |
| Ascend 快速开始 | ascend_quick_start |
| GitHub 仓库 | volcengine/verl |
*环境版本与训练参数随 Verl 发布更新,若与官方文档冲突,以官方为准。