このトピックでは、Pai-Megatron-Patch のユースケースとトレーニングパラメーターを説明します。Pai-Megatron-Patch を使用してモデルトレーニングを高速化する前に、このトピックをお読みください。
ユースケース
-
ブラックボックスによる高速化されたファインチューニング
-
ブラックボックスによる高速化された事前学習
-
Finetuner コードテンプレートに基づく高速化されたファインチューニングのホワイトボックス実装
-
Pretrainer コードテンプレートに基づく高速化された事前学習のホワイトボックス実装
通常のトレーニング設定:データパラメーター
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--micro-batch-size |
int |
はい |
None |
N/A |
各カードのバッチサイズ。 |
|
--global-batch-size |
int |
はい |
None |
N/A |
分散トレーニングの合計バッチサイズ。 |
|
--tokenizer-type |
str |
いいえ |
None |
|
トークナイザーの型。 |
|
--split |
str |
いいえ |
969, 30, 1 |
N/A |
事前学習、検証、テストデータセットの分割比率。 |
|
--data-impl |
str |
いいえ |
mmap |
|
事前学習におけるインデックス付きデータセットの実装方法。 |
|
--data-path |
str |
はい |
None |
N/A |
事前学習データセットのファイルパス。 |
|
--data-dir |
str |
はい |
None |
N/A |
ファインチューニングデータセットのフォルダーパス。 |
|
--data-name |
str |
はい |
None |
N/A |
ファインチューニングデータセットのファイル名。 |
通常のトレーニング設定:モデルパラメーター
|
パラメーター名 |
値のタイプ |
必須 |
デフォルト値 |
列挙値 |
説明 |
|
--pretrained-model-name-or-path |
str |
必須 |
None |
N/A |
事前学習済みモデルの名前またはパス。 |
|
--num-layers |
int |
必須 |
None |
N/A |
層の数。 |
|
--hidden-size |
int |
必須 |
None |
N/A |
隠れ層の次元。 |
|
--num-attention-heads |
int |
必須 |
None |
N/A |
自己注意層のヘッド数。 |
|
--max-position-embeddings |
int |
必須 |
None |
N/A |
位置埋め込みのシーケンス長。 |
|
--seq-length |
int |
必須 |
None |
N/A |
シーケンス長。 |
通常のトレーニング設定:トレーニングパラメーター
|
パラメーター名 |
値のタイプ |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--task |
str |
はい |
None |
|
実行するトレーニングタスクの名前。 |
|
--save |
str |
はい |
None |
N/A |
モデルを保存するフォルダーパス。 |
|
--lr |
float |
はい |
None |
N/A |
学習率。 |
|
--lr-decay-style |
str |
いいえ |
linear |
|
学習率減衰スタイル。 |
|
--weight-decay |
float |
いいえ |
0.01 |
N/A |
L2 正則化の重み減衰係数。 |
|
--clip-grad |
float |
いいえ |
1 |
N/A |
勾配クリッピング。 |
|
--lr-warmup-fraction |
float |
いいえ |
None |
N/A |
学習率ウォームアップの割合。 |
|
--train-iters |
int |
はい |
None |
N/A |
トレーニングのイテレーション数。 |
|
--epochs |
int |
いいえ |
None |
N/A |
トレーニングのエポック数。 |
|
--log-interval |
int |
いいえ |
100 |
N/A |
ログ出力の間隔。 |
高速化スイッチ設定:MoE スパーストレーニング
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙値 |
説明 |
|
--num-experts |
int |
いいえ |
なし |
該当なし |
MLP 層のエキスパート数。 |
高速化スイッチ設定:混合精度トレーニング
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙値 |
説明 |
|
--mixed-precision |
bool |
不要 |
なし |
該当なし |
FP16 混合精度トレーニングを有効にします。 |
注:これは、Pai-Megatron-Patch が提供する Trainer、PreTrainer、または Finetuner と組み合わせて使用する必要があります。
高速化スイッチ設定:モデル状態分割 (ZeRO、OSS、SDP、FSDP)
|
パラメーター名 |
データ型 |
必須 |
デフォルト値 |
列挙値 |
説明 |
|
--oss-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
オプティマイザーの状態の分割を有効にします。 |
|
--oss-sdp-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
オプティマイザーの状態と勾配の分割を有効にします。 |
|
--fsdp-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
オプティマイザーの状態、勾配、モデルパラメーターの分割を有効にします。 |
|
--zero-1-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
ZeRO を使用したオプティマイザーの状態の分割を有効にします。 |
|
--zero-2-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
ZeRO を使用したオプティマイザーの状態と勾配の分割を有効にします。 |
|
--zero-3-memory-optimization |
bool |
いいえ |
該当なし |
該当なし |
ZeRO を使用したオプティマイザーの状態、勾配、モデルパラメーターの分割を有効にします。 |
注:ZeRO メモリ最適化は Trainer と組み合わせてのみ使用できます。OSS、SDP、FSDP メモリ最適化は、Trainer を使用せずにコード内で使用できます。
高速化スイッチ設定:3D ハイブリッド並列処理
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--tensor-model-parallel-size |
int |
不要 |
1 |
該当なし |
テンソル並列処理 |
|
--pipeline-model-parallel-size |
int |
不要 |
1 |
該当なし |
パイプライン並列処理 |
注:
-
ZeRO-1 と ZeRO-2 のモデル状態分割のみをサポートします。
-
これは Trainer と組み合わせて使用する必要があります。
高速化スイッチ設定:計算グラフの最適化
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--onnx-runtime-training |
ブール値 |
任意 |
なし |
該当なし |
ONNX Runtime を使用して計算グラフの最適化を有効にします。 |
高速化スイッチ設定:CPU オフロードトレーニング
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--cpu-offload |
bool |
いいえ |
なし |
該当なし |
CPU オフロードトレーニングを有効にします。 |
注:メモリ最適化のための CPU オフロードトレーニングは、ZeRO と組み合わせてのみ使用できます。OSS、SDP、または FSDP のモデル状態分割と組み合わせて使用することはできません。
アクセラレーションスイッチ設定:アクティベーションチェックポイント
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--checkpoint-activations |
bool |
いいえ |
false |
該当なし |
アクティベーションチェックポイントを有効にします。 |
高速化スイッチ設定:勾配累積
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--micro-batch-size |
int |
○ |
1 |
該当なし |
勾配累積の分母 |
|
--global-batch-size |
int |
○ |
1 |
該当なし |
勾配累積の分子 |
注:
-
これは、PreTrainer および Finetuner を使用したイテレーションベースの事前学習にのみ適用されます。エポックベースのファインチューニングでは、勾配累積はサポートされていません。
-
累積ステップ数は、バッチサイズとランク数に基づいて自動的に計算されます。
高速化スイッチ設定:動的シェイプデータイテレータ
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--data-iterator |
文字列 |
いいえ |
なし |
|
動的シェイプ用のデータイテレータ |
注: これは PreTrainer を使用した事前学習にのみ適用され、ファインチューニングではサポートされていません。
高速化スイッチの設定:演算融合オプティマイザー
|
パラメーター名 |
値の型 |
必須 |
デフォルト値 |
列挙 |
説明 |
|
--optimizers |
str |
○ |
apex_adam |
|
Apex-fused Adam/LAMB |