找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1132

积分

0

好友

164

主题
发表于 昨天 00:23 | 查看: 5| 回复: 0

环境搭建与框架选择

为了开展基于智能体的强化学习(Agentic RL)实验,首先需要准备合适的计算环境与训练框架。经过评估,本文选择slime作为核心训练框架。

选择slime框架的四大理由

  1. 架构优雅,易于上手:slime的整体架构与代码设计追求简洁与优雅,对于RL研究者而言非常友好。其轻量化的设计使得研究者能够快速理解核心逻辑,并方便地对特定模块进行定制化修改。
  2. 社区活跃,文档完善:slime拥有活跃的社区和持续更新的完善文档,为学习和问题排查提供了有力支持。
  3. 经过生产验证:该框架已被应用于实际的大模型训练项目中(例如智谱GLM模型的训练),证明了其在生产环境中的可靠性与有效性。
  4. 支持分布式训练:slime原生支持异步RL训练与分布式多卡训练,能够充分释放多GPU硬件的计算潜力。

官方提供了详尽的快速入门指南,可作为重要参考。

slime框架概览

快速启动:使用Docker部署

推荐使用Docker快速构建一致的Python与训练环境,避免复杂的本地依赖问题。

1. 拉取最新镜像

首先,从Docker Hub拉取slime官方镜像。

docker pull slimerl/slime:latest

2. 启动容器

启动一个支持GPU的容器,并配置必要的运行参数。

docker run --rm --gpus all --ipc=host --shm-size=16g \
  --ulimit memlock=-1 --ulimit stack=67108864 \
  -it slimerl/slime:latest /bin/bash

3. 安装slime框架

进入容器后,克隆源码并进行本地安装。

cd /root
git clone https://github.com/THUDM/slime.git
cd slime
pip install -e .

准备数据与模型

数据集下载

可以从Hugging Face等平台下载训练与评估所需的数据集。

# 下载训练数据集 (dapo-math-17k)
hf download --repo-type dataset zhuzilin/dapo-math-17k \
  --local-dir /root/dapo-math-17k

# 下载评估数据集 (aime-2024)
hf download --repo-type dataset zhuzilin/aime-2024 \
  --local-dir /root/aime-2024

模型权重格式转换

当使用Megatron作为训练后端时,需将Hugging Face格式的模型权重转换为Megatron格式。

Hugging Face 格式 -> Megatron 格式
以Qwen3-4B模型为例,首先加载模型配置文件。

# 查看模型配置
vim scripts/models/qwen3-4b.sh
# 加载配置到环境变量
source scripts/models/qwen3-4b.sh

随后,运行转换脚本。

PYTHONPATH=/root/Megatron-LM python tools/convert_hf_to_torch_dist.py \
    ${MODEL_ARGS[@]} \
    --hf-checkpoint [huggingface模型地址] \
    --save [megatron格式保存地址]

Megatron 格式 -> Hugging Face 格式

PYTHONPATH=/root/Megatron-LM python tools/convert_torch_dist_to_hf.py \
    --input-dir /path/to/torch_dist_ckpt/iter_xxx/ \
    --output-dir [hf格式保存地址] \
    --origin-hf-dir [原始huggingface模型地址]

注意:若转换后embedding形状不匹配,可能需要通过 --vocab-size 参数指定词表大小。

训练参数配置详解

slime的训练脚本通过组合多组参数来控制整个流程。以下对关键参数进行解析。

MODEL_ARGS: 模型配置

通过 source 命令从 scripts/models/xxx.sh 加载,定义了Megatron所需的模型结构超参。

CKPT_ARGS: 检查点与路径

CKPT_ARGS=(
  # Hugging Face模型路径(用于加载tokenizer等信息)
  --hf-checkpoint [huggingface模型地址]
  # 参考模型(Reference Model)的Megatron格式检查点
  --ref-load [megatron模型地址]
  # Actor模型的加载路径。若为空,则从--ref-load加载
  --load [actor加载地址]
  # 训练过程中模型的保存路径
  --save [模型保存地址]
  # 模型保存间隔(步数)
  --save-interval 20
)

ROLLOUT_ARGS: 数据生成与训练循环

