
# MindSpeed-LLM
本章节主要描述训练所需的yaml配置文件（通过ascendfactory-cli config 命令生成）、配置参数说明，用户可根据实际自行选择其需要的参数。
#### yaml文件参数配置
根据以下步骤修改yaml文件。
![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002470740430.png)
1. 数据集选择：以下参数二选一，详解如下。
   
   | 参数                                   | 示例值                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 参数说明                                |
   |:---|:---|:---|
   | backend_config.preprocess_data.input | 【预训练：pt】[预训练数据集](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_c_5910038.html#ZH-CN_TOPIC_0000002475272330__zh-cn_topic_0000002470740416_li314055415181)相对或绝对地址 【微调：sft】[微调数据集](https://support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_train_c_5910038.html#ZH-CN_TOPIC_0000002475272330__zh-cn_topic_0000002470740416_li141405545183)相对或绝对地址 | 训练时指定的输入数据路径。请根据实际规划修改。用户根据训练情况二选一。 |
   | backend_config.training.data-path    | /home/ma-user/ws/xxx                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 已处理好数据路径目录，如有处理完成数据可设置此参数。          |
      
   
2. 训练场景、权重文件、输出目录及其他重要参数设置，详解如下。
   
   | 参数                                                                                                                                                        | 示例值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|:---|
   | backend_config.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  - AlpacaStyleInstructionHandler  - SharegptStyleInstructionHandler   | **【必修改】**示例值需要根据数据集${dataset}的不同，选择其一。 - GeneralPretrainHandler：使用预训练的alpaca数据集。  - AlpacaStyleInstructionHandler：使用微调Alpaca数据集。  - SharegptStyleInstructionHandler：使用Sharegpt数据集。   |
   | backend_config.convert_ckpt_mg2hf                                                                                                                         | null                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 训练过程是否将Megatron格式的权重转换为HuggingFace格式的权重。默认转换，设置为null则表示不转换。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | **断点续训**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |||
   | backend_config.training. no-load-optim backend_config.training. no-load-rng | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 是否加载优化器状态。 - false：表示不加载  - true：表示加载                                                                                                                                                                                                                                                                                                            |
   | backend_config.training.finetune                                                                                                                          | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 是否重置优化器状态、重置迭代次数为0。 - true：是  - false：否                                                                                                                                                                                                                                                                                                           |
   | backend_config.training.load                                                                                                                              | path/to/xxx                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 加载训练过程中生成的Megatron格式权重。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | **预训练**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |||
   | backend_config.training.stage                                                                                                                             | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 表示训练类型，预训练设置为false。 - false：预训练  - sft：指令微调                                                                                                                                                                                                                                                                                                         |
   | backend_config.preprocess_data.handler-name                                                                                                               | GeneralPretrainHandler                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 指定数据集处理Handler                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | backend_config.training.is-instruction-dataset                                                                                                            | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 是否为结构化数据集。 - true：是  - false：否                                                                                                                                                                                                                                                                                                                       |
   | backend_config.training.finetune                                                                                                                          | false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 是否重置优化器状态、重置迭代次数为0。 - true：是  - false：否                                                                                                                                                                                                                                                                                                          |
   | reset-position-ids                                                                                                                                        | true                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 在文档结束标记之后重置索引。 主要场景：数据集处理时使用了pack模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      
   
3. 其他参数设置，详解如下。
   
   | 参数                                                   | 示例值    | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|:---|
   | backend_config.training.micro-batch-size             | 1      | 表示流水线并行中一个micro batch所处理的样本量。在流水线并行中，为了减少气泡时间，会将一个step的数据切分成多个micro batch。 该值与tensor-model-parallel-size和pipeline-model-parallel-size以及模型大小相关，可根据实际情况进行调整，简称MBS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | backend_config.training.global-batch-size            | 128    | 表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长，简称GBS。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | backend_config.training.tensor-model-parallel-size   | 8      | 表示张量并行，简称TP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | backend_config.training.pipeline-model-parallel-size | 4      | 表示流水线并行。一般此值与训练节点数相等，与权重转换时设置的值相等，简称PP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | backend_config.training.context-parallel-size        | 1      | 表示context并行，默认为1；应用于训练长序列文本的模型，如果训练时SEQ_LEN超过32768长度，则推荐增加此值（≥ 2），简称CP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | backend_config.training.lr                           | 2.5e-5 | 学习率设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | backend_config.training.min-lr                       | 2.5e-6 | 最小学习率设置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | backend_config.training.train-iters                  | 10     | 非必填。表示训练step迭代次数，有默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | backend_config.training.save-interval                | 1000   | 用于模型中间版本地保存。 - 当参数值\>=TRAIN_ITERS时，生成模型仅保存经过TRAIN_ITERS次训练后的最后一个版本。  - 当参数值\<TRAIN_ITERS时，生成模型会每经过SAVE_INTERVAL次，保存一次模型版本。   模型版本保存次数=TRAIN_ITERS//SAVE_INTERVAL+1                                                                                                                            |
   | backend_config.training.save-total-limit             | -1     | 用于控制权重版本保存次数。 - 当参数不设置或\<=0时，不会触发效果。  - 参数值需\<=TRAIN_ITERS//SAVE_INTERVAL+1  - 当参数值\>1时，保存模型版本次数与SAVE_TOTAL_LIMIT的值一致。   |
   | backend_config.training.load                         | null   | 加载权重路径，默认加载权重，null则表示不加载权重。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   
 
#### 模型参数设置规定
- 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)的值整除。
 
