GRPO配置参数简介

MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 GRPO 训练的参数配置过程。RLXF 训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,GRPO 训练相关的模型参数文件以 grpo_trainer_模型名_模型大小_机器型号.yaml方式命名。在每个 grpo_trainer 配置文件中,需要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置。

  • defaults: 负责引入模型配置文件,在 defaults 中应列举本配置文件中所需要用到的所有模型配置,模型配置可以在 megatron_training 、actor_config 具体配置中通过 model 字段进行选择。
  • megatron_training: 字段设置的参数为训练引擎通用的默认参数。
  • actor_config:actor 、ref 的训练配置参数。
  • rl_config: 在 GRPO 训练中的特性参数,以及模型的资源配置。
  • generate_config: 包含 tokenizer 相关配置、推理并行配置、vllm 模型相关设置以及样本采样参数配置。

参数解析

相较于普通模型训练,GRPO 增加一些特殊参数,以下将给出部分参数的意义解析。具体的参数配置格式请参照示例 配置文件

defaults:

引入模型配置(网络结构需要定义在model目录的yaml文件下):

  • model: qwen25_7b

megatron_training:

  • stage:用于指定训练算法,使用 Ray GRPO 训练须设置为ray_grpo
  • global_batch_size: 经过多少样本后 actor-train 和 rollout 权重同步;
  • data_path: 数据集路径配置,例如 /dataset/data,注意带前缀;
  • tokenizer_name_or_path: 分词器路径配置,可以配置为 Hugging Face 权重文件的文件夹路径,例如 /ckpt/qwen2.5_7b_hf/ ;
  • 其余参数: 其余参数为Megatron训练中的特性配置;

全量重计算

  • recompute-granularity: 可选,对于内存非常有限的情况,全量重计算只保存 Transformer 层或层组的输入激活值,其他部分全部重新计算,设置该属性为 full;
  • recompute-num-layers: 可选,指定重计算分组层数 or 指定重计算层数;
  • recompute-method: 可选,在全量重计算的前提下,设置 recompute-method 为 uniform 代表将Transformer 层均匀划分组(每组大小 recompute-num-layers),按组存储输入和激活值;设置为 block 代表将前 recompute-num-layers 个 Transformer 层重计算,剩余层不进行重计算;

actor_config:

配置 GRPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 模型,开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。

  • micro_batch_size:梯度累积的 mbs 大小;
  • tensor_model_parallel_size:TP 并行策略数;
  • pipeline_model_parallel_size:PP 并行策略数;
  • lr:学习率;
  • lr_decay_style:学习率衰减配置;
  • min_lr:最小学习率;
  • weight_decay:权重衰减,用于防止模型过拟合;
  • lr_warmup_fraction:学习率预热比例,在训练初期逐渐增大学习率的比例;
  • clip_grad:梯度裁剪系数;
  • load:模型加载的路径;
  • save:模型保存的路径;
  • no_load_optim:续训加载优化器状态,默认为false;
  • no_load_rng:续训加载数据随机数生成器,默认为false;
  • no_save_optim:可选,保存优化器状态,默认为false;
  • no_save_rng:可选,保存数据随机数生成器,默认为false;

rl_config:

  • use_integrated_worker:是否开启全共卡模式,默认为 true;
  • blocking:是否开启异步,默认为 true;
  • gamma:奖励折扣因子,默认为 1.0;
  • lam:GAE参数,默认为 0.95;
  • actor_forward_micro_batch_size:actor model 前向计算 logp 的 mbs 大小;
  • ref_forward_micro_batch_size:ref model 前向计算 logp 的 mbs 大小;
  • adv_estimator:优势计算方法;
  • kl_penalty:kl 散度惩罚系数;
  • kl_ctrl_type:kl loss 计算方法;
  • init_kl_coef:kl loss 所占权重;
  • mini_batch_size:每 mini batch size 之后 actor 会更新一次;
  • max_prompt_length:GRPO 训练中最大 prompt 长度,默认为512;
  • clip_ratio:Actor 模型训练计算损失函数时的 clip 比例,默认为0.2 一般取值范围 [0.1,0.3] 最大取值范围[0,1] 该数值越大允许策略更新的幅度越大,反之不然;
  • entropy_coeff: entropy loss 所占权重;
  • n_samples_per_prompt:每条prompt的重用次数,一条 prompt 输入能输出 n 条 response;
  • guarantee_order: 是否开启TransferDock保序,默认 False;
  • shuffle_mini_batch:Actor 训练时是否对 minibatch 进行 shuffle,默认为 False;
  • log_max_throughput: 配置tps计算时是否使用max值,默认为 true;
  • num_cpus_for_local_task: ray 进程配置的 cpu 数量,默认为1;
  • actor_resource :分配给 Actor 、Reference模型的显卡数量;

显卡资源配置

```
actor_resource:
    num_npus: 4
```

