本文为您介绍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 | 层数 |
--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 | 梯度clipping |
--lr-warmup-fraction | float | 否 | None | NA | 学习率warmup比例 |
--train-iters | int | 是 | None | NA | 迭代轮数 |
--epochs | int | 否 | None | NA | 迭代epoch数 |
--log-interval | int | 否 | 100 | NA | 打印日志间隔 |
加速开关设置:MoE稀疏训练
参数名 | 取值类型 | 是否必选 | 默认值 | 枚举值 | 描述 |
--num-experts | int | 否 | None | NA | 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训练只能和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 |