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 |