Pai-Megatron-Patch的适用范围与训练参数说明。使用Pai-Megatron-Patch加速模型训练前,请先了解这些参数配置。
适用范围
黑盒化的加速微调
黑盒化的加速预训练
基于Finetuner代码模板的白盒化加速微调
基于Pretrainer代码模板的白盒化加速预训练
常规训练设置:数据参数
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--micro-batch-size | int | 是 | None | NA | 每张卡的batch size |
--global-batch-size | int | 是 | None | NA | 分布式训练总的batch size |
--tokenizer-type | str | 否 | None |
| 分词器的类型 |
--split | str | 否 | 969, 30, 1 | NA | 预训练、验证、测试集的划分 |
--data-impl | str | 否 | mmap |
| 预训练indexed数据集的实现方式 |
--data-path | str | 是 | None | NA | 预训练数据集文件路径 |
--data-dir | str | 否 | None | NA | 微调数据集文件夹路径 |
--data-name | str | 是 | None | NA | 微调数据集文件名 |
常规训练设置:模型参数
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--pretrained-model-name-or-path | str | 是 | None | NA | 预训练模型名或路径 |
--num-layers | int | 是 | None | NA | Transformer层数 |
--hidden-size | int | 是 | None | NA | 隐层维数 |
--num-attention-heads | int | 是 | None | NA | 自注意力的head数 |
--max-position-embeddings | int | 是 | None | NA | 位置embedding的序列长度 |
--seq-length | int | 是 | None | NA | 序列长度 |
常规训练设置:训练参数
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--task | str | 是 | None |
| 训练任务名称 |
--save | str | 是 | None | NA | 保存模型的文件夹路径 |
--lr | float | 是 | None | NA | 学习率 |
--lr-decay-style | str | 是 | linear |
| 学习率衰减方式 |
--weight-decay | float | 是 | 0.01 | NA | L2 正则权重衰减系数 |
--clip-grad | float | 否 | 1 | NA | 梯度裁剪阈值,防止梯度爆炸 |
--lr-warmup-fraction | float | 否 | None | NA | 学习率预热比例,训练初期逐步提升学习率至设定值 |
--train-iters | int | 是 | None | NA | 迭代轮数 |
--epochs | int | 否 | None | NA | 迭代epoch数 |
--log-interval | int | 否 | 100 | NA | 日志打印间隔步数 |
加速开关设置:MoE稀疏训练
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--num-experts | int | 否 | None | NA | MoE中MLP层的专家数量 |
加速开关设置:混合精度训练
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--mixed-precision | bool | 否 | None | NA | FP16混合精度训练 |
使用说明:须与Pai-Megatron-Patch提供的Trainer、PreTrainer或Finetuner配合使用。
加速开关设置:模型状态切分(ZeRO,OSS,SDP,FSDP)
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--oss-memory-optimization | bool | 否 | NA | NA | 优化器状态切分 |
--oss-sdp-memory-optimization | bool | 否 | NA | NA | 优化器和梯度联合状态切分 |
--fsdp-memory-optimization | bool | 否 | NA | NA | 优化器,梯度和模型参数联合状态切分 |
--zero-1-memory-optimization | bool | 否 | NA | NA | zero优化器状态切分 |
--zero-2-memory-optimization | bool | 否 | NA | NA | zero优化器和梯度联合状态切分 |
--zero-3-memory-optimization | bool | 否 | NA | NA | zero优化器,梯度和模型参数联合状态切分 |
使用说明:zero显存优化需与Trainer配合使用;oss、sdp、fsdp显存优化可用于无Trainer的代码中。
加速开关设置:3D混合并行(Data,Tensor,Pipeline并行)
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--tensor-model-parallel-size | int | 否 | 1 | NA | 张量并行大小,切分模型层内矩阵运算 |
--pipeline-model-parallel-size | int | 否 | 1 | NA | 流水并行大小,按层切分模型到不同卡 |
使用说明:
只支持zero-1和zero-2的模型状态切分组合。
需要和Trainer一起使用。
加速开关设置:计算图优化
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--onnx-runtime-training | bool | 否 | None | NA | onnx-runtime计算图优化 |
加速开关设置:CPU负载训练
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--cpu-offload | bool | 否 | None | NA | 是否开启CPU负载训练,将计算卸载到CPU |
使用说明:CPU训练仅与zero配合使用,不兼容oss、sdp、fsdp三种模型状态切分。
加速开关设置:激活检查点
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--checkpoint-activations | bool | 否 | None | NA | 激活检查点,以额外计算换取显存节省 |
加速开关设置:梯度累积
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--micro-batch-size | int | 是 | 1 | NA | 梯度累积分母 |
--global-batch-size | int | 是 | 1 | NA | 梯度累积分子 |
使用说明:
仅适用于基于Iter的Pretrainer和Finetune。基于epoch的微调暂不支持梯度累积。
根据batch size和rank数自动计算累积步数。
加速开关设置:Dynamic Shape数据迭代器
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--data-iterator dynamic-shape | str | 否 | None |
| dynamic shape数据迭代器 |
使用说明:只适用于预训练Pretrainer,不适用于Finetune。
加速开关设置:Op融合优化器
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--optimizers | str | 是 | apex_adam |
| Apex fused adam/lamb |