基于verl框架和代码沙盒环境的代码强化学习实践【免费下载链接】cann-recipes-train本项目针对LLM与多模态模型训练业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-train概述本项目基于 1.5B 深思考模型采用 verl实现了高效且稳定的长上下文 Code RL训练。我们的贡献主要有开发了一个可扩展的分布式代码执行沙盒 ScaleBox支持大规模多机部署、主流 RL 框架兼容训练及多种模型与基准的高效统一评估提供了融合 verl 与 ScaleBox 的统一部署镜像支持在单一节点中同时运行 ScaleBox 服务与 verl 训练任务同时支持零成本迁移至华为云平台 ModelArts在昇腾环境中验证了基于 verl 框架与 ScaleBox 沙盒的 Code RL 训练效果。ScaleBox 是一个可扩展的分布式代码执行沙盒其核心特性包括可扩展的分布式代码沙盒体系支持多机分布式沙盒部署与请求负载均衡支持单元测试并行与实例级并行面向 Code RL 的统一训练接口和评估套件提供高效的批量评估接口common_evaluate_batch相较于run_code通过单次请求处理多个测试用例显著提升训练效率内置对 LiveCodeBench、HumanEval、MBPP 等主流代码评测基准的支持实现一键式快速评估灵活的 Special Judge 判题机制支持自定义判题逻辑能够灵活适应具有多种正确答案的复杂编程题目下面提供了相关模型的训练参数和性能测试结果详细的评测细节见 模型评测 章节| Model | Machine | GBS | n_samples | training_step | max_prompt_length | max_response_length | LiveCodeBench (pass1) | |-|-|-|-|-|-|-|-| | DeepSeek-R1-Distill-Qwen-1.5B | Atlas A2 8卡 | 128 | 8 | 500 | 2048 | 8192 | 19.80 | | Qwen3-4B-Instruct-2507 | Atlas A3 16卡 | 128 | 8 | 450 | 2048 | 8192 | 44.18 | | Qwen3-30B-A3B-Instruct-2507 | Atlas A3 32卡 | 128 | 8 | 450 | 2048 | 8192 | 56.27 |硬件要求Atlas A2/A3 系列产品单机八卡软件要求verl: commit c651b7b4207e408875f132c4226969ef3495d408 (based on v0.7.0.dev)vllm0.11.0vllm_ascendv0.11.0rc1文件说明├── patches │ └── verl # 修改补丁总目录 │ └── 0001-verl-feature-improve_rl_usability.patch # verl支持Code RL的补充性修改 ├── figures # 图表目录 │ ├── reward.png # 训练奖励值折线图 │ └── training_progress.png # 训练进度折线图 ├── verl.Dockerfile # 环境部署文件 ├── verl_sandbox.Dockerfile # 环境部署文件 ├── build_dataset.py # 示例训练数据集构建脚本 ├── scalebox.py # verl适配ScaleBox的自定义奖励函数文件 ├── run_code_rl_qwen2_5_1_5b.sh # Qwen2.5示例训练脚本 ├── run_code_rl_qwen3_4b.sh # Qwen3示例训练脚本 ├── run_code_rl_qwen3_30b.sh # Qwen3示例训练脚本 └── README.md # 说明文档环境准备构建 Docker 镜像构建支持 Code RL 的 verl 镜像docker build --networkhost -f verl.Dockerfile -t verl:main-c651b7b-py311-cann8.3.RC1 .在 verl 镜像基础上构建支持 ScaleBox 的镜像实现 ScaleBox 和 verl 的融合部署首先拉取 ScaleBox 代码以获得配置环境需要的脚本和数据git clone https://link.gitcode.com/i/956cbc85858f3e30456ef77668a56f0c然后在 ScaleBox 项目下执行docker build --networkhost -f verl_sandbox.Dockerfile -t verl_sandbox:main-c651b7b-py311-cann8.3.RC1 .构建适配 ScaleBox 的 verl 框架拉取 verl 代码并切换到指定版本git clone https://github.com/volcengine/verl cd verl git checkout c651b7b4207e408875f132c4226969ef3495d408 cd ..应用指定 patch为了更好地执行 Code RL 训练任务verl 框架需应用以下 patch。该 patch 主要包含以下修改在prime reward manager中增加对code_contests数据源的支持调整prime reward manager的并发进程数从 64 降至 32以避免沙盒资源竞争延长prime reward manager的任务超时时间从 300s 延长至 3000s以支持更大批量数据下的代码执行增强训练过程中的日志打印便于调试。遵循下面的指令应用对应 patchgit apply patches/verl/0001-verl-feature-improve_rl_usability.patch部署 ScaleBox 服务启动 verl_sandbox 融合镜像docker run -it --privileged --namestart_verl_sandbox --user root --network host \ --shm-size 500g \ --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/davinci_manager \ --device/dev/hisi_hdc \ --device /dev/devmm_svm \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/bin/hccn_tool:/usr/bin/hccn_tool \ -v /usr/local/sbin:/usr/local/sbin \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -v /etc/hccn.conf:/etc/hccn.conf \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ verl_sandbox:main-c651b7b-py311-cann8.3.RC1 /bin/bash激活 ScaleBox 服务必备环境source /home/ma-user/miniconda3/bin/activate sandbox-base部署 ScaleBox 服务以下提供针对 Code RL 单节点训练的部署命令更多分布式部署功能见 ScaleBox 仓库export HOST0.0.0.0 # 服务器主机地址 export PORT8080 # 服务端口 export WORKERS32 # Uvicorn 服务并行 Worker 数量 export MAX_MEMunlimited # 单进程最大内存占用 cd ScaleBox make run-online deploy_${HOST}:${PORT}.log 21 执行上述命令后服务成功部署至http://0.0.0.0:8080。基于下面的命令可验证服务是否部署成功curl http://0.0.0.0:8080/run_code \ -H Content-Type: application/json \ --data-raw {code: print(\Hello, world!\), language: python}预期返回{status:Success,message:,compile_result:null,run_result:{status:Finished,execution_time:0.02984905242919922,return_code:0,stdout:Hello, world!\n,stderr:}数据集准备基于 PrimeIntellect/verifiable-coding-problems 数据过滤其中较高质量的 Python 代码数据部分作为训练数据verifiable-coding-problems-python-only。具体数据处理脚本为python build_dataset.py强化学习训练示例脚本run_code_rl_qwen2_5_1_5b.sh中涉及模型DeepSeek-R1-Distill-Qwen-1.5B数据verifiable-coding-problems-python-only最大输出长度8k根据需求配置脚本对应参数运行下述指令即可启动训练source /home/ma-user/miniconda3/bin/activate base # 激活训练环境 bash run_code_rl_qwen2_5_1_5b.sh模型评测本实验基于 LiveCodeBench 数据集评测模型的代码生成能力推理参数遵循 DeepSeek-R1 相关实验设置。实验设置LiveCodeBench 评测数据相关参数release_version: v5start_date: 2024-08-01code_execution: ScaleBox推理相关参数n: 4temperature: 0.6top_p: 0.95max_tokens: 32768实验结果以下是本项目的实验结果包括训练过程中的奖励变化和在 LiveCodeBench 评测集上的性能提升情况。DeepSeek-R1-Distill-Qwen-1.5B具体性能结果StepsLiveCodeBench (Pass1)015.415015.7710015.9515016.6720016.3125016.4930017.8335018.9140018.3745018.4650019.80Qwen3-4B-Instruct-2507具体性能结果StepsLiveCodeBench (Pass1)033.605034.8610037.6315038.2620038.7125039.9630040.2335041.6740040.5045044.18Qwen3-30B-A3B-Instruct-2507具体性能结果StepsLiveCodeBench (Pass1)046.595047.8510050.4515051.3420051.8825051.5230054.1235053.9440054.2145056.27【免费下载链接】cann-recipes-train本项目针对LLM与多模态模型训练业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-train创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考