规则奖励配置

  • rule_reward: 开启后,使用规则奖励进行打分;
  • verifier_function: 选择使用的规则奖励模型方法,例如["acc", "strict_format"] ;
  • verifier_weight: 配置规则奖励模型权重,例如[1.0, 1.0];

日志配置

tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效):

  • use_tensorboard: 配置为 True 时打开 tensorboard;

wandb开关:

  • use_wandb: 配置为 True 时打开 wandb;
  • wandb_project: project 名称配置;
  • wandb_exp_name: 实验名称配置;
  • wandb_save_dir: 本地存储 wandb 路径;

generate_config:

推理时的并行配置

  • infer_tensor_parallel_size:TP并行策略数;
  • infer_pipeline_parallel_size:PP并行策略数,当前未支持该功能,设置为 '1';
  • infer_expert_parallel_size:EP并行策略数;

resharding 相关配置

  • trust_remote_code: 是否信任远程代码执行;
  • offload_train_optimizer:卸载训练节点优化器;
  • offload_train_grad:卸载训练节点梯度;
  • offload_train_param:卸载模型权重;

vllm 模型相关设置

vllm 模型参数 可以参照 vllm官网参数介绍

  • max_num_seqs:vllm 推理并发最大样本限制;
  • max_model_len:vllm 能够处理的最大输入序列长度(prompt+response);
  • max_num_batched_tokens:vllm 单步能处理的最大 token 数量;
  • enforce_eager:使能PyTorch eager模式,默认开启,仅 DeepSeek V3 开启 torchair_graph 时需要关闭;
  • torchair_graph:DeepSeek V3 使能 torchair 图模式;
  • enable_expert_parallel:MOE 模型使能专家切分,需要 MOE 模型支持;
  • dtype:vllm 推理所使用的数据类型;
  • gpu_memory_utilization:GPU 内存利用率,指定推理时使用 GPU 内存的比例;
  • num_scheduler_steps:指的是在一个完整的调度周期内,调度器会将批处理请求分成多少个子步骤来执行;

采样配置

  • logprobs:是否生成logprobs;
  • max_tokens:单条response最大生成token数量;
  • top_p:vllm 筛选出概率累积和达到top_p的token集合,随后只在这个集合里进行采样;
  • top_k:vllm 会先选出概率最高的 top_k 个 token,然后在这 top_k 个 token 范围内进行采样;
  • min_p:vllm 过滤掉概率低于 min_p 的词元,不参与后续的采样过程;
  • temperature:采样时的随机性参数;
  • detokenize:是否将输出token重新转为文本;

runtime_env 环境变量

( 注:位于 configs/envs/runtime_env.yaml 中 )

  • RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES:是否禁用 Ray 对 ASCEND_RT_VISIBLE_DEVICES 的自动设置,'true'为禁用
  • TOKENIZERS_PARALLELISM:设置tokenizers是否支持并行,'true'为支持
  • NCCL_DEBUG:NCCL Debug日志级别,VERSION、WARN、INFO、TRACE
  • PYTORCH_NPU_ALLOC_CONF:设置缓存分配器行为
  • HCCL_CONNECT_TIMEOUT:HCCL 连接超时时间
  • HCCL_EXEC_TIMEOUT:HCCL 执行超时时间
  • HCCL_IF_BASE_PORT:HCCL 通信端口
  • CUDA_DEVICE_MAX_CONNECTIONS:设备最大连接数
  • HYDRA_FULL_ERROR:设置 HYDRA 是否输出完整错误日志
  • VLLM_DP_SIZE:vLLM数据并行度(Data Parallelism)大小,控制数据分片数量,稠密模型需要设置为1,MOE模型要求必须和EP一致
  • HCCL_BUFFSIZE:HCCL通信层单次传输的最大缓冲区大小(单位MB),影响跨设备通信效率
  • VLLM_USE_V1:使用vLLM的V1 engine API(v1接口),当前只支持 v1 ,需设置为 '1'。
  • USING_LCCL_COM:指定不使用 LCCL 通信
  • VLLM_VERSION:指定使用的vLLM版本号
  • VLLM_ENABLE_TOPK_OPTIMZE:使能vLLM TOPK性能优化
  • VLLM_ASCEND_ACL_OP_INIT_MODE:vLLM aclop 初始化模式: 0: default, normal init.
  • TASK_QUEUE_ENABLE:控制开启task_queue算子下发队列优化的等级,推荐设置为 '2' 使能 Level 2 优化。
  • CPU_AFFINITY_CONF:指定使用绑核优化,推荐设置为 '1'。
  • LCAL_COMM_ID: 开启coc特性时配套启用,设置为'127.0.0.1:27001'。
  • GLOO_SOCKET_IFNAME:指定 GLOO 框架通信网卡。
  • TP_SOCKET_IFNAME:指定 TP 相关通信网卡。
  • HCCL_SOCKET_IFNAME:指定 HCCL 通信网卡。