已合并
[mindspeed-rl] grpo与ppo算法配置说明readme优化 #786
张健翔创建于 2025年12月4日
[mindspeed-rl] grpo与ppo算法配置说明readme优化 #786
已合并
共 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 | |||
| 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_7b | 20 | * `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: 4 | 88 | 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 | ||
| 84 | tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效): | 100 | tensorboard开关(若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 | ||
| 87 | wandb开关: | 105 | wandb开关: |
| 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 模型相关设置 |
| 105 | vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html): | 129 | vllm 模型参数 可以参照 [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_p的token集合,随后只在这个集合里进行采样 | |
| 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配置参数简介 |
| 2 | MindSpeed RL 通过将模型参数和训练配置解耦的层级化参数配置,来简化 PPO 训练的参数配置过程。RLXF 训练涉及到的所有配置文件均存储在 configs/ 路径下,其中 model 文件夹下存储了模型结构相关的配置文件,PPO 训练相关的模型参数文件以 ppo_trainer_模型名_模型大小_机器型号.yaml方式命名。在每个 ppo_trainer 配置文件中,需要包含 defaults、megatron_training、actor_config、rl_config、generate_config 字段的参数配置。 | 2 | MindSpeed 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_7b | 18 | * `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: 4 | 104 | 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 | ||
| 99 | tensorboard开关(若use_tensorboard和use_wandb同时为True,则tensorboard不生效): | 115 | tensorboard开关(若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 | ||
| 102 | wandb开关: | 120 | wandb开关: |
| 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 模型相关设置 |
| 119 | vllm 模型参数 可以参照 [vllm官网参数介绍](https://docs.vllm.ai/en/latest/serving/engine_args.html): | 144 | vllm 模型参数 可以参照 [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_p的token集合,随后只在这个集合里进行采样 | |
| 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 通信端口 | | ||
| 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 通信网卡 | | ||


这些为啥都删掉了