训练是一个“采样(Rollout)→训练(Training)”的闭环。

  • 采样阶段:由 --rollout-batch-size(Prompt数量)和 --n-samples-per-prompt(每个Prompt的回复数)决定产出样本总数。
  • 训练阶段:由 --global-batch-size(一次参数更新的样本量)和 --num-steps-per-rollout(使用当前采样数据执行的更新次数)决定消耗样本总数。

必须遵守的约束是:产出样本总数 = 消耗样本总数

ROLLOUT_ARGS=(
  # 数据路径与格式
  --prompt-data /root/dapo-math-17k/dapo-math-17k.jsonl
  --input-key prompt
  --label-key label
  --apply-chat-template
  --rollout-shuffle

  # Reward Model配置
  --rm-type deepscaler

  # 采样与训练循环控制
  --num-rollout 3000          # 总循环轮次
  --rollout-batch-size 16     # 每轮采样Prompt数
  --n-samples-per-prompt 8    # 每个Prompt生成回复数
  --num-steps-per-rollout 1   # 每轮采样数据训练的步数
  # global-batch-size 会根据上述公式自动计算或校验

  # 采样参数
  --rollout-max-response-len 8192
  --rollout-temperature 0.8
  --balance-data              # 数据负载均衡,提升训练速度
)

EVAL_ARGS: 评估参数

EVAL_ARGS=(
  --eval-interval 5                     # 评估间隔(按Rollout轮数)
  --eval-prompt-data aime /root/aime-2024/aime-2024.jsonl
  --n-samples-per-eval-prompt 16
  --eval-max-response-len 16384
  --eval-top-p 0.7
)

PERF_ARGS: 性能与并行配置

此部分包含Megatron并行策略与slime的性能优化选项。

  • --max-tokens-per-gpu:每张GPU处理的最大Token数。启用动态批处理后,系统会智能打包样本,使每个micro-batch的总Token数接近此值,极大提升云原生/IaaS环境下的训练效率。
  • --use-dynamic-batch-size:启用动态批处理,此时将忽略 --micro-batch-size
    PERF_ARGS=(
    --tensor-model-parallel-size 2
    --sequence-parallel
    --pipeline-model-parallel-size 1
    --context-parallel-size 2
    --recompute-granularity full
    --recompute-method uniform
    --recompute-num-layers 1
    # --micro-batch-size 1  # 启用动态批处理后此项失效
    --use-dynamic-batch-size
    --max-tokens-per-gpu 4608
    )

GRPO_ARGS: GRPO算法参数

GRPO_ARGS=(
  --advantage-estimator grpo
  --use-kl-loss               # 启用KL散度监控(是否计入损失由系数决定)
  --kl-loss-coef 0.00         # 设置为0则KL散度仅监控,不参与损失计算
  --kl-loss-type low_var_kl
  --entropy-coef 0.00
  --eps-clip 0.2
  --eps-clip-high 0.28
)

--calculate-per-token-loss:slime默认计算per-sample loss,如需计算per-token loss可开启此选项。

SGLANG_ARGS: 推理服务参数

SGLANG_ARGS=(
  --rollout-num-gpus-per-engine 2  # 等同于SGLang的tp_size
)

其他SGLang参数可通过 --sglang- 前缀传递,例如 --sglang-log-level INFO

训练部署模式:分离与一体

slime支持两种资源调度模式。

1. 训推分离(标准模式)
训练(Actor)和推理(Rollout)使用独立的GPU资源组,通过Ray调度并行运行。

ray job submit ... \
  -- python3 train.py \
  --actor-num-nodes 1 \
  --actor-num-gpus-per-node 4 \
  --rollout-num-gpus 4 \  # 推理独占4卡
  ...(其他参数)

2. 训推一体(Colocated模式)
训练和推理共享同一组GPU,通过添加 --colocate 参数启用,此时会忽略 --rollout-num-gpus

ray job submit ... \
  -- python3 train.py \
  --actor-num-nodes 1 \
  --actor-num-gpus-per-node 8 \
  --colocate \  # 训练与推理共享8卡
  ...(其他参数)

启动训练

完成所有配置后,在slime项目根目录下执行启动脚本即可开始GRPO训练。

bash scripts/run-qwen3-4B.sh

训练启动日志
训练过程监控
评估结果输出




上一篇:MySQL 8.0 CHECK约束详解:实现数据完整性验证与复杂业务规则
下一篇:腾讯混元HunyuanOCR 1B模型本地部署实战:轻量级端到端OCR测试
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 14:39 , Processed in 0.155645 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表