cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

前言

自 DeepSeek-R1 发布以来,大模型的强化学习(RL)训练掀起了新一轮的技术热潮。各大厂商与开源社区纷纷投入实践,持续探索更高效的 RL 训练体系。本文将基于 cann-recipes-train 仓库,解读两个实践样例:DeepSeek-R1 的 RL 训练优化实践样例、基于 verl 框架的 Qwen2.5 强化学习实践样例

cann-recipes-train 仓库全景解析:昇腾训练优化的"实战底座"

在这里插入图片描述
大模型训练拼效率的阶段,CANN 直接帮我们搞定了底层异构硬件适配、资源调度这些麻烦事,不用再从零研究 GPU 和 NPU 怎么协同,现有模型代码也不用大改就能对接,训 LLM 或多模态模型时还能通过算子优化、内存复用提升速度、减少资源浪费

cann-recipes-train 仓库不搞抽象理论,全是能直接复用的代码样例,比如具体 LLM 的训练优化步骤、多模态模型的算子调试方法,帮我们跳过 “看官方文档懂了但不会用” 的坑,不用自己反复试错,快速掌握 CANN 的优化技巧,把精力集中在模型本身。

方便广大开发者在昇腾环境中高效开展大模型的微调与续训,将开源的 cann-recipes-train 仓库面向典型的 LLM 与多模态模型训练任务,提供基于 CANN 平台优化样例与实践指南,帮助开发者简单、快速、高效在昇腾平台上完成模型训练与优化部署。首批版本中,cann-recipes-train 将上线两个基于 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训练任务

cann-recipes-train 仓库 GitCode NoteBook 部署准备

1、NoteBook 资源配置计算资源:NPU:1*NPU 910B 32vCPU + 64GB 内存容器镜像:ubuntu22.04-py3.11-cann8.2.rc1-sglang-main-notebook

2、NoteBook 启动成功后使用 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训练优化实践样例

GitCode Notebook 部署
针对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 助力昇腾生态加速 AI 训练落地

在这里插入图片描述
cann-recipes-train 仓库针对 LLM、多模态训练场景中的典型模型、算法,提供基于 CANN 平台的优化样例,方便开发者简单、快速、高效等使用 CANN 进行模型训练首批开源样例

入门样例:基于 ver1 开源框架 & A2 单卡,Qwen2.5-1.5B RL 训练样例,低成本快速上手

优化样例:基于 ver1 开源框架 & A3 集群,DeepSeek-V3 RL 训练样例,实现大集群高吞吐训练沟通渠道:👉GitCode:CANN/cann-recipes-train

欢迎大家到仓库提交 ISSUE/PR,复现、捉虫、贡献新样例,和广大开发者交流讨论

Read more

使用 OpenVINO 本地部署 DeepSeek-R1 量化大模型(第二章:前端交互与后端服务)

使用 OpenVINO 本地部署 DeepSeek-R1 量化大模型(第二章:前端交互与后端服务)

一、前言         基于上一章的环境准备和模型转换,本章专注于后端服务器的部署以及前端页面的启动。 使用 OpenVINO 本地部署 DeepSeek-R1 量化大模型(第一章:基础概念与模型转换)-ZEEKLOG博客https://blog.ZEEKLOG.net/plmm__/article/details/156192071?spm=1001.2014.3001.5502         整个后端服务器是依赖于 OpenVINO 的,不过只要你的设备可以使用 OpenVINO,理论上就可以使用这个后端,如果你有 intel 的独立显卡,只需要把代码中 device 更改为对应的设备即可运行在 GPU 上。 self.pipeline = ov_genai.LLMPipeline(self.model_path, device) 二、前端交互界面          网页预览:

By Ne0inhk

深度解析KBQA常用数据集:WebQSP与CWQ

深度解析KBQA常用数据集:WebQSP与CWQ 一、引言 知识图谱问答(KBQA)是自然语言处理领域的关键任务,其核心挑战在于将自然语言问题转换为可执行的逻辑形式(如SPARQL查询)并从知识图谱中获取答案。WebQSP和CWQ是当前KBQA研究中最具代表性的两个数据集,分别覆盖了从多跳到复杂组合性问题的全场景。本文将从数据形式、标注特点、核心挑战等维度对两者进行深度解析,并对比其在KBQA研究中的定位与价值。 二、WebQSP数据集:多跳推理的基石 2.1 数据集概况 * 全称:WebQuestionsSP(扩展自WebQuestions) * 来源:基于Freebase知识图谱构建,由Berant等人于2013年提出,后经扩展支持多跳推理。 * 规模:训练集约4,700条,测试集约2,000条。 * 问题类型:多跳关系推理(最多4跳),需结合实体、关系和约束条件。 2.2 数据形式详解(基于WebQSP-train实例深度解析) WebQSP的每条数据以JSON格式组织,包含从原始问题到逻辑形式、推理路径、答案的完整标注。以下结合WebQTrn-0实例(关于

By Ne0inhk

用MC.JS WEBMC1.8快速验证游戏创意:48小时开发挑战

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 快速开发一个MC.JS WEBMC1.8的概念验证游戏原型。游戏核心玩法是收集资源建造防御工事抵御夜间怪物攻击。白天玩家可以收集木材和石头,晚上会有简单AI的怪物出现。只需实现最基本的游戏循环:白天建造-夜晚防御-次日升级。UI只需要显示资源数量、昼夜计时和简单生命值。代码结构要清晰,便于后续扩展,生成详细的设计文档说明扩展方向。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 最近尝试用MC.JS WEBMC1.8快速验证一个生存建造类游戏创意,整个过程比想象中顺利很多。这个框架对快速原型开发特别友好,48小时内就完成了核心玩法验证。记录下关键实现思路,给想做类似尝试的朋友参考。 1. 核心玩法设计 游戏采用经典的昼夜循环机制:白天收集资源建造防御工事,夜晚抵御怪物攻击。为了快速验证可行性,我简化了以下要素: 2.

By Ne0inhk
遇到即记之ngrok--免费HTTPS、本地开发调试、Webhook测试必备工具

遇到即记之ngrok--免费HTTPS、本地开发调试、Webhook测试必备工具

ngrok内网穿透工具详解 工具: ngrok - 内网穿透解决方案 用途: 将本地服务暴露到公网,实现临时公网访问 适用场景: 开发调试、Webhook测试、临时演示、移动端测试、HTTPS测试 📑 目录 * 什么是ngrok? * 核心功能 * 使用场景 * 优缺点分析 * 安装和使用 * 代码开发中的应用 * 安全注意事项 * 与其他工具对比 * 常见问题 * 最佳实践 * 总结 📖 什么是ngrok? ngrok 是一个反向隧道工具,它能够在你本地运行的服务器和公网之间建立一个安全的隧道。简单来说,它可以把你的 localhost:3000 变成一个可以通过互联网访问的网址,比如 https://abc123.ngrok.io。 核心概念 * 本地服务: 运行在你电脑上的应用(如 http://localhost:3000) * ngrok客户端: 运行在你电脑上的程序,连接到ngrok服务器

By Ne0inhk