跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonNuctAI算法

cann-recipes-train 解析:昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习实践

基于 cann-recipes-train 仓库,解读昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践。通过 verl 框架结合 MindSpeed 与 vLLM-Ascend,实现训推一体化、参数重排及算子融合等优化。DeepSeek-R1 在 Atlas A3 集群达到高吞吐,Qwen2.5 单卡即可快速上手。文章涵盖环境部署、框架适配、奖励函数优化及性能提升路径,为开发者提供昇腾 LLM 训练实战指南。

神经兮兮发布于 2026/4/6更新于 2026/5/2438 浏览
cann-recipes-train 解析:昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习实践

cann-recipes-train 解析:昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习实践

在大模型训练追求效率的阶段,CANN 解决了底层异构硬件适配与资源调度问题。现有模型代码无需大改即可对接,训 LLM 或多模态模型时可通过算子优化、内存复用提升速度。

cann-recipes-train 仓库提供可直接复用的代码样例,涵盖具体 LLM 的训练优化步骤、多模态模型的算子调试方法,帮助开发者跳过文档理解到实际应用的坑,快速掌握 CANN 优化技巧。

该仓库面向典型的 LLM 与多模态模型训练任务,提供基于 CANN 平台优化样例与实践指南。首批版本包含两个基于 verl 强化学习框架的典型训练样例,分别覆盖 Qwen2.5 与 DeepSeek-R1-671B 两大模型。

DeepSeek-R1 RL 训练优化实践样例:基于开源 verl 框架,搭配 MindSpeed+vLLM-Ascend 框架,在 Atlas A3 集群实现 GRPO 算法的高吞吐 RL 训练,并达到 120TPS/卡的系统吞吐量。

基于 verl 框架的 Qwen2.5 强化学习(入门样例):基于 Qwen2.5-1.5B-Instruct 模型,采用 verl 强化学习框架,在 MATH-lighteval 数学推理数据集上进行了训练,只需要单卡 Atlas A2 环境,快速上手使用昇腾 NPU 完成 RL 训练任务。

开发环境部署准备

  1. Notebook 资源配置

    • 计算资源:NPU:1*NPU 910B 32vCPU + 64GB 内存
    • 容器镜像:ubuntu22.04-py3.11-cann8.2.rc1-sglang-main-notebook
  2. Notebook 启动后查看 NPU 状态 使用 npu-smi 查看 NPU 状态、利用率。当前 Notebook 的昇腾 910B3 NPU 状态正常,功耗 96.5W、温度 46℃,HBM 显存仅用 3.3G(总 64G),无运行进程,资源低负载。

  3. 克隆仓库 将 cann-recipes-train 克隆到本地。

  4. 进入目录 进入 cann-recipes-train/rl_train 目录,可以看到特定模型的 RL(强化学习)训练相关样例集合:

    • deepseek:DeepSeek-R1 RL 训练优化实践样例
    • qwen2_5:基于 verl 框架的 Qwen2.5 强化学习实践样例

DeepSeek-R1 RL 训练优化实践样例

环境部署

针对 DeepSeek-R1 模型,基于 verl 开源框架,配合 MindSpeed-LLM 和 vLLM-Ascend 框架,完成 RL 训练全流程的优化适配。

硬件要求:

  • 产品型号:Atlas A3 系列
  • 最少卡数:128 张 A3
  1. 安装样例依赖 基础环境适配(安装核心依赖如 verl、torch_npu等)。虽有部分版本冲突,但不影响核心功能。

  2. 下载依赖的开源框架代码 拉取 Verl(指定 Commit)、vLLM(v0.9.1)、vLLM-Ascend(打补丁)及 Megatron-LM、MindSpeed 等多个指定版本的 AI 相关依赖框架,将其复制到 cann-recipes-train/rl_train/deepseek/ 目录,为该目录下的 deepseek 样例运行搭建适配的依赖环境。

  3. 修改 verl 代码 为了使能 patch 修改,需要修改以下 verl 源码。

DeepSeek-R1 RL 训练优化点解读

在这里插入图片描述

如图是基于 Atlas A3 SuperPoD 超节点 128 卡集群,加载真实权重和随机初始化权重的两个场景中性能效果。

框架适配:Verl × vLLM-Ascend 适配

vLLM-Ascend 社区已经做好了 DeepSeek-R1 的昇腾适配,能直接用它提推理性能,但要让 verl 和它兼容,得改关键接口,主要是初始化 vLLMRollout 对象的 vllm_rollout_spmd.py 文件:

  • 手动加 vLLM-Ascend 的 patch:导入 vLLM 前得先引这个 patch,不然有些类和函数不匹配
  • 配 DP 通信参数:设 VLLM_DP_MASTER_PORT 和 IP,保证每个 DP 组有独立通信端口,适应集群环境
  • 关 sleep 模式:NPU 多机下 sleep 会导致显存释放不了,还得避免显存被 vLLM 内存池接管,后续没法手动卸载
  • 调 token 参数:加载真实权重时,默认 max_num_batched_token=8192 容易 OOM,改成 1024 再开 chunked_prefill 就行
