本文为您介绍Rapidformer适用的范围及训练参数详情,建议再使用Rapidformer进行模型训练加速前先查看本文进行了解学习。

适用范围

  • 黑盒化的加速微调
  • 黑盒化的加速预训练
  • 基于Finetuner代码模版的白盒化加速微调
  • 基于Pretrainer代码模版的白盒化加速预训练

常规训练设置:数据参数

参数名 取值类型 是否必选 默认值 枚举值 描述
--micro-batch-size int None NA 每张卡的batch size
--global-batch-size int None NA 分布式训练总的batch size
--tokenizer-type str None
  • BertWordPieceLowerCase
  • BertWordPieceCase
  • GPT2BPETokenizer
分词器的类型
--split str 969, 30, 1 NA 预训练、验证、测试集的划分
--data-impl str mmap
  • lazy
  • cached
  • mmap
  • infer
预训练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
  • sequence_classification
  • token_classification
  • question_answering
  • masked_lm
  • casual_lm
  • seq2seq_lm
  • pretraining
执行训练任务的名称
--save str None NA 保存模型的文件夹路径
--lr float None NA 学习率
--lr-decay-style str linear
  • constant
  • linear
  • cosine
学习率衰减方式
--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混合精度训练
使用说明:需要和Rapidformer提供的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
  • fixed-shape
dynamic shape数据迭代器
使用说明:只适用于预训练Pretrainer,不适用于Finetune。

加速开关设置:Op融合优化器

参数名 取值类型 是否必选 默认值 枚举值 描述
--optimizers str apex_adam
  • apex_adam
  • apex_lamb
Apex fused adam/lamb