本文為您介紹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 |