性能优化(一):训推一体化与参数重排(Reshard/Offload)实践

大模型 RL 训练中,训练与推理阶段的模型分片方式不同。训练时 8 张卡分成两组各 4 张(EP4),流水线也拆成多段(PP2);推理时得把 8 张卡合并成一组(EP8),流水线也不分段了(PP1)。

模型训练完更新参数后,需将参数从训练的分片方式转为推理可用格式(reshard),在训练组内用 alltoallv 通信,参数重排的时候没冗余数据传输,这一步快了不少。

另外 Actor、Rollout、Ref 三个模型共存于同一批卡时,切换的时候,前一个模型占着显存呢,不挪走新模型根本装不下,所以得先把不用的模型挪到主机内存(offload)腾地方,再把要用的加载到显卡,这部分昇腾团队专门调了显存管理和数据迁移的细节,切换耗时降了不少。

这两部分优化下来,训推切换会更加顺畅,迭代效率也会明显提高。

在这里插入图片描述

reshard 优化核心:专家参数用 AlltoAllV 定向传:只给目标推理 rank 发参数,不做全量广播,大幅减少带宽冗余,单卡增量内存从 14G 压到 0.0547G,降低 OOM 风险 PP 域通信调顺序:先在 TP 域聚合参数,再用 PP 域 AlltoAll 广播,减少通信量如 p=8、t=4 时第一步通信量减半和通信次数

offload 优化核心:替代 vLLM 有问题的功能:用 onload/offload_model_weight、init/free_cache_engine,替换 NPU 多机下不好使的 vLLM wake_up/sleep 省冗余步骤 + 后置初始化:省去训练后到推理前的冗余卸载 / 加载,把推理 init_cache_engine 放到 reshard、卸载训练权重之后,降内存峰值、提 vLLM 利用率

性能优化(二):训练侧优化策略与算子融合技术

复用 MindSpeed 训练优化。

verl 目前对接了 MindSpeed,因此训练侧主要复用了 MindSpeed 在内存、通信和计算方面的许多优化技术,包含 Ascend Swap Optimizer 和使能融合算子等,对应的配置脚本片段大概是这样。

old_log_prob 免计算

GRPO 这类 on-policy 算法里,有个关键特性:训练时模型参数未更新前,old_log_prob 的计算结果,和 update_actor 环节前向计算得到的 log_prob 完全一致,毕竟两者依赖的是同一套模型参数。

所以昇腾团队用 log_prob.detach() 直接替代 old_log_prob,省去一次训练模型的前向计算,大幅节省耗时。考虑到 verl 原生不支持这一优化,团队专门为其补充实现了该功能,目前只需要将配置项 config.actor_rollout_ref.actor.recompute_old_log_prob 设为 False,就可以启用优化。

性能优化(三):推理侧加速与吞吐率提升路径

在这里插入图片描述

DeepSeek-R1'1K 推 3K'的 RL 推理场景中,昇腾团队以 162 token/p/s 的基础吞吐为起点,通过多轮技术迭代实现推理性能的阶梯式跃升:

  • 基于 TorchAir 图模式 + AIV 加速 + vLLM-V1 框架 优化,吞吐提升至 419 token/p/s
  • 消除大 EP 场景下的 Transpose 冗余算子 + Cumsum 冗余计算,进一步提升至 456 token/p/s
  • 引入 MoE/MLA 多流并行 + router 逻辑优化,突破至 487 token/p/s
  • 优化零冗余 TP 转 EP 通信机制,性能达 519 token/p/s
  • 通过 DP 间 EOS 检测调度优化,推理吞吐成功突破 618 token/p/s

一系列优化大幅压缩了长序列 RL 推理的耗时占比,成为昇腾团队推动 RL 训练整体性能提升的核心突破口!

基于 verl 框架的 Qwen2.5 强化学习实践样例

基于 Qwen2.5-1.5B-Instruct 模型,搭配 verl 强化学习框架,在 MATH-lighteval 数学推理数据集上开展训练。

  • 训练目标:提升小模型复杂数学问题的分步推理能力,生成逻辑严密、结果可验证的推理过程
  • 硬件门槛:最低仅需单卡 Atlas A2 环境,助力快速上手昇腾 NPU 的 RL 训练任务

