vLLM社区横向支持多种LLM强化学习框架,包括verl、ROLL、AReaL等。社区于6月9号开源了vime强化学习框架,vime是vLLM生态系统中的一个强化学习框架,它将Slime的训练栈与vLLM的推理优势相结合,形成一个简单、稳定且高效的RL训练系统——从而实现稳定的训练-推理对齐、灵活的部署模式。昇腾深度参与了本次社区发布,并同步首发了昇腾适配版本,让用户可以在昇腾NPU上开箱即用地体验vime框架。
为什么是vime
vime基于Slime的训练栈和数据生成设计,将Megatron和vLLM连接成一个统一的强化学习(RL)流水线,从而使分布式训练和推理能够在统一的架构下可靠运行。
vime采用了Slime的三阶段解耦训练推理设计,主要区别在于其部署后端被vLLM取代:
训练(Megatron):主要训练循环,负责参数更新和将权重同步到rollout端。
展开(vLLM+路由器):推理采样,生成带有奖励或验证器信号的训练样本。
数据缓冲区:连接训练端和部署端,管理提示注入和自定义部署逻辑。
vime是一个基于Slime构建的、面向强化学习扩展的LLM后训练框架。它保留了Slime的训练栈与数据生成设计,同时使用vLLM(配合vllm-router)作为默认的rollout后端。vime提供四大核心能力:
易于使用:参数系统继承了Slime和Megatron的约定,vLLM端的参数通过--vllm-前缀传递。默认的rollout入口点是vime.rollout.vllm_rollout。
稳定的训练-推理一致性:在典型的密集训练和多目标训练场景下,train_rollout_logprob_abs_diff长时间运行后仍保持在可控范围内。对于多目标训练,R3(路由重放)进一步降低了训练-推理不匹配的情况。
算法和模型覆盖范围:GRPO和PPO等RL算法,以及Qwen3 Dense/MoE和GLM-4.5等模型,均提供端到端示例和CI验证路径。
多硬件支持:在框架层面,训练资源、部署资源和集群拓扑被统一抽象,随着vLLM生态系统的支持不断发展,更容易在不同的硬件后端之间重用相同的RL流水线。
昇腾支持vime框架适配与训练打通
昇腾团队在vime社区发布之际同步推进昇腾NPU的适配工作,目前已打通训推链路,适配的核心难点集中在权重传输、权重更新、resharding转换:
难点1:vLLM Ascend没有提供对外的权重更新功能
在vLLM Ascend中实现HCCLWeightTransferEngine和NPUIPCWeightTransferEngine两个用于共卡和非共卡场景的权重更新模块。
难点2:由于vLLM Ascend有自定义模块,导致权重更新会有fail告警
通过比对更新前后各模块权重数据,以及进行load_format=dummy的权重更新实验,排除了权重更新告警问题。
难点3:权重转换依赖megatron_bridge完成,npu上无法直接运行
基于mindspeed适配了megarton_bridge,并适配指定版本的megatron,从而打通整个训推链路。
基于昇腾的快速上手体验
环境准备
在体验之前,请确认您的Atlas A2/A3系列设备已正确安装固件/驱动,可运行如下命令确认:
npu-smi info
可以使用如下命令,拉起vime容器镜像:
# Update the vime imageexport IMAGE=quay.io/ascend/vime:vime-latestdocker run -d --name vime-npu -it --net=host --shm-size=1024g \ --privileged=true \ --cap-add=SYS_PTRACE \ --device=/dev/davinci_manager \ --device=/dev/hisi_hdc \ --device=/dev/devmm_svm \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/sbin:/usr/local/sbin \ -v /home:/home \ -v /mnt:/mnt \ -v /tmp:/tmp \ -v /data:/data \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \ $IMAGEdocker exec -it vime-npu bash
数据准备
可以从Hugging Face、ModelScope等平台下载所需的模型和数据集。以下是使用huggingface_hub下载示例资源的命令:
# 下载模型权重 (Qwen/Qwen3-4B)hf download Qwen/Qwen3-4B --local-dir /path/to/Qwen/Qwen3-4B# 下载训练数据集 (dapo-math-17k)hf download --repo-type dataset zhuzilin/dapo-math-17k \ --local-dir /path/to/dapo-math-17k
npu支持meagtron_bridge进行权重转换,因此不需要进行额外的离线权重过程。
代码仓下载
我们提供了可直接运行在NPU上的vime框架代码,可直接下载安装使用:
git clone https://github.com/vllm-project/vime.git -b npupip install -e .
开始训练
完成上述准备工作后,即可运行NPU训练脚本。
Qwen3-4B训练参考脚本--qwen3_4b_example.sh:
export SLIME_SCRIPT_TRAIN_BACKEND=megatronexport PYTHONPATH="/root/Megatron-Bridge/src:/root/Megatron-LM/:$PYTHONPATH"export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15export CUDA_DEVICE_MAX_CONNECTIONS=1export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1export HCCL_HOST_SOCKET_PORT_RANGE=60000-60050export HCCL_NPU_SOCKET_PORT_RANGE=61000-61050export HYDRA_FULL_ERROR=1export MASTER_PORT=$(shuf -i 20000-65000 -n 1) # or any free portexport DISABLE_L2_CACHE=1export VLLM_ASCEND_ENABLE_NZ=0SCRIPT_DIR="/root/vime/scripts"source "${SCRIPT_DIR}/models/qwen3-4B.sh"LOG_FILE="/root/vime/train_qwen3_4b_vllm.log"python train.py \ --train-backend megatron \ --actor-num-nodes 1 \ --actor-num-gpus-per-node 4 \ --rollout-num-gpus 4 \ --rollout-num-gpus-per-engine 4 \ ${MODEL_ARGS[@]} \ \ --hf-checkpoint /path/to/Qwen/Qwen3-4B \ \ --prompt-data /path/to/dapo-math-17k/dapo-math-17k.jsonl \ --input-key prompt \ --label-key label \ --apply-chat-template \ --rollout-shuffle \ --rm-type math \ \ --rollout-backend vllm \ --vllm-weight-sync-mode native \ --vllm-gpu-memory-utilization 0.6 \ --vllm_enforce_eager \ --vllm-enable-sleep-mode \ --vllm-max-model-len 4096 \ \ --num-rollout 200 \ --rollout-batch-size 32 \ --n-samples-per-prompt 8 \ --rollout-max-response-len 2048 \ --rollout-temperature 1.0 \ --global-batch-size 256 \ --balance-data \ \ --advantage-estimator grpo \ --kl-loss-coef 0.0 \ --kl-loss-type low_var_kl \ --kl-coef 0.00 \ --entropy-coef 0.0 \ --eps-clip 0.2 \ --eps-clip-high 0.28 \ \ --optimizer adam \ --lr 1e-6 \ --lr-decay-style constant \ --weight-decay 0.1 \ --adam-beta1 0.9 \ --adam-beta2 0.98 \ \ --tensor-model-parallel-size 4 \ --pipeline-model-parallel-size 1 \ --context-parallel-size 1 \ --expert-model-parallel-size 1 \ --expert-tensor-parallel-size 1 \ --recompute-granularity full \ --recompute-method uniform \ --recompute-num-layers 1 \ --use-dynamic-batch-size \ --max-tokens-per-gpu 8192 \ --load /path/to/Qwen/Qwen3-4B \ --megatron-to-hf-mode bridge \ \ --attention-dropout 0.0 \ --hidden-dropout 0.0 \ --accumulate-allreduce-grads-in-fp32 \ --attention-softmax-in-fp32 \ --attention-backend flash \ --micro-batch-size 1 \ --use-flash-attn \ \ --train-memory-margin-bytes 2147483648 \ 2>&1 | tee -a "$LOG_FILE"
参照qwen3_4b_example.sh,修改训练脚本中的对应参数,即可开始训练。主要修改参数包括:
--hf-checkpoint、--load:指定已下载的Hugging Face模型权重路径。
--prompt-data:指定训练数据集的路径。
运行训练脚本:
bash qwen3_4b_example.sh
训练效果
下图为Qwen3-4b模型的训练raw_reward曲线:其中红色曲线代表基于昇腾NPU的训练结果,蓝色曲线表示业界设备的训练结果。从reward曲线特征可见,收敛趋势跟参考曲线高度一致,数值也基本吻合,表明在昇腾NPU上的训练效果跟业界相持平。
未来规划
下一步,我们将与vLLM社区开发者共同完善vime,不断扩展主流模型的昇腾支持。我们诚挚邀请社区伙伴共同参与,携手塑造vime的未来发展方向。您可以通过已有的GitHub仓库和用户文档来了解更多的细节,与我们共同讨论Roadmap和新功能。
GitHub仓库:
https://github.com/vllm-project/vime
用户文档:
https://github.com/vllm-project/vime/tree/main/docs/zh
问题反馈:
https://github.com/vllm-project/vime/issues
◆往期推荐◆
全新开源ops-collections,现在NPU也可以使用哈希表来处理数据!
评论 (0)