已合并
[mindspeed-rl] grpo与ppo算法配置说明readme优化 #786
张健翔创建于 2025年12月4日
[mindspeed-rl] grpo与ppo算法配置说明readme优化 #786
已合并
张健翔创建于 2025年12月4日
6 个文件变更+349-334
@@ -114,65 +114,15 @@ rl_config:
114 ref_model_load_path: ./Qwen2.5-7B-tp4 <------- 断点续训时,应在 ref_model_load_path 中配置原始模型权重路径,供 reference model 加载114 ref_model_load_path: ./Qwen2.5-7B-tp4 <------- 断点续训时,应在 ref_model_load_path 中配置原始模型权重路径,供 reference model 加载
115 ```115 ```
116 116 
117-## 日志打点指标说明117+## 时间分布和性能计算方式
118 118 
119-**时间相关指标说明**119+日志打点具体内容可以参考[ 日志打点指标说明 ](../features/log_metrics.md) 中的详细说明。
120- 
121-| 指标 | 说明 |
122-| ------------------------------------ | ----------------------------------------------------- |
123-| `timing/all` | 一次迭代总时间 |
124-| `timing/update` | 一次迭代中actor model进行update耗时 |
125-| `timing/rollout` | 一次迭代中actor model进行rollout耗时 |
126-| `timing/old_log_p` | 一次迭代中actor model计算logp耗时 |
127-| `timing/reference_model` | 一次迭代中reference model计算logp耗时 |
128-| `timing/resharding_to_train` | 权重转到训练mode耗时 |
129-| `timing/resharding_to_infer` | 权重转到推理mode耗时 |
130-| `timing/adv` | 计算advantages耗时 |
131-| `timing/non_overlap_reference_model` | reference model计算logp耗时的未被掩盖时间 |
132-| `timing/non_overlap_rule_reward` | rule_reward耗时的未被掩盖时间 |
133-| `timing/non_overlap_reward_model` | reward_model耗时的未被掩盖时间 |
134-| `timing/non_overlap_adv` | advantages计算耗时的未被掩盖时间 |
135-| `timing/rule_reward` | rule reward打分耗时 |
136-| `timing/reward_model` | reward model打分耗时 |
137-| `timing/ref_onload` | reference model计算logp过程中,onload耗时 |
138-| `timing/ref_offload` | reference model计算logp过程中,offload耗时 |
139 120 
140* 全共卡方案下总时间分布121* 全共卡方案下总时间分布
141 122 
142`timing/all` >= `timing/rollout` +`timing/old_log_p` + `timing/update` + `timing/reference_model` + `timing/reshard_to_train` + `timing/reshard_to_infer` + `max(timing/non_overlap_rule_reward, timing/non_overlap_reference_model)`123`timing/all` >= `timing/rollout` +`timing/old_log_p` + `timing/update` + `timing/reference_model` + `timing/reshard_to_train` + `timing/reshard_to_infer` + `max(timing/non_overlap_rule_reward, timing/non_overlap_reference_model)`
143 124 
144 125 
145-**其他指标**
146- 
147-| 指标 | 说明 |
148-|------------------------------------| ------------------------------------------------------------ |
149-| `actor/entropy` | 策略熵,表示策略的随机性或探索能力 |
150-| `actor/kl_loss` | kl散度,衡量当前策略与参考策略(如旧策略或参考模型)之间的偏离程度 |
151-| `actor/pg_loss` | pg_loss,基于优势函数的策略梯度目标函数值,表示当前策略对提升奖励的学习能力。 |
152-| `actor/pg_clipfrac` | GRPO中裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
153-| `actor/ppo_kl` | PPO算法的实际 KL 散度 |
154-| `grad_norm` | 梯度范数,表示当前反向传播中参数梯度的整体幅度 |
155-| `{verifier_function}_rewards/mean` | 规则奖励打分的平均总奖励值 |
156-| `actor/lr` | 学习率,优化器当前使用的学习率 |
W
Wwucong252025年12月4日
已过期

这些为啥都删掉了