配套优化版 MATH 任务奖励函数

针对原生奖励函数'字符串等价性误判、奖励信号稀疏'的问题,通过多维度分级评分引导模型精准学习。

在这里插入图片描述

verl 框架下 MATH 任务的奖励函数总分 1 分,遵循'答案正确性优先'原则:

  • 答案错误直接得 0 分
  • 答案正确则分三维度打分:
    • math_verify 做数学语义验证的准确度占 0.7 分
    • 符合指定标签样式且规范的格式占 0.2 分
    • 包含有序思考步骤与逻辑关键词的思维链占 0.1 分

同时答案错误时不评估格式、思维链,避免模型偏离精准求解目标,既解决了原生函数的误判问题,也通过多维度评分缓解了奖励稀疏,同时能引导模型生成更规范的表达、更完整的推理过程。

cann-recipes-train 核心定位:连接 CANN 能力与训练业务的桥梁

Cann 仓库诞生源于大模型训练的两大痛点:一是 CANN 平台的底层优化能力如算子调度、内存管理需要结合具体模型场景才能发挥价值,开发者缺乏场景化参考;二是强化学习等复杂训练流程的工程化落地难度高,需兼顾框架整合、硬件适配与性能调优。

cann-recipes-train 通过'典型模型 + 优化算法 + 可运行样例'的组合,直接打通了'CANN 能力→训练业务'的链路,对开发者来说 cann-recipes-train 不算通用训练框架,更像 CANN 平台训练优化的实战手册。

  • 场景聚焦:专门针对 LLM 与多模态模型的训练业务,覆盖强化学习(RL)核心训练场景,解决大模型训练中 高吞吐、易部署、低硬件门槛的实际需求
  • 技术适配:深度整合 CANN 平台的异构计算能力,将抽象的加速算法转化为可直接运行的代码样例,避免重复造轮子
  • 分层支持:提供单卡入门级样例,也包含集群高性能样例,覆盖不同阶段开发者的需求

总结

cann-recipes-train 仓库针对 LLM、多模态训练场景中的典型模型、算法,提供基于 CANN 平台的优化样例,方便开发者简单、快速、高效等使用 CANN 进行模型训练。

首批开源样例:

  • 入门样例:基于 verl 开源框架 & A2 单卡,Qwen2.5-1.5B RL 训练样例,低成本快速上手
  • 优化样例:基于 verl 开源框架 & A3 集群,DeepSeek-R1 RL 训练样例,实现大集群高吞吐训练

目录

  1. cann-recipes-train 解析:昇腾平台 DeepSeek-R1 与 Qwen2.5 强化学习实践
  2. 开发环境部署准备
  3. DeepSeek-R1 RL 训练优化实践样例
  4. 环境部署
  5. DeepSeek-R1 RL 训练优化点解读
  6. 框架适配:Verl × vLLM-Ascend 适配
  7. 性能优化(一):训推一体化与参数重排(Reshard/Offload)实践
  8. 性能优化(二):训练侧优化策略与算子融合技术
  9. 性能优化(三):推理侧加速与吞吐率提升路径
  10. 基于 verl 框架的 Qwen2.5 强化学习实践样例
  11. 配套优化版 MATH 任务奖励函数
  12. cann-recipes-train 核心定位:连接 CANN 能力与训练业务的桥梁
  13. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 家庭 AI 助手实战:QQ 机器人接入 OpenClaw
  • 程序员副业接单平台推荐与避坑指南
  • Ansible 批量部署 Nginx 实战:从安装到远程穿透
  • SheetJS JavaScript 电子表格数据处理与转换方案
  • SpringBoot+Vue 社区医院管理系统设计与实现
  • 开源 ASR 新选择:Fun-ASR 与 Whisper 对比评测
  • 设计模式实战:责任链模式
  • Spring AI 深入解析 MCP 上下文协议、开发与部署安全实践
  • Python 新手 LeetCode 快速刷题指南
  • 单链表核心操作实现与详解
  • 人工智能数学基础:概率论中 KL 散度在变分自编码器中的应用
  • Coze 工作流实战:逻辑控制、数据处理与 AIGC 多媒体应用
  • AI 工具链:Python 模型开发与演示构建
  • 滑动窗口算法入门:LeetCode 经典例题解析
  • COMSOL 仿真在超声层析成像中的声场优化与二值逻辑反投影算法验证
  • 前端地图开发:标记点(Marker)的添加、删除、拖拽及事件绑定
  • Zabbix 3.0 声音告警配置指南
  • 网络黑市与黑客经济生态分析
  • Python 标准库与第三方库实战:日期、字符串与 Excel 操作
  • CUDA 12.4 内存层次、异构编程与计算能力

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online