このトピックでは、Pai-Megatron-Patchを使用できるシナリオと、PAI-Rapidformerを使用して変圧器のトレーニングを加速するときに設定できるパラメーターについて説明します。 PAI-Rapidformerを使用する前に、このトピックを読むことをお勧めします。
シナリオ
ブラックボックス方式で変圧器の微調整を加速
ブラックボックス方式で変圧器の事前トレーニングを加速
Finetunerコードテンプレートを使用して、ホワイトボックス方式で変圧器の微調整を高速化
Pretrainerコードテンプレートを使用して、変圧器の事前トレーニングをホワイトボックスで高速化
通常のトレーニング設定: データのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
--micro-batch-size | Integer | Yes | None | N/A | 各GPUのバッチサイズ。 |
--global-batch-size | Integer | Yes | None | N/A | 分散トレーニングのすべてのGPUのバッチサイズ。 |
--tokenizer-type | String | No | None |
| アナライザーのタイプ。 |
--split | String | No | 969, 30, 1 | N/A | 事前トレーニング、トレーニング、検証、およびテストセットの分割。 |
-- data-impl | String | No | mmap |
| インデックス付きデータセットを事前トレーニングする方法。 |
--data-path | String | Yes | None | N/A | 事前トレーニングセットが保存されているファイルのパス。 |
-- data-dir | String | No | None | N/A | 微調整用のデータセットが格納されているファイルのパス。 |
-- data-name | String | Yes | None | N/A | 微調整用のデータセットが格納されているファイルの名前。 |
通常のトレーニング設定: 変圧器のパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- pretrained-model-name-or-path | String | Yes | None | N/A | 事前にトレーニングするトランスの名前またはパス。 |
-- num-layers | Integer | Yes | None | N/A | レイヤーの数。 |
--hidden-size | Integer | Yes | None | N/A | 非表示レイヤーのディメンション。 |
-- num-attention-heads | Integer | Yes | None | N/A | 自己注意レイヤーのヘッドの数。 |
-- max-position-embeddings | Integer | Yes | None | N/A | 位置埋め込みが実行されるシーケンスの長さ。 |
-- seq-length | Integer | Yes | None | N/A | シーケンスの長さ。 |
通常のトレーニング設定: トレーニングに関するパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
--task | String | Yes | None |
| トレーニングタスクの名前。 |
--save | String | Yes | None | N/A | トランスが保存されているファイルのパス。 |
-- lr | Float | Yes | None | N/A | 学習率。 |
-- lr-decay-style | String | Yes | linear |
| 学習率の減衰のスキーム。 |
--weight-decay | Float | Yes | 0.01 | N/A | 重みの減衰値。 |
-- clip-grad | Float | No | 1 | N/A | グラデーションクリッピング値。 |
-- lr-warmup-fraction | Float | No | None | N/A | 学習率のウォームアップ。 |
-train-iters | Integer | Yes | None | N/A | 反復回数。 |
--epochs | Integer | No | None | N/A | エポックの数。 |
-- log-interval | Integer | No | 100 | N/A | ログが表示される間隔。 |
アクセラレーションスイッチの設定: スパローゲートMoEのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- num-experts | Integer | No | None | N/A | エキスパート混合物 (MoE) 層の数。 |
加速スイッチ設定: 混合精度トレーニングのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
---mixed-precision | Boolean | No | None | N/A | FP16データ転送を有効にするかどうかを指定します。 |
注意: PAI-Rapidformerが提供するTrainer、Pretrainer、またはFinetunerコードテンプレートを使用する場合にのみ、混合精度トレーニングを有効にできます。
アクセラレーションスイッチ設定: ZeRO、OSS、SDP、またはFSDPを使用したモデル状態パーティショニングのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- oss-memory-optimization | Boolean | No | N/A | N/A | オプティマイザーステートシャーディング (OSS) を使用してオプティマイザーステートを分割するかどうかを指定します。 |
-- oss-sdp-memory-optimization | Boolean | No | N/A | N/A | シャードデータパラレル (SDP) を使用してオプティマイザーの状態とグラデーションをパーティション分割するかどうかを指定します。 |
--fsdp-memory-optimization | Boolean | No | N/A | N/A | オプティマイザーの状態、グラデーション、およびパラメーターをパーティション分割するためにFSDP (Fully Sharded Data Parallel) を使用するかどうかを指定します。 |
--zero-1-memory-optimization | Boolean | No | N/A | N/A | Zero Redundancy Optimizer (ZeRO) を使用してオプティマイザー状態をパーティション分割するかどうかを指定します。 |
--zero-2-memory-optimization | Boolean | No | N/A | N/A | ZeROを使用してオプティマイザーの状態とグラデーションをパーティション分割するかどうかを指定します。 |
--zero-3-memory-optimization | Boolean | No | N/A | N/A | ZeROを使用してオプティマイザーの状態、グラデーション、およびパラメーターをパーティション分割するかどうかを指定します。 |
注: Trainerコードテンプレートを使用する場合にのみ、ZeROを使用できます。 トレーナーコードテンプレートを使用しない場合は、OSS、SDP、またはFSDPを使用できます。
アクセラレーションスイッチの設定: 3D並列処理に関するパラメータ (データ、テンソル、パイプライン並列処理)
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- tensor-model-parallel-size | Integer | No | 1 | N/A | テンソル並列処理のサイズ。 |
-- pipeline-model-parallel-size | Integer | No | 1 | N/A | パイプラインの並列処理のサイズ。 |
注:
3D並列処理とモデル状態のパーティション分割を同時に有効にするには、ZeROのみを使用してオプティマイザー状態とグラデーションをパーティション分割するか、オプティマイザー状態のみをパーティション分割します。
トレーナーコードテンプレートを使用する場合にのみ、3D並列処理を有効にできます。
加速スイッチ設定: グラフ最適化のパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- onnx-runtime-training | Boolean | No | None | N/A | ONNX Runtimeによって提供されるグラフ最適化を有効にするかどうかを指定します。 |
アクセラレーションスイッチの設定: CPU負荷トレーニングのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
--cpu-offload | Boolean | No | None | N/A | CPUロードトレーニングを有効にするかどうかを指定します。 |
注: CPU負荷トレーニングとモデル状態のパーティション分割を同時に有効にするには、モデル状態のパーティション分割にZeROのみを使用できます。
アクセラレーションスイッチの設定: チェックポイントの有効化に関するパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- checkpoint-activations | Boolean | No | None | N/A | チェックポイントを有効にするかどうかを指定します。 |
加速スイッチの設定: 勾配累積に関するパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
--micro-batch-size | Integer | Yes | 1 | N/A | ミニバッチのサイズ。 |
--global-batch-size | Integer | Yes | 1 | N/A | グローバルバッチのサイズ。 |
注:
グラデーション累積を有効にできるのは、PretrainerまたはFinetunerコードテンプレートを使用して反復ベースの事前トレーニングを実行する場合のみです。 エポックベースの微調整を実行する場合、グラデーション累積を有効にすることはできません。
勾配累積結果は、前のテーブルのパラメータの値とランクパラメータの値とに基づいて自動的に計算することができる。
アクセラレーションスイッチ設定: Dynamic Shapeのデータイテレータのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- data-iterator dynamic-shape | String | No | None |
| Dynamic Shapeのデータ反復子。 |
注: Pretrainerコードテンプレートを事前トレーニングに使用する場合にのみ、Dynamic Shapeのデータイテレータを有効にできます。
アクセラレーションスイッチの設定: 操作ベースのフュージョンオプティマイザのパラメータ
パラメーター | データ型 | 必須 | デフォルト値 | 列挙値 | 説明 |
-- optimizers | String | Yes | apex_adam |
| アペックス融合アダム /子羊 |