Skip to content

feat(recipe): 新增 Qwen3-8B ReMax FSDP 昇腾训练脚本 - #100

Open
yukinotech wants to merge 2 commits into
verl-project:mainfrom
yukinotech:codex/remax-qwen3-8b-fsdp-npu
Open

feat(recipe): 新增 Qwen3-8B ReMax FSDP 昇腾训练脚本#100
yukinotech wants to merge 2 commits into
verl-project:mainfrom
yukinotech:codex/remax-qwen3-8b-fsdp-npu

Conversation

@yukinotech

@yukinotech yukinotech commented Aug 31, 2026

Copy link
Copy Markdown

这个 PR 做了什么?

为昇腾 Atlas 800T A2/A3 平台补充 Qwen3-8B + ReMax + FSDP 训练脚本,并使用 verl 原生的 vLLM-Ascend 推理后端。该脚本是 verl 主仓库 examples/remax_trainer/run_qwen3_8b_fsdp.sh 的昇腾版本。

ReMax 对每个 prompt 既需要采样 rollout,也需要一个 greedy baseline。verl 主仓库已经通过 verl #6308 引入的内部 __do_sample__ 覆盖机制,将二者合并到同一个 agent-loop/vLLM 请求中。该流程与具体推理后端无关,可以直接在 vLLM-Ascend 上工作,因此本 PR 仅补充昇腾平台的启动和调优配置。

新增的 remax/run_qwen3_8b_remax_fsdp_npu.sh 包含以下配置:NPU 环境变量调优、trainer.device=npu、关闭 actor/reference 的 torch compile、针对 64 GB 显存设备启用参数和优化器 offload、使用较保守的 rollout 显存配置,以及开启 ACL Graph decode 加速。

测试与性能报告

验证环境为 Atlas 800T A2,8 x Ascend 910B3 64 GB,CANN 25.5.1、torch_npu 2.9.0.post2、vLLM 0.18、vLLM-Ascend 0.18.1.dev41 和 transformers 5.3.0.dev0。

  1. Smoke 测试: Qwen3-0.6B 在 8 张 NPU 上完成 2 个 step。reward_kl_penaltycritic/advantages 指标确认进入 ReMax advantage 计算流程;server 日志确认 greedy baseline 请求使用 temperature=0
  2. 稳定性测试: Qwen3-8B 使用 batch size 128、response length 1024,连续完成 5 个 step,未出现 OOM 或 HCCL timeout。
  3. 长跑精度测试: Qwen3-8B 在 GSM8K 上使用 batch size 128、mini-batch size 32、n=4、学习率 1e-6kl_coef=1e-3,在约 2 小时 25 分钟内完成 60 个 step。critic/score/mean 从 step 1 的约 0.26 上升到 0.60-0.76 区间,最高达到 0.764。
  4. 性能测试: 60 个 step 的集群端到端 perf/throughput 平均约为 381 tokens/s,范围为 337-425 tokens/s。response length 2048 的压力测试完成 3 个 step,未出现 OOM,吞吐为 343-411 tokens/s。
  5. 本地检查: bash -n remax/run_qwen3_8b_remax_fsdp_npu.shgit diff --check 和针对改动文件的 pre-commit 检查均已通过。

Reward 曲线(critic/rewards/mean):

ReMax Qwen3-8B Reward 曲线

实测吞吐超过任务 Issue 要求的 100 tokens/s,reward 也呈现明显上升趋势。目前已有的 60-step 记录尚未单独满足 Issue 中“100 step 或 12 小时”的时长要求;如后续取得更长时间的验证日志,可以继续补充到任务 Issue。

使用方法

首先在 verl 主仓库中准备默认的 GSM8K 和 MATH 数据集:

python3 examples/data_preprocess/gsm8k.py --local_save_dir "$HOME/data/gsm8k"
python3 examples/data_preprocess/math_dataset.py --local_save_dir "$HOME/data/math"

然后在 verl 主仓库根目录运行 recipe:

MODEL_PATH=/data/models/Qwen3-8B \
bash /path/to/verl-ascend-recipe/remax/run_qwen3_8b_remax_fsdp_npu.sh \
    'trainer.logger=["console"]'

脚本支持通过环境变量覆盖主要参数,也会继续向 verl 转发额外的 Hydra 参数:

TRAIN_BATCH_SIZE=128 \
PPO_MINI_BATCH_SIZE=32 \
ROLLOUT_TP=2 \
ROLLOUT_GPU_MEM_UTIL=0.6 \
MODEL_PATH=/data/models/Qwen3-8B \
bash /path/to/verl-ascend-recipe/remax/run_qwen3_8b_remax_fsdp_npu.sh

设计与代码改动

本次属于配置级适配。参数和优化器 offload 会引入少量 HBM 与 CPU 之间的数据传输开销,但能够在 64 GB 显存设备上为同机部署的 vLLM-Ascend rollout engine 留出安全余量。ReMax 会同时生成采样 response 和 greedy baseline,因此 rollout 显存峰值高于普通 PPO 或 GRPO。对于显存更大的昇腾设备,可以重新调整 offload 和 rollout 显存参数,在显存余量与吞吐之间进行权衡。

AI 辅助说明

本次迁移使用了 AI 辅助,包括迁移已经验证过的脚本、执行本地检查,以及将原 PR 的性能报告和使用说明调整到当前仓库。人工提交者已审阅本次贡献,并对理解、测试和维护全部改动负责。

Closes #23

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: yukinotech <yukinotech@gmail.com>
Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: yukinotech <yukinotech@gmail.com>
@yukinotech
yukinotech marked this pull request as ready for review August 31, 2026 11:23
@yukinotech yukinotech changed the title feat(recipe): add Qwen3-8B ReMax FSDP NPU recipe feat(recipe): 新增 Qwen3-8B ReMax FSDP 昇腾训练脚本 Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[社区任务10] 基于FSDP/Megatron+vllm_ascend完成qwen3 8b的remax_trainer训练

1 participant