基于昇腾的AReaL全异步RL训练
基于昇腾的AReaL全异步RL训练【免费下载链接】cann-learning-hubCANN 学习中心仓支持在线互动运行、边学边练提供教程、示例与优化方案一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub近年来强化学习已成为增强大模型推理能力的关键手段通过奖励机制和策略迭代能使大模型快速适应对应场景任务且无需大量的数据标注极大地降低了后训练成本越来越多的大模型开发人员开始关注如何高效、便捷地进行大模型强化学习。AReaL框架凭借高效的性能、简单易用的API基于昇腾NPU开箱即用加速大模型全异步RL训练创新。1️、AReaL 是什么AReaL 是一个面向算法设计者的强化学习框架核心目标是 将 RL 框架从完整应用演进为高性能、可复用的后端依赖AReaL 通过 极简 API 可扩展插件机制把算法开发者从复杂的系统工程中解放出来使其专注于 RL 算法、Reward 设计与 Agent 行为建模而不是分布式、通信、容错等底层细节。 项目地址 https://github.com/inclusionAI/AReaL2、AReaL 的核心优势AReaL相较于传统RL训练系统存在三大核心优势全异步 RL 训练系统传统RL训练系统将生成rollout)和训练train)强绑定生成序列长度的分布会显著影响算力的利用率。AReaL采用全异步RL训练系统生成和训练完全解耦即便序列长度差异较大算力也可以得到充分利用提升RL训练效率。Single Controller架构传统RL训练系统采用SPMDSingle ProgramMultiple Data架构多个进程运行相同代码做不到资源的灵活控制和异常状况的快速恢复。AReaL采用Single Controller架构将调度和计算分为两个完全独立的平面互不干扰可以轻松地添加修改RL训练资源也可以将异常进程任务分配给其他进程大大提高系统可靠性。解耦式 Agentic RLAI智能体的构建常常会因为RL训练和Agent编排框架的高度耦合导致代码复用性差难以迭代更新。AReaL采用解耦式的Agentic RL围绕Agent完全独立运行和RL训练作为外部观察者两大原则设计实现了Agent逻辑和RL训练的完全分离极大提升了智能体的开发效率和系统可维护性。同时AReaL在昇腾平台通过提供Docker镜像软件版本矩阵以及可复现的运行教程已经具备了稳定、便捷的开箱能力并会持续地维护、优化AReaL框架在昇腾平台的使用体验。在超大规模RL训练中AReaL也在昇腾平台完成了万亿参数MoE模型的真实RL后训练业务验证保证商业用户的大规模部署需求。3、AReaL 在昇腾上的关键适配工作为了顺利让AReal框架在昇腾上运行起来昇腾团队分析并做了一系列的适配工作包括vLLM推理引擎支持、训练阶段适配、权重Resharding功能验证。vLLM推理引擎支持AReaL中的推理后端使用的是服务化的推理引擎。适配前AReaL 只支持 SGLang推理引擎。而vLLM推理引擎以其稳定性和广泛的生态系统成为众多用户的选择需要在AReaL框架中适配vLLM推理引擎作为推理后端。强化学习训练过程需要做权重更新SGLang中的 update_weights 接口支持该功能而 vLLM不支持需要适配update_weights接口。因此AreaL支持vLLM推理引擎分为2个部分AReaL 适配 vLLM、vLLM新增支持update_weights权重更新功能。对于AReaL 适配 vLLM部分需要新增vLLM相关的类继承AReaL中抽象出来的推理引擎接口实现vLLM的相关模块和功能。对于vLLM新增支持update_weights权重更新功能起初在vLLM中直接修改添加的update_weights接口这样依赖vLLM版本更新和其他变动同时侵入式修改vLLM代码在设计上也不推荐。因此通过patch方式给vLLM新增接口代码在AReaL仓库承载使用方便也对vLLM版本无影响。训练阶段适配AReaL使用FSDP2作为训练后端FSDP2在torch_npu上已经支持首先需要torch升级到2.7.1以上版本。其次得益于FSDP训练后端本身模型结构与并行策略解耦的轻量化设计同时AReaL 框架的设计时就考虑了多种设备的支持将设备部分抽象成了Platform类用于抽象不同的设备类型。因此训练部分适配NPU只需要实现NPU对应的Platform类在训练开始前根据当前使用的设备初始化对应的platform。适配过程中,系统显存占用较高通过采集短序列场景下显存快照数据分析显存异常点发现显存峰值在logits前方向位置分析代码并进行优化将sp_group上的allgather操作从logits位置调整至logprobs位置实现整体显存占用下降50%。图为update_actor模型训练部分红框分别代表模型前向、loss前向、loss反向模型反向和第二次前向。权重 resharding 特性支持权重 Resharding 是强化学习训练中连接“训练更新”与“推理生成”的桥梁它通过快速、无缝地重组权重格式实现模型的热切换避免训练与推理间的等待瓶颈从而大幅提升RL迭代效率。AReaL中的权重resharding分为disk和xccl两种方式。disk指的是训练端把更新后的权重转为huggingface格式并离线保存然后推理端再加载这份huggingface权重。xccl方式指训练端把更新后的权重通过设备通信的方式传输给推理端。若使用disk方式NPU 和 GPU上是没有区别的缺点是对小模型友好对于参数量大的模型需要占用大量磁盘空间且读写磁盘或共享存储花费大量时间训练性能低下。而AReaL在使用xccl方式进行权重resharding时会重新构建一个以训练0卡为rank0推理卡顺延为后续rank的特殊通信域在这个通信域上调用hccl的broadcast通信算子将训练0卡作为广播源把权重参数broadcast到推理卡。这种建立通信域的方式在NPU上较为少见昇腾通过支持broadcast通信算子适配xccl_update_weights功能完成权重Resharding特性的支持。4、 如何在 Ascend NPU 上使用 AReaLStep 1使用官方 NPU Docker 镜像IMAGEswr.cn-north-9.myhuaweicloud.com/areal/areal_npu:v0.5.0-a3 docker pull ${IMAGE}以上地址为 Atlas A3系列产品 镜像Atlas A2系列产品用户请将镜像地址中替换为 v0.5.0-a2。镜像内已包含昇腾CANN包及相关依赖torch-npu / vLLM-Ascend 适配AReaL 昇腾平台运行依赖Step 2启动容器单机 / 多机一致,按照设备调整--device配置WORK_DIRyour_workspace CONTAINER_WORK_DIRyour_container_workspace CONTAINER_NAMEareal_npu docker run -itd --cap-addSYS_PTRACE --nethost \ --device/dev/davinci0 \ --device/dev/davinci1 \ --device/dev/davinci2 \ --device/dev/davinci3 \ --device/dev/davinci4 \ --device/dev/davinci5 \ --device/dev/davinci6 \ --device/dev/davinci7 \ --device/dev/davinci8 \ --device/dev/davinci9 \ --device/dev/davinci10 \ --device/dev/davinci11 \ --device/dev/davinci12 \ --device/dev/davinci13 \ --device/dev/davinci14 \ --device/dev/davinci15 \ --device/dev/davinci_manager \ --device/dev/devmm_svm \ --device/dev/hisi_hdc \ --shm-size1200g \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /var/log/npu/:/usr/slog \ -v ${WORK_DIR}:${CONTAINER_WORK_DIR} \ --privilegedtrue \ --name ${CONTAINER_NAME} \ ${IMAGE} \ /bin/bash多节点场景只需保证 共享存储挂载一致。Step 3进入容器并拉取 AReaL NPU 分支安装docker exec -it areal_npu /bin/bash git clone https://github.com/inclusionAI/AReaL cd AReaL git checkout ascend pip install -e .Step 4可选启动 Ray 集群多节点# Head ray start --head # Worker ray start --address head_ipAReaL 会自动感知集群资源并分配 Worker。Step 5运行 NPU 示例训练脚本examples/math/gsm8k_rl.py配置文件examples/math/gsm8k_grpo_npu.yaml修改配置文件gsm8k_grpo_npu.yaml将模型配置为Qwen3-0.6B模型修改配置文件gsm8k_grpo_npu.yaml调整训推的卡资源分配以及并行方式默认为4卡推理4卡训练都使用DP并行下面给出调整为单卡推理单卡训练的配置调整方式执行以下命令无需修改核心算法逻辑即可在 NPU 上跑通 RL 训练python -m areal.launcher.local examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo_npu.yaml当图中信息循环显示时RL训练便在正常运行了训练完成显示如下训练结束后新的模型文件默认在/tmp/areal/experiments/下可通过gsm8k_grpo_npu.yaml配置文件fileroot参数调整文件路径:更多详细使用方法参考 官方文档https://inclusionai.github.io/AReaL/tutorial/installation_npu.html 总结AReaL框架为需要在昇腾平台进行强化学习的开发者提供了新的可靠途径——开箱即用保障开发者轻松上手优秀架构支撑模型性能。AReaL框架在昇腾平台上会持续演进为开发者提供更强大、更便捷的强化学习体验大家可以持续关注AReaL开源项目了解最新的技术动态。AReaL开源项目https://github.com/inclusionAI/AReaL【免费下载链接】cann-learning-hubCANN 学习中心仓支持在线互动运行、边学边练提供教程、示例与优化方案一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考