likedislike
张健翔
2025年12月5日 评论:
157-| `grpo/score/mean` | 开启奖励模型时的reward均值 |
158-| `grpo/score/max` | 奖励模型及规则奖励对同一个样本的reward最大值 |
159-| `grpo/score/min ` | 奖励模型及规则奖励对同一个样本的reward最小值 |
160-| `grpo/rewards/mean` | 规则奖励的reward均值;奖励模型对样本的reward经过归一化后的均值 |
161-| `grpo/rewards/max` | 规则奖励的reward最大值;奖励模型对样本的reward经过归一化后的最大值 |
162-| `grpo/rewards/min` | 规则奖励的reward最小值;奖励模型对样本的reward经过归一化后的最小值 |
163-| `response_length/mean` | 平均生成长度,模型生成回复(response)的平均 token 数 |
164-| `response_length/min` | 最短生成长度,当前 batch 中生成最短的 response 长度 |
165-| `response_length/max` | 最长生成长度,当前 batch 中生成最长的 response 长度 |
166-| `prompt_length/mean` | 平均输入长度,输入 prompt 的平均长度 |
167-| `prompt_length/max` | 最长输入长度,当前 batch 中最长的 prompt长度 |
168-| `prompt_length/min` | 最短输入长度,当前 batch 中最长的 prompt长度 |
169-| `global_batch_size` | 每次训练迭代所处理的总prompt数量 |
170-| `n_samples_per_prompt` | 每条prompt在rollout阶段生成的response数量 |
171-| `world_size` | 在分布式训练中集群中总的设备数量(并行训练的总进程数) |
172-| `e2e_tps` | 端到端的tokens/p/s指标 |
173-| `update_tps` | 训练的tokens/p/s指标 |
174-| `vllm_tps` | 推理的tokens/p/s指标 |
175- 
176* e2e_tps计算方式126* e2e_tps计算方式
177 127 
178$$128$$
@@ -191,7 +141,7 @@ $$
191(\text{response\_length\_mean} + \text{prompt\_length\_mean}) \times \text{global\_batch\_size} \times \text{n\_samples\_per\_prompt} / \text{world\_size} \ / \text{time\_rollout}141(\text{response\_length\_mean} + \text{prompt\_length\_mean}) \times \text{global\_batch\_size} \times \text{n\_samples\_per\_prompt} / \text{world\_size} \ / \text{time\_rollout}
192$$142$$
193 143 
194-注: 以上计算公式中 ` time_all`、`time_update`、`time_rollout`、`response_length_mean` 和 `prompt_length_mean` 即分别对应于指标说明里的`timing/all`、`timing/update`、`timing/rollout`、`response_length/mean`和`prompt_length/mean`,此处名字修改是为了区别于公式里的`/`计算符号;144+注: 以上计算公式中 ` time_all`、`time_update`、`time_rollout`、`response_length_mean` 和 `prompt_length_mean` 即分别对应于[ 日志打点指标说明 ](../features/log_metrics.md)里的`timing/all`、`timing/update`、`timing/rollout`、`response_length/mean`和`prompt_length/mean`,此处名字修改是为了区别于公式里的`/`计算符号;
195 145 
196## 性能数据146## 性能数据
197 147 
@@ -133,78 +133,13 @@ rl_config:
133 ref_model_load_path: ./Qwen2.5-32B-tp8 <------- 断点续训时,应在 ref_model_load_path 中配置原始模型权重路径,供 reference model 加载133 ref_model_load_path: ./Qwen2.5-32B-tp8 <------- 断点续训时,应在 ref_model_load_path 中配置原始模型权重路径,供 reference model 加载
134```134```
135 135 
136-## 日志打点指标说明136+## 时间分布和性能计算方式
137- 
138-**时间相关指标说明**
139- 
140-| 指标 | 说明 |
141-| ------------------------------------ | -------------------------------------------------------- |
142-| `timing/all` | 一次迭代总时间 |
143-| `timing/update` | 一次迭代中actor model进行update耗时 |
144-| `timing/rollout` | 一次迭代中actor model进行rollout耗时 |
145-| `timing/old_log_p` | 一次迭代中actor model计算log p耗时 |
146-| `timing/reference_model` | 一次迭代中reference model计算log p耗时 |
147-| `timing/resharding_to_train` | 权重转到训练mode耗时 |
148-| `timing/resharding_to_infer` | 权重转到推理mode耗时 |
149-| `timing/adv` | 计算advantages耗时 |
150-| `timing/non_overlap_reference_model` | reference model计算log_p耗时的未被掩盖时间 |
151-| `timing/non_overlap_rule_reward` | rule_reward耗时的未被掩盖时间 |
152-| `timing/non_overlap_reward_model` | reward_model耗时的未被掩盖时间 |
153-| `timing/non_overlap_adv` | advantages计算耗时的未被掩盖时间 |
154-| `timing/rule_reward` | rule reward打分耗时 |
155-| `timing/reward_model` | reward model打分耗时 |
156-| `timing/ref_onload` | reference model计算logp过程中,onload耗时 |
157-| `timing/ref_offload` | reference model计算logp过程中,offload耗时 |
158-| `timing/critic_model` | 一次迭代中critic model计算values耗时 |
159-| `timing/update_critic` | 一次迭代中critic model进行update耗时 |
160 137 
138+日志打点具体内容可以参考[ 日志打点指标说明 ](../features/log_metrics.md) 中的详细说明。
161* 全共卡方案下总时间计算方式139* 全共卡方案下总时间计算方式
162 140 
163`timing/all` >= `timing/rollout` +`timing/old_log_p` + `timing/update` + `timing/reference_model` + `timing/reshard_to_train` + `timing/reshard_to_infer` + `max(timing/non_overlap_rule_reward, timing/non_overlap_reference_model)`+`timing/critic_model` +`timing/update_critic`141`timing/all` >= `timing/rollout` +`timing/old_log_p` + `timing/update` + `timing/reference_model` + `timing/reshard_to_train` + `timing/reshard_to_infer` + `max(timing/non_overlap_rule_reward, timing/non_overlap_reference_model)`+`timing/critic_model` +`timing/update_critic`
164- 142+ |
165-**其他指标**
166- 
167-| 指标 | 说明 |
168-|------------------------------------| ------------------------------------------------------------ |
169-| `actor/entropy` | 策略熵,表示策略的随机性或探索能力 |
170-| `actor/kl_loss` | kl散度,衡量当前策略与参考策略(如旧策略或参考模型)之间的偏离程度 |
171-| `actor/pg_loss` | pg_loss,基于优势函数的策略梯度目标函数值,表示当前策略对提升奖励的学习能力。 |
172-| `actor/pg_clipfrac` | PPO中actor model裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
173-| `actor/ppo_kl` | PPO算法的实际 KL 散度 |
174-| `grad_norm` | 梯度范数,表示当前反向传播中参数梯度的整体幅度 |
175-| `critic/vf_loss` | vf_loss,基于优势函数的策略梯度目标函数值,表示当前策略对提升奖励的学习能力。 |
176-| `critic/vf_clipfrac` | PPO中critic model裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
177-| `critic/vf_clipfrac` | PPO中critic model裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
178-| `{verifier_function}_rewards/mean` | 规则奖励打分的平均总奖励值 |
179-| `actor/lr` | actor model学习率,优化器当前使用的学习率 |
180-| `critic/lr` | critic model学习率,优化器当前使用的学习率 |
181-| `critic/score/mean` | 开启奖励模型时的reward均值 |
182-| `critic/score/max` | 奖励模型及规则奖励对同一个样本的reward最大值 |
183-| `critic/score/min ` | 奖励模型及规则奖励对同一个样本的reward最小值 |
184-| `critic/rewards/mean` | 规则奖励的reward均值;奖励模型对样本的reward经过归一化后的均值 |
185-| `critic/rewards/max` | 规则奖励的reward最大值;奖励模型对样本的reward经过归一化后的最大值 |
186-| `critic/rewards/min` | 规则奖励的reward最小值;奖励模型对样本的reward经过归一化后的最小值 |
187-| `critic/advantages/mean` | 优势值均值;奖励模型对样本的reward经过归一化后的均值 |
188-| `critic/advantages/max` | 优势值最大值;奖励模型对样本的reward经过归一化后的最大值 |
189-| `critic/advantages/min` | 优势值最小值;奖励模型对样本的reward经过归一化后的最小值 |
190-| `critic/returns/mean` | 所有未来奖励的折扣和均值;奖励模型对样本的reward经过归一化后的均值 |
191-| `critic/returns/max` | 所有未来奖励的折扣和最大值;奖励模型对样本的reward经过归一化后的最大值 |
192-| `critic/returns/min` | 所有未来奖励的折扣和最小值;奖励模型对样本的reward经过归一化后的最小值 |
193-| `critic/values/mean` | 当前状态下未来收益均值;奖励模型对样本的reward经过归一化后的均值 |
194-| `critic/values/max` | 当前状态下未来收益均值最大值;奖励模型对样本的reward经过归一化后的最大值 |
195-| `critic/values/min` | 当前状态下未来收益均值最小值;奖励模型对样本的reward经过归一化后的最小值 |
196-| `response_length/mean` | 平均生成长度,模型生成回复(response)的平均 token 数 |
197-| `response_length/min` | 最短生成长度,当前 batch 中生成最短的 response 长度 |
198-| `response_length/max` | 最长生成长度,当前 batch 中生成最长的 response 长度 |
199-| `prompt_length/mean` | 平均输入长度,输入 prompt 的平均长度 |
200-| `prompt_length/max` | 最长输入长度,当前 batch 中最长的 prompt长度 |
201-| `prompt_length/min` | 最短输入长度,当前 batch 中最长的 prompt长度 |
202-| `global_batch_size` | 每次训练迭代所处理的总prompt数量 |
203-| `n_samples_per_prompt` | 每条prompt在rollout阶段生成的response数量 |
204-| `world_size` | 在分布式训练中集群中总的设备数量(并行训练的总进程数) |
205-| `e2e_tps` | 端到端的tokens/p/s指标 |
206-| `update_tps` | 训练的tokens/p/s指标 |
207-| `vllm_tps` | 推理的tokens/p/s指标 |
208 143 
209* e2e_tps计算方式144* e2e_tps计算方式
210 145 
@@ -223,7 +158,9 @@ $$
223$$158$$
224(\text{response\_length\_mean} + \text{prompt\_length\_mean}) \times \text{global\_batch\_size} \times \text{n\_samples\_per\_prompt} / \text{world\_size} \ / \text{time\_rollout}159(\text{response\_length\_mean} + \text{prompt\_length\_mean}) \times \text{global\_batch\_size} \times \text{n\_samples\_per\_prompt} / \text{world\_size} \ / \text{time\_rollout}
225$$160$$
226-注: 以上计算公式中 ` time_all`、`time_update`、`time_rollout`、`response_length_mean` 和 `prompt_length_mean` 即分别对应于指标说明里的`timing/all`、`timing/update`、`timing/rollout`、`response_length/mean`和`prompt_length/mean`,此处名字修改是为了区别于公式里的`/`计算符号;161+ 
162+注: 以上计算公式中 ` time_all``time_update``time_rollout``response_length_mean``prompt_length_mean` 即分别对应于 [日志打点指标说明](../features/log_metrics.md) 里的 `timing/all``timing/update``timing/rollout``response_length/mean``prompt_length/mean`,此处名字修改是为了区别于公式里的`/`计算符号;
163+ 
227 164 
228## 性能数据165## 性能数据
229| 模型 | 机器型号 | GBS | n_samples | max_prompt_length | max_tokens | 端到端 tps | 166| 模型 | 机器型号 | GBS | n_samples | max_prompt_length | max_tokens | 端到端 tps |
@@ -1,11 +1,15 @@
1## GRPO配置参数简介1## GRPO配置参数简介
2-MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 GRPO 训练的参数配置过程。RLXF 训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,GRPO 训练相关的模型参数文件以 grpo_trainer_模型名_模型大小_机器型号.yaml方式命名。在每个 grpo_trainer 配置文件中,需要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置。2+MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 GRPO 训练的参数配置过程。强化学习训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,GRPO 训练相关的模型参数文件以 grpo_trainer_模型名_模型大小_机器型号.yaml方式命名。
3 3 
4-* `defaults:` 负责引入模型配置文件,defaults 中应列举本配置文件中所需要用到的所有模型配置模型配置可以在 megatron_training 、actor_config 具体配置中通过 model 字段进行选择。4+grpo_trainer 配置文件中,主要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置:
5-* `megatron_training:` 字段设置的参数为训练引擎通用的默认参数。5+ 
6-* `actor_config:`actor 、ref 的训练配置参数6+| 参数名 | 说明 |
7-* `rl_config: ` 在 GRPO 训练中的特性参数,以及模型的资源配置。7+|--------|------|
8-* `generate_config:` 包含 tokenizer 相关配置、推理并行配置、vllm 模型相关设置以及样本采样参数配置8+| `defaults` | 引入需要使用的模型配置文件,其下的模型配置(如`model`)<br> 可在 `megatron_training``actor_config` 等具体配置中被选择使用 |
9+| `megatron_training` | 训练引擎的通用默认参数配置 |
10+| `actor_config` | Actor 模型和 Reference 模型的训练配置参数 |
11+| `rl_config` | GRPO 训练中的特有参数,以及相关模型的资源配置 |
12+| `generate_config` | 包含分词器设置、推理并行配置、vLLM 引擎参数及生成采样参数等 |
9 13 
10## 参数解析14## 参数解析
11 15 
@@ -16,58 +20,67 @@ MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置
16* `model`: qwen25_7b20* `model`: qwen25_7b
17### `megatron_training:`21### `megatron_training:`
18 22 
19-* `stage`:用于指定训练算法,使用 Ray GRPO 训练须设置为`ray_grpo`;23+| 参数名 | 说明 |
20-* `global_batch_size`: 经过多少样本后 actor-train 和 rollout 权重同步;24+|--------|------|
21-* `data_path`: 数据集路径配置,例如 /dataset/data注意带前缀;25+| `stage` | 用于指定训练算法使用 Ray GRPO 训练须设置为 `ray_grpo` | `ray_grpo` |
22-* `tokenizer_name_or_path`: 分词器路径配置,可以配置为 Hugging Face 权重文件的文件夹路径,例如 /ckpt/qwen2.5_7b_hf/ ;26+| `global_batch_size` | 经过多少样本后 actor-train 和 rollout 权重同步 |
23-* `其余参数`: 其余参为Megatron训练中的特性配置27+| `data_path` | 据集路径配置,例如 `/dataset/data`,注意带前缀 |
28+| `tokenizer_name_or_path` | 分词器路径配置,可以配置为 Hugging Face 权重文件的文件夹路径,例如 `/ckpt/qwen2.5_7b_hf/` |
29+| `其余参数` | 其余参数为 Megatron 训练中的特性配置 |
24 30 
25#### 全量重计算31#### 全量重计算
26-* `recompute-granularity`: 可选,对于内存非常有限的情况,全量重计算只保存 Transformer 层或层组的输入激活值,其他部分全部重新计算,设置该属性为 full;
27-* `recompute-num-layers`: 可选,指定重计算分组层数 or 指定重计算层数;
28-* `recompute-method`: 可选,在全量重计算的前提下,设置 recompute-method 为 uniform 代表将Transformer 层均匀划分组(每组大小 recompute-num-layers),按组存储输入和激活值;设置为 block 代表将前 recompute-num-layers 个 Transformer 层重计算,剩余层不进行重计算;
29 32 
33+| 参数名 | 说明 | 默认值 |
34+|--------|------|--------|
35+| `recompute_granularity` | 对于内存非常有限的情况,全量重计算只保存 Transformer 层或层组的输入激活值,其他部分全部重新计算 |
36+| `recompute_num_layers` | 指定重计算分组层数或重计算层数 |
37+| `recompute_method` | 全量重计算的方法选择:<br>`uniform`:将 Transformer 层均匀划分组(每组大小由 `recompute_num_layers` 指定),按组存储输入和激活值<br>`block`:将前 `recompute_num_layers` 个 Transformer 层重计算,剩余层不进行重计算 |
30 38 
31### `actor_config:`39### `actor_config:`
32配置 GRPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 模型,开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。40配置 GRPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 模型,开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。
33-* `micro_batch_size`:梯度累积的 mbs 大小;
34-* `tensor_model_parallel_size`:TP 并行策略数;
35-* `pipeline_model_parallel_size`:PP 并行策略数;
36-* `lr`:学习率;
37-* `lr_decay_style`:学习率衰减配置;
38-* `min_lr`:最小学习率;
39-* `weight_decay`:权重衰减,用于防止模型过拟合;
40-* `lr_warmup_fraction`:学习率预热比例,在训练初期逐渐增大学习率的比例;
41-* `clip_grad`:梯度裁剪系数;
42-* `load`:模型加载的路径;
43-* `save`:模型保存的路径;
44-* `no_load_optim`:续训加载优化器状态,默认为false;
45-* `no_load_rng`:续训加载数据随机数生成器,默认为false;
46-* `no_save_optim`:可选,保存优化器状态,默认为false;
47-* `no_save_rng`:可选,保存数据随机数生成器,默认为false;
48 41 
42+| 参数名 | 说明 |
43+|--------|------|
44+| `micro_batch_size` | 梯度累积的 mbs 大小 |
45+| `tensor_model_parallel_size` | TP 并行策略数 |
46+| `pipeline_model_parallel_size` | PP 并行策略数 |
47+| `lr` | 学习率 |
48+| `lr_decay_style` | 学习率衰减配置 |
49+| `min_lr` | 最小学习率 |
50+| `weight_decay` | 权重衰减,用于防止模型过拟合 |
51+| `lr_warmup_fraction` | 学习率预热比例,在训练初期逐渐增大学习率的比例 |
52+| `clip_grad` | 梯度裁剪系数 |
53+| `load` | 模型加载的路径 |
54+| `save` | 模型保存的路径 |
55+| `no_load_optim` | 续训加载优化器状态 |
56+| `no_load_rng` | 续训加载数据随机数生成器 |
57+| `no_save_optim` | 保存优化器状态 |
58+| `no_save_rng` | 保存数据随机数生成器 |
49 59 
50### `rl_config: `60### `rl_config: `
51-* `use_integrated_worker`:是否开启全共卡默认为 true;61+配置 GRPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。
52-* `blocking`:是否开启异步,默认为 true;62+| 参数名 | 说明 |
53-* `gamma`:奖励折扣因子,默认为 1.0;63+|--------|------|
54-* `lam`:GAE参数,默认为 0.95;64+| `use_integrated_worker` | 是否开启全共卡模式 |
55-* `actor_forward_micro_batch_size`:actor model 前向计算 logp 的 mbs 大小;65+| `blocking` | 是否开启异步 |
56-* `ref_forward_micro_batch_size`:ref model 前向计算 logp 的 mbs 大小;66+| `gamma` | 奖励折扣因子 |
57-* `adv_estimator`:优势计算方法;67+| `lam` | GAE参数 |
58-* `kl_penalty`:kl 散度惩罚系数;68+| `actor_forward_micro_batch_size` | actor model 前向计算 logp 的 mbs 大小 |
59-* `kl_ctrl_type`:kl loss 计算方法;69+| `ref_forward_micro_batch_size` | ref model 前向计算 logp 的 mbs 大小 |
60-* `init_kl_coef`:kl loss 所占权重;70+| `adv_estimator` | 优势计算方法 |
61-* `mini_batch_size`:每 mini batch size 之后 actor 会更新一次;71+| `kl_penalty` | kl 散度惩罚系数 |
62-* `max_prompt_length`:GRPO 训练中最大 prompt 长度,默认为512;72+| `kl_ctrl_type` | kl loss 计算方法 |
63-* `clip_ratio`:Actor 模型训练计算损失函数时的 clip 比例,默认为0.2 一般取值范围 [0.1,0.3] 最大取值范围[0,1] 该数值越大允许策略更新的幅度越大,反之不然;73+| `init_kl_coef` | kl loss 所占权重 |
64-* `entropy_coeff`: entropy loss 所占权重;74+| `mini_batch_size` | mini batch size 之后 actor 会更新一次 |
65-* `n_samples_per_prompt`:每条prompt的重用次数,一条 prompt 输入能输出 n response;75+| `max_prompt_length` | GRPO 训练中最大 prompt 长度 |
66-* `guarantee_order`: 是否开启TransferDock保序默认 False;76+| `clip_ratio` | Actor 模型训练计算损失函数时的 clip 比例一般取值范围 [0.1,0.3] 最大取值范围[0,1],该数值越大允许策略更新的幅度越大 |
67-* `shuffle_mini_batch`:Actor 训练时是否对 minibatch 进行 shuffle,默认为 False;77+| `entropy_coeff` | entropy loss 所占权重 |
68-* `log_max_throughput`: 配置tps计算时是否使max值默认为 true;78+| `n_samples_per_prompt` | 每条prompt的重次数一条 prompt 输入能输出 n 条 response |
69-* `num_cpus_for_local_task`: ray 进程配置的 cpu 数量,默认为1;79+| `guarantee_order` | 是否开启TransferDock保序 |
70-* `actor_resource` :分配给 Actor 、Reference模型的显卡数量;80+| `shuffle_mini_batch` | Actor 训练时是否对 minibatch 进行 shuffle |
81+| `log_max_throughput` | 配置tps计算时是否使用max值 |
82+| `num_cpus_for_local_task` | ray 进程配置的 cpu 数量 |
83+| `actor_resource` | 分配给 Actor 、Reference模型的显卡数量 |
71 84 
72#### 显卡资源配置85#### 显卡资源配置
73 ```86 ```
@@ -75,73 +88,63 @@ MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置
75 num_npus: 488 num_npus: 4
76 ```89 ```
77#### 规则奖励配置90#### 规则奖励配置
78-* `rule_reward`: 开启后,使用规则奖励进行打分;91+ 
79-* `verifier_function`: 选择使用的规则奖励模型方法,例如["acc", "strict_format"] 92+| 参数名 | 说明 |
80-* `verifier_weight`: 配置规则奖励模型权重,例如[1.0, 1.0];93+|--------|------|
94+| `rule_reward` | 开启后,使用规则奖励进行打分 |
95+| `verifier_function` | 选择使用的规则奖励模型方法,例如 `["acc", "strict_format"]` |
96+| `verifier_weight` | 配置规则奖励模型权重,例如 `[1.0, 1.0]` |
81 97 
82#### 日志配置98#### 日志配置
83 99 
84tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效):100tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效):
85-* `use_tensorboard`: 配置为 True 时打开 tensorboard; 101+| 参数名 | 说明 |
102+|--------|------|
103+| `use_tensorboard` | 配置为 True 时打开 tensorboard(若 `use_tensorboard``use_wandb` 同时为 True,则 tensorboard 不生效) |
86 104 
87wandb开关:105wandb开关:
88-* `use_wandb`: 配置为 True 时打开 wandb; 106+| 参数名 | 说明 |
89-* `wandb_project`: project 名称配置; 107+|--------|------|
90-* `wandb_exp_name`: 实验名称配置108+| `use_wandb` | 配置为 True 时打开 wandb |
91-* `wandb_save_dir`: 本地存储 wandb 路径;109+| `wandb_project` | wandb project 名称配置 |
110+| `wandb_exp_name` | wandb 实验名称配置 |
111+| `wandb_save_dir` | 本地存储 wandb 数据的路径 |
92 112 
93 113 
94### `generate_config:`114### `generate_config:`
95#### 推理时的并行配置115#### 推理时的并行配置
96-* `infer_tensor_parallel_size`:TP并行策略116+| 名 | 说明 |
97-* `infer_pipeline_parallel_size`:PP并行策略数,当前未支持该功能,设置为 '1';117+|--------|------|
98-* `infer_expert_parallel_size`:EP并行策略数118+| `infer_tensor_parallel_size` | TP并行策略数 |
119+| `infer_pipeline_parallel_size` | PP并行策略数,当前未支持该功能,设置为 '1' |
120+| `infer_expert_parallel_size` | EP并行策略数 |
99#### resharding 相关配置121#### resharding 相关配置
100-* `trust_remote_code`: 是否信任远程代码执行;122+| 参数名 | 说明 |
101-* `offload_train_optimizer`:卸载训练节点优化器;123+|--------|------|
102-* `offload_train_grad`:卸载训练节点梯度;124+| `trust_remote_code` | 是否信任远程代码执行 |
103-* `offload_train_param`卸载模型权重;125+| `offload_train_optimizer` | 卸载训练节点优化器 |
126+| `offload_train_grad` | 卸载训练节点梯度 |
127+| `offload_train_param` | 卸载模型权重 |
104#### vllm 模型相关设置128#### vllm 模型相关设置
105vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html):129vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html):
106-* `max_num_seqs`:vllm 推理并发最大样本限制;130+| 参数名 | 说明 |
107-* `max_model_len`:vllm 能够处理的最大输入序列长度(prompt+response);131+|--------|------|
108-* `max_num_batched_tokens`vllm 单步能处最大 token 数量;132+| `max_num_seqs` | vllm 并发最大样本限制 |
109-* `enforce_eager`:使能PyTorch eager模式,默认开启,仅 DeepSeek V3 开启 torchair_graph 时需要关闭;133+| `max_model_len` | vllm 能够处理的最大输入序列长度(prompt+response) |
110-* `torchair_graph`:DeepSeek V3 使torchair 图模式;134+| `max_num_batched_tokens` | vllm 单步处理的最大 token 数量 |
111-* `enable_expert_parallel`:MOE 模型使能专家切分,需要 MOE 模型支持;135+| `enforce_eager` | 使能PyTorch eager模式默认开启,仅 DeepSeek V3 开启 torchair_graph 时需要关闭 |
112-* `dtype`:vllm 推理所使用的数据类型;136+| `torchair_graph` | DeepSeek V3 使能 torchair 图模式 |
113-* `gpu_memory_utilization`:GPU 内存利用率,指定推理时使 GPU 内存的比例;137+| `enable_expert_parallel` | MOE 模型使能专家切分,需要 MOE 模型支持 |
114-* `num_scheduler_steps`:指的是在一个完整的调度周期内,调度器会将批处请求分成多少个子步骤来执行;138+| `dtype` | vllm 推所使用的数据类型 |
139+| `gpu_memory_utilization` | GPU 内存利用率,指定推理时使用 GPU 内存的比例 |
140+| `num_scheduler_steps` | 在一个完整的调度周期内,调度器会将批处理请求分成多少个子步骤来执行 |
115#### 采样配置141#### 采样配置
116-* `logprobs`:是否生成logprobs;142+| 参数名 | 说明 |
117-* `max_tokens`:单条response最大生成token数量;143+|--------|------|
118-* `top_p`:vllm 筛选出概率累积和达到top_p的token集合,随后只在这个集合里进行采样;144+| `logprobs` | 是否生成logprobs |
119-* `top_k`:vllm 会先选出概率最高的 top_k 个 token,然后在这 top_k 个 token 范围内进行采样;145+| `max_tokens` | 单条response最大生成token数量 |
120-* `min_p`vllm 过滤掉概率低于 min_p 词元不参与续的采样过程;146+| `top_p` | vllm 筛选出概率累积和达到top_ptoken集合只在这个集合里进行采样 |
121-* `temperature`采样时的随机性参数;147+| `top_k` | vllm 会先选出概率最高的 top_k 个 token,然后在这 top_k 个 token 范围内进行采样 |
122-* `detokenize`:是否将输出token重新转为文本;148+| `min_p` | vllm 过滤掉概率低于 min_p 的词元,不参与后续的采样过程 |
123- 149+| `temperature` | 采样时的随机性参数 |
124-### runtime_env 环境变量150+| `detokenize` | 是否将输出token重新转为文本 |
125-**( 注:位于 configs/envs/runtime_env.yaml 中 )**
126-* `RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES`:是否禁用 Ray 对 ASCEND_RT_VISIBLE_DEVICES 的自动设置,'true'为禁用
127-* `TOKENIZERS_PARALLELISM`:设置tokenizers是否支持并行,'true'为支持
128-* `NCCL_DEBUG`:NCCL Debug日志级别,VERSION、WARN、INFO、TRACE
129-* `PYTORCH_NPU_ALLOC_CONF`:设置缓存分配器行为
130-* `HCCL_CONNECT_TIMEOUT`:HCCL 连接超时时间
131-* `HCCL_EXEC_TIMEOUT`:HCCL 执行超时时间
132-* `HCCL_IF_BASE_PORT`:HCCL 通信端口
133-* `CUDA_DEVICE_MAX_CONNECTIONS`:设备最大连接数
134-* `HYDRA_FULL_ERROR`:设置 HYDRA 是否输出完整错误日志
135-* `VLLM_DP_SIZE`:vLLM数据并行度(Data Parallelism)大小,控制数据分片数量,稠密模型需要设置为1,MOE模型要求必须和EP一致
136-* `HCCL_BUFFSIZE`:HCCL通信层单次传输的最大缓冲区大小(单位MB),影响跨设备通信效率
137-* `VLLM_USE_V1`:使用vLLM的V1 engine API(v1接口),当前只支持 v1 ,需设置为 '1'。
138-* `USING_LCCL_COM`:指定不使用 LCCL 通信
139-* `VLLM_VERSION`:指定使用的vLLM版本号
140-* `VLLM_ENABLE_TOPK_OPTIMZE`:使能vLLM TOPK性能优化
141-* `VLLM_ASCEND_ACL_OP_INIT_MODE`:vLLM aclop 初始化模式: 0: default, normal init.
142-* `TASK_QUEUE_ENABLE`:控制开启task_queue算子下发队列优化的等级,推荐设置为 '2' 使能 Level 2 优化。
143-* `CPU_AFFINITY_CONF`:指定使用绑核优化,推荐设置为 '1'。
144-* `LCAL_COMM_ID`: 开启coc特性时配套启用,设置为'127.0.0.1:27001'。
145-* `GLOO_SOCKET_IFNAME`:指定 GLOO 框架通信网卡。
146-* `TP_SOCKET_IFNAME`:指定 TP 相关通信网卡。
147-* `HCCL_SOCKET_IFNAME`:指定 HCCL 通信网卡。
@@ -0,0 +1,88 @@
1+## 日志打点指标说明
2+ 
3+强化学习算法迭代打屏日志说明如下:
4+ 
5+**时间相关指标说明**
6+ 
7+| 指标 | 说明 |
8+| ------------------------------------ | -------------------------------------------------------- |
9+| `timing/all` | 一次迭代总时间 |
10+| `timing/update` | 一次迭代中actor model进行update耗时 |
11+| `timing/rollout` | 一次迭代中actor model进行rollout耗时 |
12+| `timing/old_log_p` | 一次迭代中actor model计算log_p耗时 |
13+| `timing/reference_model` | 一次迭代中reference model计算log_p耗时 |
14+| `timing/resharding_to_train` | 权重转到训练mode耗时 |
15+| `timing/resharding_to_infer` | 权重转到推理mode耗时 |
16+| `timing/adv` | 计算advantages耗时 |
17+| `timing/non_overlap_reference_model` | reference model计算log_p耗时的未被掩盖时间 |
18+| `timing/non_overlap_rule_reward` | rule_reward耗时的未被掩盖时间 |
19+| `timing/non_overlap_reward_model` | reward_model耗时的未被掩盖时间 |
20+| `timing/non_overlap_adv` | advantages计算耗时的未被掩盖时间 |
21+| `timing/rule_reward` | rule reward打分耗时 |
22+| `timing/reward_model` | reward model打分耗时 |
23+| `timing/ref_onload` | reference model计算log_p过程中,onload耗时 |
24+| `timing/ref_offload` | reference model计算log_p过程中,offload耗时 |
25+| `timing/critic_model` | 一次迭代中critic model计算values耗时 |
26+| `timing/update_critic` | 一次迭代中critic model进行update耗时 |
27+ 
28+ 
29+**算法基本指标说明**
30+ 
31+| 指标 | 说明 |
32+|------------------------------------| ------------------------------------------------------------ |
33+| `actor/entropy` | 策略熵,表示策略的随机性或探索能力 |
34+| `actor/kl_loss` | kl散度,衡量当前策略与参考策略(如旧策略或参考模型)之间的偏离程度 |
35+| `actor/pg_loss` | pg_loss,基于优势函数的策略梯度目标函数值,表示当前策略对提升奖励的学习能力。 |
36+| `actor/pg_clipfrac` | actor model裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
37+| `actor/ppo_kl` | PPO算法的实际 KL 散度 |
38+| `grad_norm` | 梯度范数,表示当前反向传播中参数梯度的整体幅度 |
39+| `{verifier_function}_rewards/mean` | 规则奖励打分的平均总奖励值 |
40+| `actor/lr` | actor model学习率,优化器当前使用的学习率 |
41+| `response_length/mean` | 平均生成长度,模型生成回复(response)的平均 token 数 |
42+| `response_length/min` | 最短生成长度,当前 batch 中生成最短的 response 长度 |
43+| `response_length/max` | 最长生成长度,当前 batch 中生成最长的 response 长度 |
44+| `prompt_length/mean` | 平均输入长度,输入 prompt 的平均长度 |
45+| `prompt_length/max` | 最长输入长度,当前 batch 中最长的 prompt长度 |
46+| `prompt_length/min` | 最短输入长度,当前 batch 中最长的 prompt长度 |
47+| `global_batch_size` | 每次训练迭代所处理的总prompt数量 |
48+| `n_samples_per_prompt` | 每条prompt在rollout阶段生成的response数量 |
49+| `world_size` | 在分布式训练中集群中总的设备数量(并行训练的总进程数) |
50+| `e2e_tps` | 端到端的tokens/p/s指标 |
51+| `update_tps` | 训练的tokens/p/s指标 |
52+| `vllm_tps` | 推理的tokens/p/s指标 |
53+ 
54+ 
55+**GRPO算法相关指标**
56+ 
57+| 指标 | 说明 |
58+|------------------------------------| ------------------------------------------------------------ |
59+| `grpo/score/mean` | 开启奖励模型时的reward均值 |
60+| `grpo/score/max` | 奖励模型及规则奖励对同一个样本的reward最大值 |
61+| `grpo/score/min ` | 奖励模型及规则奖励对同一个样本的reward最小值 |
62+| `grpo/rewards/mean` | 规则奖励的reward均值;奖励模型对样本的reward经过归一化后的均值 |
63+| `grpo/rewards/max` | 规则奖励的reward最大值;奖励模型对样本的reward经过归一化后的最大值 |
64+| `grpo/rewards/min` | 规则奖励的reward最小值;奖励模型对样本的reward经过归一化后的最小值 |
65+ 
66+ 
67+**PPO算法相关指标**
68+| 指标 | 说明 |
69+|------------------------------------| ------------------------------------------------------------ |
70+| `critic/lr` | critic model学习率,优化器当前使用的学习率 |
71+| `critic/vf_loss` | vf_loss,基于优势函数的策略梯度目标函数值,表示当前策略对提升奖励的学习能力。 |
72+| `critic/vf_clipfrac` | PPO中critic model裁剪机制生效的比例,反映了策略更新幅度的稳定性 |
73+| `critic/vf_clipfrac` | PPO中critic model裁剪机制生效的比例,反映了策略更新幅度的稳定性 | |
74+| `critic/score/mean` | 开启奖励模型时的reward均值 |
75+| `critic/score/max` | 奖励模型及规则奖励对同一个样本的reward最大值 |
76+| `critic/score/min ` | 奖励模型及规则奖励对同一个样本的reward最小值 |
77+| `critic/rewards/mean` | 规则奖励的reward均值;奖励模型对样本的reward经过归一化后的均值 |
78+| `critic/rewards/max` | 规则奖励的reward最大值;奖励模型对样本的reward经过归一化后的最大值 |
79+| `critic/rewards/min` | 规则奖励的reward最小值;奖励模型对样本的reward经过归一化后的最小值 |
80+| `critic/advantages/mean` | 优势值均值;奖励模型对样本的reward经过归一化后的均值 |
81+| `critic/advantages/max` | 优势值最大值;奖励模型对样本的reward经过归一化后的最大值 |
82+| `critic/advantages/min` | 优势值最小值;奖励模型对样本的reward经过归一化后的最小值 |
83+| `critic/returns/mean` | 所有未来奖励的折扣和均值;奖励模型对样本的reward经过归一化后的均值 |
84+| `critic/returns/max` | 所有未来奖励的折扣和最大值;奖励模型对样本的reward经过归一化后的最大值 |
85+| `critic/returns/min` | 所有未来奖励的折扣和最小值;奖励模型对样本的reward经过归一化后的最小值 |
86+| `critic/values/mean` | 当前状态下未来收益均值;奖励模型对样本的reward经过归一化后的均值 |
87+| `critic/values/max` | 当前状态下未来收益均值最大值;奖励模型对样本的reward经过归一化后的最大值 |
88+| `critic/values/min` | 当前状态下未来收益均值最小值;奖励模型对样本的reward经过归一化后的最小值 |
@@ -1,11 +1,13 @@
1## PPO配置参数简介1## PPO配置参数简介
2MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 PPO 训练的参数配置过程。RLXF 训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,PPO 训练相关的模型参数文件以 ppo_trainer_模型名_模型大小_机器型号.yaml方式命名。在每个 ppo_trainer 配置文件中,需要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置。2MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 PPO 训练的参数配置过程。RLXF 训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,PPO 训练相关的模型参数文件以 ppo_trainer_模型名_模型大小_机器型号.yaml方式命名。在每个 ppo_trainer 配置文件中,需要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置。
3 3 
4-* `defaults:` 负责引入模型配置文件,在 defaults 中应列举本配置文件中所需要用到的所有模型配置,模型配置可以在 megatron_training 、actor_config 具体配置中通过 model 字段进行选择。4+| 参数名 | 说明 |
5-* `megatron_training:` 字段设置的参数为训练引擎通用的默认参数。5+|--------|------|
6-* `actor_config:`actor 、ref训练配置参数。6+| `defaults` | 负责引入模型配置文件,在 defaults 中应列举本配置文件中所需要用到所有模型配置,模型配置可以在 megatron_training、actor_config 具体配置中通过 model 字段进行选择 |
7-* `rl_config: ` PPO 训练特性参数,以及模型的资源配置7+| `megatron_training` | 训练引擎通用默认参数配置 |
8-* `generate_config:` 包含 tokenizer 相关配置、推理并行配置、vllm 模型相关设以及样本采样参数配置。8+| `actor_config` | Actor 模型和 Reference 模型的训练配置参数 |
9+| `rl_config` | PPO 训练中的特有参数,以及相关模型的资源配置 |
10+| `generate_config` | 包含分词器设置、推理并行配置、vLLM 引擎参数及生成采样参数等 |
9 11 
10## 参数解析12## 参数解析
11 13 
@@ -16,71 +18,83 @@ MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置
16* `model`: qwen25_7b18* `model`: qwen25_7b
17### `megatron_training:`19### `megatron_training:`
18 20 
19-* `stage`:用于指定训练算法,使用 Ray PPO 训练须设置为`ray_ppo`;21+| 参数名 | 说明 |
20-* `global_batch_size`: 经过多少样本后 actor-train 和 rollout 权重同步;22+|--------|------|
21-* `data_path`: 数据集路径配置,例如 /dataset/data注意带前缀;23+| `stage` | 用于指定训练算法使用 Ray PPO 训练须设置为 `ray_ppo` |
22-* `tokenizer_name_or_path`: 分词器路径配置,可以配置为 Hugging Face 权重文件的文件夹路径,例如 /ckpt/qwen2.5_7b_hf/ ;24+| `global_batch_size` | 经过多少样本后 actor-train 和 rollout 权重同步 |
23-* `其余参数`: 其余参为Megatron训练中的特性配置25+| `data_path` | 据集路径配置,例如 `/dataset/data`,注意带前缀 |
26+| `tokenizer_name_or_path` | 分词器路径配置,可以配置为 Hugging Face 权重文件的文件夹路径,例如 `/ckpt/qwen2.5_7b_hf/` |
27+| `其余参数` | 其余参数为 Megatron 训练中的特性配置 |
24 28 
25#### 全量重计算29#### 全量重计算
26-* `recompute-granularity`: 对于内存非常有限的情况,全量重计算只保存 Transformer 层或层组的输入激活值,其他部分全部重新计算,设置该属性为 full;30+ 
27-* `recompute-num-layers`: 指定重计算分组层or 指定重计算层数;31+| | 说明 |
28-* `recompute-method`: 在全量重计算的前提下,设置 recompute-method 为 uniform 代表将Transformer 层均匀划分组(每组大小 recompute-num-layers),按组存储输入和激活值;设置为 block 代表将前 recompute-num-layers 个 Transformer 层重计算,剩余层不进行重计算;32+|--------|------|
33+| `recompute_granularity` | 对于内存非常有限的情况,全量重计算只保存 Transformer 层或层组的输入激活值,其他部分全部重新计算 |
34+| `recompute_num_layers` | 指定重计算分组层数或重计算层数 |
35+| `recompute_method` | 全量重计算的方法选择:<br>`uniform`:将 Transformer 层均匀划分组(每组大小由 `recompute_num_layers` 指定),按组存储输入和激活值<br>`block`:将前 `recompute_num_layers` 个 Transformer 层重计算,剩余层不进行重计算 |
29 36 
30 37 
31### `actor_config:`38### `actor_config:`
32配置 PPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 模型,开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。39配置 PPO 训练中 Actor 模型、Reference 模型和 Reward 模型的配置参数;当前支持不开启 Reward 模型,开启规则奖励进行打分,开启参数详见rl_config中的rule_reward参数。
33-* `micro_batch_size`:梯度累积的 mbs 大小;40+ 
34-* `tensor_model_parallel_size`:TP 并行策略;41+| 名 | 说明 |
35-* `pipeline_model_parallel_size`:PP 并行策略数;42+|--------|------|
36-* `lr`:学习率;43+| `micro_batch_size` | 梯度累积的 mbs 大小 |
37-* `lr_decay_style`:学习率衰减配置;44+| `tensor_model_parallel_size` | TP 并行策略数 |
38-* `min_lr`:最小学习率;45+| `pipeline_model_parallel_size` | PP 并行策略数 |
39-* `weight_decay`:权重衰减,用于防止模型过拟合;46+| `lr` | 学习率 |
40-* `lr_warmup_fraction`学习率预热比例,在训练初期逐渐增大学习率的比例;47+| `lr_decay_style` | 学习率衰减配置 |
41-* `clip_grad`:梯度裁剪系数;48+| `min_lr` | 最小学习率 |
42-* `load`模型加载的路径;49+| `weight_decay` | 权重衰减,用于防止模型过拟合 |
43-* `save`:模型保存路径;50+| `lr_warmup_fraction` | 学习率预热比例,在训练初期逐渐增大学习率比例 |
44-* `no_load_optim`:续训加载优化器状态,默认为false;51+| `clip_grad` | 梯度裁剪系数 |
45-* `no_load_rng`:续训加载数据随机数生成器,默认为false;52+| `load` | 模型加载的路径 |
46-* `no_save_optim`保存优化器状态,默认为false;53+| `save` | 模型保存的路径 |
47-* `no_save_rng`:保存数据随机数生成,默认为false;54+| `no_load_optim` | 续训加载优化状态 |
55+| `no_load_rng` | 续训加载数据随机数生成器 |
56+| `no_save_optim` | 保存优化器状态 |
57+| `no_save_rng` | 保存数据随机数生成器 |
48 58 
49### `critic_config:`59### `critic_config:`
50配置 PPO 训练中 Critic 模型参数。60配置 PPO 训练中 Critic 模型参数。
51-* `micro_batch_size`:梯度累积的 mbs 大小;61+| 参数名 | 说明 |
52-* `tensor_model_parallel_size`:TP 并行策略数;62+|--------|------|
53-* `pipeline_model_parallel_size`:PP 并行策略数;63+| `micro_batch_size` | 梯度累积的 mbs 大小 |
54-* `lr`:学习率;64+| `tensor_model_parallel_size` | TP 并行策略数 |
55-* `lr_decay_style`:学习率衰减配置;65+| `pipeline_model_parallel_size` | PP 并行策略数 |
56-* `min_lr`:最小学习率66+| `lr` | 学习率 |
57-* `weight_decay`:权重衰减,用于防止模型过拟合;67+| `lr_decay_style` | 学习率衰减配置 |
58-* `lr_warmup_fraction`学习率预热比例,在训练初期逐渐增大学习率的比例;68+| `min_lr` | 最小学习率 |
59-* `clip_grad`:梯度裁剪系数;69+| `weight_decay` | 权重衰减,用于防止模型过拟合 |
60-* `load`:模型加载路径;70+| `lr_warmup_fraction` | 学习率预热比例,在训练初期逐渐增大学习率比例 |
61-* `save`:模型保存的路径;71+| `clip_grad` | 梯度裁剪系数 |
62-* `no_load_optim`:续训加载优化器状态,默认为false;72+| `load` | 模型加载的路径 |
63-* `no_load_rng`:续训加载数据随机数生成器,默认为false;73+| `save` | 模型保存的路径 |
64-* `no_save_optim`:保存优化器状态,默认为false;74+| `no_load_optim` | 续训加载优化器状态 |
65-* `no_save_rng`:保存数据随机数生成器,默认为false;75+| `no_load_rng` | 续训加载数据随机数生成器 |
76+| `no_save_optim` | 保存优化器状态 |
77+| `no_save_rng` | 保存数据随机数生成器 |
66 78 
67### `rl_config: `79### `rl_config: `
68-* `use_integrated_worker`:是否开启全共卡模式,默认为 true;80+| 参数名 | 说明 |
69-* `blocking`:是否开启异步,默认为 true;81+|--------|------|
70-* `actor_forward_micro_batch_size`:actor model 前向计算 logp 的 mbs 大小;82+| `use_integrated_worker` | 是否开启全共卡模式 |
71-* `ref_forward_micro_batch_size`:ref model 前向计算 logp 的 mbs 大小;83+| `blocking` | 是否开启异步 |
72-* `adv_estimator`:优势计算方法;84+| `actor_forward_micro_batch_size` | actor model 前向计算 logp 的 mbs 大小 |
73-* `kl_ctrl_type`:kl loss 计算方法;85+| `ref_forward_micro_batch_size` | ref model 前向计算 logp 的 mbs 大小 |
74-* `init_kl_coef`:kl loss 所占权重;86+| `adv_estimator` | 优势计算方法 |
75-* `mini_batch_size`:每 mini batch size 之后 actor 会更新一次;87+| `kl_ctrl_type` | kl loss 计算方法 |
76-* `max_prompt_length`:PPO 训练中最大 prompt 长度,默认为512;88+| `init_kl_coef` | kl loss 所占权重 |
77-* `clip_ratio`:Actor 模型训练计算损失函数时的 clip 比例,默认为0.2 一般取值范围 [0.1,0.3] 最大取值范围[0,1] 该数值越大允许策略更新的幅度越大,反之不然;89+| `mini_batch_size` | mini batch size 之后 actor 会更新一次 |
78-* `cliprange_value`:Critic 模型训练计算损失函数时的 clip 比例,默认为0.2 一般取值范围 [0.1,0.3] 最大取值范围[0,1] 该数值越大允许策略更新的幅越大,反之不然;90+| `max_prompt_length` | PPO 训练中最大 prompt 长 |
79-* `entropy_coeff`: entropy loss 所占权重;91+| `clip_ratio` | Actor 模型训练计算损失函数时的 clip 比例,一般取值范围 [0.1,0.3] 最大取值范围[0,1],该数值越大允许策略更新的幅度越大 |
80-* `n_samples_per_prompt`:每条prompt的重用次数,一 prompt 输入能输出 n 条 response;92+| `cliprange_value` | Critic 模型训练计算损失函时的 clip 比例,一般取值范围 [0.1,0.3] 最大取值范围[0,1],该数值越大允许策略更新的幅度越大 |
81-* `guarantee_order`: 是否开启TransferDock保序,默认 False;93+| `entropy_coeff` | entropy loss 所占权重 |
82-* `shuffle_mini_batch`:Actor 训练时是否对 minibatch 进行 shuffle,默认为 False;94+| `n_samples_per_prompt` | 每条prompt的重用次数,一条 prompt 输入能输出 n 条 response |
83-* `actor_resource` :分配给 Actor 、Reference模型的显卡数量;95+| `guarantee_order` | 是否开启TransferDock保序 |
96+| `shuffle_mini_batch` | Actor 训练时是否对 minibatch 进行 shuffle |
97+| `actor_resource` | 分配给 Actor 、Reference模型的显卡数量 |
84 98 
85#### 显卡资源配置99#### 显卡资源配置
86 ```100 ```
@@ -90,65 +104,62 @@ MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置
90 num_npus: 4104 num_npus: 4
91 ```105 ```
92#### 规则奖励配置106#### 规则奖励配置
93-* `rule_reward`: 开启后,使用规则奖励进行打分;107+| 参数名 | 说明 |
94-* `verifier_function`: 选择使用的规则奖励模型方法,例如["acc", "strict_format"] ;108+|--------|------|
95-* `verifier_weight`: 配置规则奖励模型权重,例如[1.0, 1.0];109+| `rule_reward` | 开启后,使用规则奖励进行打分 |
110+| `verifier_function` | 选择使用的规则奖励模型方法,例如 `["acc", "strict_format"]` |
111+| `verifier_weight` | 配置规则奖励模型权重,例如 `[1.0, 1.0]` |
96 112 
97#### 日志配置113#### 日志配置
98 114 
99tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效):115tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效):
100-* `use_tensorboard`: 配置为 True 时打开 tensorboard; 116+| 参数名 | 说明 |
117+|--------|------|
118+| `use_tensorboard` | 配置为 True 时打开 tensorboard(若 `use_tensorboard``use_wandb` 同时为 True,则 tensorboard 不生效) |
101 119 
102wandb开关:120wandb开关:
103-* `use_wandb`: 配置为 True 时打开 wandb; 121+| 参数名 | 说明 |
104-* `wandb_project`: project 名称配置; 122+|--------|------|
105-* `wandb_exp_name`: 实验名称配置123+| `use_wandb` | 配置为 True 时打开 wandb |
106-* `wandb_save_dir`: 本地存储 wandb 路径;124+| `wandb_project` | wandb project 名称配置 |
125+| `wandb_exp_name` | wandb 实验名称配置 |
126+| `wandb_save_dir` | 本地存储 wandb 数据的路径 |
107 127 
108 128 
109### `generate_config:`129### `generate_config:`
110#### 推理时的并行配置130#### 推理时的并行配置
111-* `infer_tensor_parallel_size`:TP并行策略131+| 名 | 说明 |
112-* `infer_pipeline_parallel_size`:PP并行策略数;132+|--------|------|
113-* `infer_expert_parallel_size`:EP并行策略数133+| `infer_tensor_parallel_size` | TP并行策略数 |
134+| `infer_pipeline_parallel_size` | PP并行策略数,当前未支持该功能,设置为 '1' |
135+| `infer_expert_parallel_size` | EP并行策略数 |
114#### resharding 相关配置136#### resharding 相关配置
115-* `offload_train_optimizer`:卸载训练节点优化器;137+| 参数名 | 说明 |
116-* `offload_train_grad`:卸载训练节点梯度;138+|--------|------|
117-* `offload_train_param`:卸载模型权重;139+| `trust_remote_code` | 是否信任远程代码执行 |
140+| `offload_train_optimizer` | 卸载训练节点优化器 |
141+| `offload_train_grad` | 卸载训练节点梯度 |
142+| `offload_train_param` | 卸载模型权重 |
118#### vllm 模型相关设置143#### vllm 模型相关设置
119vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html):144vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html):
120-* `max_num_seqs`:vllm 推理并发最大样本限制;145+| 参数名 | 说明 |
121-* `max_model_len`:vllm 能够处理的最大输入序列长度(prompt+response);146+|--------|------|
122-* `dtype`vllm 推理所使用的数据类型;147+| `max_num_seqs` | vllm 推理并发最大样本限制 |
123-* `gpu_memory_utilization`:GPU 内存利用率,指定推理时使用 GPU 内存比例;148+| `max_model_len` | vllm 能够处理最大输入序列长度(prompt+response) |
124-* `num_scheduler_steps `:指的是在一个完整的调度周期内,调度器会将批处理请求分成多少个子步骤来执行;149+| `max_num_batched_tokens` | vllm 单步能处理的最大 token 数量 |
150+| `enforce_eager` | 使能PyTorch eager模式,默认开启,仅 DeepSeek V3 开启 torchair_graph 时需要关闭 |
151+| `torchair_graph` | DeepSeek V3 使能 torchair 图模式 |
152+| `enable_expert_parallel` | MOE 模型使能专家切分,需要 MOE 模型支持 |
153+| `dtype` | vllm 推理所使用的数据类型 |
154+| `gpu_memory_utilization` | GPU 内存利用率,指定推理时使用 GPU 内存的比例 |
155+| `num_scheduler_steps` | 在一个完整的调度周期内,调度器会将批处理请求分成多少个子步骤来执行 |
125#### 采样配置156#### 采样配置
126-* `logprobs`:是否生成logprobs;157+| 参数名 | 说明 |
127-* `max_tokens`:单条response最大生成token数量;158+|--------|------|
128-* `top_p`:vllm 筛选出概率累积和达到top_p的token集合,随后只在这个集合里进行采样;159+| `logprobs` | 是否生成logprobs |
129-* `top_k`:vllm 会先选出概率最高的 top_k 个 token,然后在这 top_k 个 token 范围内进行采样;160+| `max_tokens` | 单条response最大生成token数量 |
130-* `min_p`vllm 过滤掉概率低于 min_p 词元不参与续的采样过程;161+| `top_p` | vllm 筛选出概率累积和达到top_ptoken集合只在这个集合里进行采样 |
131-* `temperature`采样时的随机性参数;162+| `top_k` | vllm 会先选出概率最高的 top_k 个 token,然后在这 top_k 个 token 范围内进行采样 |
132-* `detokenize`:是否将输出token重新转为文本;163+| `min_p` | vllm 过滤掉概率低于 min_p 的token,不参与后续的采样过程 |
133- 164+| `temperature` | 采样时的随机性参数 |
134-### runtime_env 环境变量165+| `detokenize` | 是否将输出token重新转为文本 |
135-**( 注:位于 configs/envs/runtime_env.yaml 中 )**
136-* `RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES`:是否禁用 Ray 对 ASCEND_RT_VISIBLE_DEVICES 的自动设置,'true'为禁用
137-* `TOKENIZERS_PARALLELISM`:设置tokenizers是否支持并行,'true'为支持
138-* `NCCL_DEBUG`:NCCL Debug日志级别,VERSION、WARN、INFO、TRACE
139-* `PYTORCH_NPU_ALLOC_CONF`:设置缓存分配器行为
140-* `HCCL_CONNECT_TIMEOUT`:HCCL 连接超时时间
141-* `HCCL_EXEC_TIMEOUT`:HCCL 执行超时时间
142-* `HCCL_IF_BASE_PORT`:HCCL 通信端口
143-* `CUDA_DEVICE_MAX_CONNECTIONS`:设备最大连接数
144-* `HYDRA_FULL_ERROR`:设置 HYDRA 是否输出完整错误日志
145-* `VLLM_DP_SIZE`:vLLM数据并行度(Data Parallelism)大小,控制数据分片数量,MOE模型建议和EP一致,稠密模型设置为1
146-* `HCCL_BUFFSIZE`:HCCL通信层单次传输的最大缓冲区大小(单位MB),影响跨设备通信效率
147-* `VLLM_USE_V1`:使用vLLM的V1 engine API(v1接口),兼容性选项
148-* `VLLM_VERSION`:指定使用的vLLM版本号
149-* `VLLM_ENABLE_GRAPH_MODE`:启用昇腾torchair图模式优化(1=启用),提升执行效率
150-* `VLLM_ENABLE_MC2`:是否启用vLLM的通算融合算子调度策略
151-* `VLLM_ENABLE_TOPK_OPTIMZE`:使能vLLM TOPK性能优化
152-* `TASK_QUEUE_ENABLE`:控制开启task_queue算子下发队列优化的等级,推荐设置为 '2' 使能 Level 2 优化。
153-* `CPU_AFFINITY_CONF`:指定使用绑核优化,推荐设置为 '1'。
154-* `LCAL_COMM_ID`: 开启coc特性时配套启用,设置为'127.0.0.1:27001'。
@@ -0,0 +1,26 @@
1+### runtime_env 环境变量
2+环境变量相关参数配置 **( 注:位于 configs/envs/runtime_env.yaml 中 )** 说明如下:
3+| 参数名 | 说明 |
4+|--------|------|
5+| `RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES` | 是否禁用 Ray 对 ASCEND_RT_VISIBLE_DEVICES 的自动设置,'true'为禁用 |
6+| `TOKENIZERS_PARALLELISM` | 设置tokenizers是否支持并行,'true'为支持 |
7+| `NCCL_DEBUG` | NCCL Debug日志级别,VERSION、WARN、INFO、TRACE |
8+| `PYTORCH_NPU_ALLOC_CONF` | 设置缓存分配器行为 |
9+| `HCCL_CONNECT_TIMEOUT` | HCCL 连接超时时间 |
10+| `HCCL_EXEC_TIMEOUT` | HCCL 执行超时时间 |
11+| `HCCL_IF_BASE_PORT` | HCCL 通信端口 |
W
Wwucong252025年12月4日

