
# MindSpeed-RL
本章节主要描述训练所需的yaml配置文件（通过ascendfactory-cli config 命令生成）、配置参数说明，用户可根据实际自行选择其需要的参数。若需基于本框架对多模态模型进行强化学习训练，请参见[MindSpeed-MM-RL](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_c_5910035.html#ZH-CN_TOPIC_0000002477960986)。
#### yaml文件参数配置
根据以下步骤修改yaml文件。
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002470580444.png)
1. 数据集选择：以下参数二选一，详解如下。
   
   | 参数                                         | 示例值                                                                                                             | 参数说明                               |
   |:---|:---|:---|
   | backend_config.preprocess_data.input       | [数据集](https://huggingface.co/datasets/agentica-org/DeepScaleR-Preview-Dataset/blob/main/deepscaler.json)相对或绝对地址 | 训练时指定的输入数据路径。请根据实际规划修改。用户根据训练情况二选一 |
   | backend_config.megatron_training.data_path | /home/ma-user/ws/xxx                                                                                            | 已处理好数据路径目录，如有处理完成数据可设置此参数          |
      
   
2. 训练场景、权重文件、输出目录及其他重要参数设置，详解如下。
   
   | 参数                                                                                                                                                              | 示例值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|:---|
   | backend_config.megatron_training.tokenizer_name_or_path                                                                                                         | /home/ma-user/ws/llm_train/AscendFactory/model/llama2-70B                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | **【必修改】**加载tokenizer与Hugging Face权重时，对应的存放地址。请根据实际规划修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | af_output_dir                                                                                                                                                   | /home/ma-user/ws/save_dir                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | **【必修改】**训练任务结束生成日志及权重文件目录                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | backend_config.preprocess_data.handler_name                                                                                                                     | - GeneralPretrainHandler  - GeneralInstructionHandler  - MOSSInstructionHandler  - AlpacaStyleInstructionHandler  - SharegptStyleInstructionHandler   | **【必修改】**示例值需要根据数据集${dataset}的不同，选择其一。 - GeneralPretrainHandler：使用预训练的alpaca数据集。  - GeneralInstructionHandler：使用微调的alpaca数据集。  - MOSSInstructionHandler：使用微调的moss数据集  - AlpacaStyleInstructionHandler：使用微调Alpaca数据集  - SharegptStyleInstructionHandler：使用Sharegpt数据集   |
   | backend_config.actor_config.no_load_optim backend_config.actor_config.no_load_rng | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 是否加载优化器状态 - false：表示不加载  - true：表示加载                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      
   
3. 其他参数设置，详解如下。
   
   | 参数                                                       | 示例值    | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|:---|
   | backend_config.actor_config.micro_batch_size             | 1      | 表示流水线并行中一个micro batch所处理的样本量。在流水线并行中，为了减少气泡时间，会将一个step的数据切分成多个micro batch。 该值与tensor-model-parallel-size和pipeline-model-parallel-size以及模型大小相关，可根据实际情况进行调整，简称MBS。                                                                                                                                                                                                                                                                                                                                                                                                  |
   | backend_config.megatron_training.global_batch_size       | 128    | 表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长，简称GBS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | backend_config.actor_config.tensor_model_parallel_size   | 8      | 表示张量并行，简称TP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | backend_config.actor_config.pipeline_model_parallel_size | 4      | 表示流水线并行。一般此值与训练节点数相等，与权重转换时设置的值相等，简称PP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | backend_config.actor_config.lr                           | 2.5e-5 | 学习率设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | backend_config.actor_config.min_lr                       | 2.5e-6 | 最小学习率设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | backend_config.megatron_training.train_iters             | 10     | 非必填。表示训练step迭代次数，有默认值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | backend_config.megatron_training.save_interval           | 1000   | 用于模型中间版本地保存。 - 当参数值\>=TRAIN_ITERS时，生成模型仅保存经过TRAIN_ITERS次训练后的最后一个版本。  - 当参数值\<TRAIN_ITERS时，生成模型会每经过SAVE_INTERVAL次，保存一次模型版本。   模型版本保存次数=TRAIN_ITERS//SAVE_INTERVAL+1 |
   | backend_config.actor_config.load                         | null   | 加载权重路径，默认加载权重，null则表示不加载权重。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | backend_config.rl_config.partial_rollout_max_split       | 2      | 默认不开启，设置为2时表示在2轮内完全推理完成最长序列。该特性目前仅支持Qwen2.5-7b模型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | backend_config.rl_config.use_remove_padding              | True   | 默认为True，表示在推理过程中移除输入序列中的填充（padding）部分，以提升计算效率                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      
   Qwen2.5-7B进行32K的GRPO训练时，请将自动生成的yaml文件中的grpo_32k.generate_config.max_model_len、grpo_32k.generate_config.max_num_batched_tokens均修改为32768。
   其余未提及参数参考三方官方[参数配置](https://gitee.com/ascend/MindSpeed-RL/blob/2.1.0/docs/features/grpo_yaml.md)修改配置。
   
   
 
#### 模型参数设置规定
- TP张量并行、PP流水线并行、CP context并行的参数设置：TP×PP×CP的值要被NPU数量（word_size）整除。
- TP×CP的值要被模型参数中的num_attention_heads整除。
- MBS（micro-batch-size）、GBS（global-batch-size）的设置：需要遵循GBS/MBS的值能够被NPU/(TP×PP×CP)的值整除。
 
