cann-recipes-train 实战:昇腾 DeepSeek-R1 与 Qwen2.5 强化学习优化
仓库概览
cann-recipes-train 旨在为大模型训练提供基于 CANN 平台的优化样例与实践指南。在昇腾环境中,该仓库面向典型的 LLM 与多模态模型训练任务,提供可直接复用的代码样例,帮助开发者跳过'看文档懂了但不会用'的坑,快速掌握 CANN 的优化技巧。
首批版本中上线了两个基于 Verl 强化学习框架的典型训练样例:
- DeepSeek-R1 RL 训练优化:基于开源 verl 框架,搭配 MindSpeed+vLLM-Ascend 框架,在 Atlas A3 集群实现 GRPO 算法的高吞吐 RL 训练,系统吞吐量可达 120 TPS/卡。
- Qwen2.5 强化学习(入门):基于 Qwen2.5-1.5B-Instruct 模型,采用 verl 框架,在 MATH-lighteval 数学推理数据集上训练,仅需单卡 Atlas A2 环境即可快速上手。
环境准备
资源配置
- 计算资源:NPU 910B,32 vCPU + 64GB 内存。
- 容器镜像:ubuntu22.04-py3.11-cann8.2.rc1-sglang-main-notebook。
启动后通过 npu-smi 检查 NPU 状态、利用率及显存占用情况,确保资源低负载且无冲突进程。
依赖安装
将 cann-recipes-train 克隆到本地,进入 rl_train 目录查看特定模型的 RL 训练样例集合。
对于 DeepSeek-R1 项目,需安装核心依赖(如 verl、torch_npu 等)。虽然部分版本可能存在冲突,但不影响核心功能运行。同时拉取 Verl(指定 Commit)、vLLM(v0.9.1)、vLLM-Ascend(打补丁)及 Megatron-LM、MindSpeed 等多个指定版本的 AI 相关依赖框架,复制到对应目录下搭建适配环境。
DeepSeek-R1 优化实践
部署要求
- 硬件:Atlas A3 系列,最少 128 张 A3 卡。
- 框架:Verl + MindSpeed-LLM + vLLM-Ascend。
关键优化点解读
1. 框架适配:Verl × vLLM-Ascend
vLLM-Ascend 社区已做好 DeepSeek-R1 的昇腾适配,但要让 verl 和它兼容,需修改关键接口,主要是初始化 vLLMRollout 对象的 vllm_rollout_spmd.py 文件。
- 手动加 Patch:导入 vLLM 前需先引入 patch,否则部分类和函数不匹配。
- DP 通信参数:设置
VLLM_DP_MASTER_PORT和 IP,保证每个 DP 组有独立通信端口,适应集群环境。 - 关闭 Sleep 模式:NPU 多机下 sleep 会导致显存释放不了,还需避免显存被 vLLM 内存池接管,后续无法手动卸载。
- 调整 Token 参数:加载真实权重时,默认
max_num_batched_token=8192容易 OOM,建议改为 1024 再开启 chunked_prefill。