新建一个runtime_env.md的目的是什么

likedislike
张健翔
2025年12月5日 评论:
12+| `CUDA_DEVICE_MAX_CONNECTIONS` | 设备最大连接数 |
13+| `HYDRA_FULL_ERROR` | 设置 HYDRA 是否输出完整错误日志 |
14+| `VLLM_DP_SIZE` | vLLM数据并行度(Data Parallelism)大小,控制数据分片数量,稠密模型需要设置为1,MOE模型要求必须和EP一致 |
15+| `HCCL_BUFFSIZE` | HCCL通信层单次传输的最大缓冲区大小(单位MB),影响跨设备通信效率 |
16+| `VLLM_USE_V1` | 使用vLLM的V1 engine API(v1接口),当前只支持 v1 ,需设置为 '1' |
17+| `USING_LCCL_COM` | 指定不使用 LCCL 通信 |
18+| `VLLM_VERSION` | 指定使用的vLLM版本号 |
19+| `VLLM_ENABLE_TOPK_OPTIMZE` | 使能vLLM TOPK性能优化 |
20+| `VLLM_ASCEND_ACL_OP_INIT_MODE` | vLLM aclop 初始化模式: 0: default, normal init. |
21+| `TASK_QUEUE_ENABLE` | 控制开启task_queue算子下发队列优化的等级,推荐设置为 '2' 使能 Level 2 优化 |
22+| `CPU_AFFINITY_CONF` | 指定使用绑核优化,推荐设置为 '1' |
23+| `LCAL_COMM_ID` | 开启coc特性时配套启用,设置为'127.0.0.1:27001' |
24+| `GLOO_SOCKET_IFNAME` | 指定 GLOO 框架通信网卡 |
25+| `TP_SOCKET_IFNAME` | 指定 TP 相关通信网卡 |
26+| `HCCL_SOCKET_IFNAME` | 指定 HCCL 通信网卡 |