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、TRACEPYTORCH_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 通信网卡。