-sdy-aggressive-propagate

積極的なシャーディング伝播アルゴリズムを実行します。

積極的なファクタ伝播戦略でシャーディングを伝播します。基本戦略では、競合のないシャーディングのみが伝播されますが、積極的な戦略では競合が解決されます。アグレッシブさを高めると、通信の可能性を犠牲にしてメモリ フットプリントを削減できます。

選択肢:

  • -keep-sharding-rules: 既存の op シャーディング ルールと作成された op シャーディング ルールを保持するかどうか。
  • -module-dump-directory: デバッグ用に書き換えられたモジュールをダンプする場所。
  • -conservative-propagation: 伝播中に分割軸と分割不可能なシャーディング軸を禁止するかどうか。
  • -debug-sharding-origins: MLIR モジュールにシャーディングの発信元に関する情報を保存するかどうか。これらは、関数の入力、出力、シャーディング制約、伝播前の手動計算のシャーディングです。
  • -debug-edge-source-sharding: MLIR モジュールにシャーディングのエジソースに関する情報を保存するかどうか。これらは、一部の演算結果にシャーディングを導入したオペランド/結果です。
  • -propagation-strategy: 使用するファクタ伝播戦略。

-sdy-basic-propagate

基本的なシャーディング伝播アルゴリズムを実行します。

基本的な伝播アルゴリズムは、階層内で最も低い伝播戦略です。競合解決は行わず、すべてのオペランドと結果で互換性のある軸を伝播します。

選択肢:

  • -keep-sharding-rules: 既存の op シャーディング ルールと作成された op シャーディング ルールを保持するかどうか。
  • -module-dump-directory: デバッグ用に書き換えられたモジュールをダンプする場所。
  • -conservative-propagation: 伝播中に分割軸と分割不可能なシャーディング軸を禁止するかどうか。
  • -debug-sharding-origins: MLIR モジュールにシャーディングの発信元に関する情報を保存するかどうか。これらは、関数の入力、出力、シャーディング制約、伝播前の手動計算のシャーディングです。
  • -debug-edge-source-sharding: シャーディングのエジソースに関する情報を MLIR モジュールに保存するかどうか。これらは、一部の演算結果にシャーディングを導入したオペランド/結果です。

-sdy-op-priority-propagate

オペレーション優先度伝播アルゴリズムを実行します。

一連のオペレーション ヒューリスティックに基づいて、イテレーションでシャーディングを伝播します。各ヒューリスティックは、特定のオペレーションに対して前方、後方、またはその両方の方向に伝播するかどうかを決定します。

これは op-priority 0 から始まり、すべての op ヒューリスティックが使い果たされ、プログラムが固定点に達するまで増加します。

優先度 p の場合、すべてのオペレーション ヒューリスティックは 0 <= i < p で考慮されます。BOTH > BACKWARD == FORWARD > NONE を使用して、各オペレーションに最も表現力のある方向が選択されます。この反復処理中に、最初に FORWARD/BACKWARD が検出され、次に BACKWARD/FORWARD が検出された場合、方向は BOTH です。

この伝播戦略は、積極的な伝播戦略を拡張したものです。つまり、オペレーション優先度が反復処理されるたびに、完全な積極的な伝播が適用されます(AggressivePropagationPass を参照)。

選択肢:

  • -keep-sharding-rules: 既存の op シャーディング ルールと作成された op シャーディング ルールを保持するかどうか。
  • -module-dump-directory: デバッグ用に書き換えられたモジュールをダンプする場所。
  • -conservative-propagation: 伝播中に分割軸と分割不可能なシャーディング軸を禁止するかどうか。
  • -debug-sharding-origins: MLIR モジュールにシャーディングの発信元に関する情報を保存するかどうか。これらは、関数の入力、出力、シャーディング制約、伝播前の手動計算のシャーディングです。
  • -debug-edge-source-sharding: MLIR モジュールにシャーディングのエジソースに関する情報を保存するかどうか。これらは、一部の演算結果にシャーディングを導入したオペランド/結果です。
  • -propagation-strategy: 使用するファクタ伝播戦略。
  • -run-op-priority-propagation: op 優先度の伝播を実行する(またはスキップする)かどうか。

-sdy-populate-op-sharding-rules

登録されているすべてのオペレーションに OpShardingRuleAttr を入力します。

登録されたすべてのオペレーションに OpShardingRuleAttr が入力されます。これは、登録されたシャーディング ルールのデバッグとテストに使用されます。伝播ではすでにこの処理がジャストインタイムで行われていますが、このパスではすべて一度に処理されます。

オプション

-conservative-propagation : whether to disllow rules that can propagate non-divisible sharding axes

-sdy-user-priority-propagate

ユーザー優先度伝播アルゴリズムを実行します。

シャーディングを反復処理で伝播します。優先度が最も高い(数値が最も小さい、通常は p0)シャーディングから優先度が最も低い(数値が最も大きい)シャーディングまで伝播します。つまり、i 回目の反復処理では、優先度が i 以下のディメンション シャーディングのみが伝播されます。

この伝播戦略はオペレーション優先度伝播戦略を拡張したもので、ユーザー優先度を反復処理するたびに、オペレーション優先度が完全に伝播されます(OpPriorityPropagationPass を参照)。

選択肢:

  • -keep-sharding-rules: 既存の op シャーディング ルールと作成された op シャーディング ルールを保持するかどうか。
  • -module-dump-directory: デバッグ用に書き換えられたモジュールをダンプする場所。
  • -conservative-propagation: 伝播中に分割軸と分割不可能なシャーディング軸を禁止するかどうか。
  • -debug-sharding-origins: MLIR モジュールにシャーディングの発信元に関する情報を保存するかどうか。これらは、関数の入力、出力、シャーディング制約、伝播前の手動計算のシャーディングです。
  • -debug-edge-source-sharding: MLIR モジュールにシャーディングのエジソースに関する情報を保存するかどうか。これらは、一部の演算結果にシャーディングを導入したオペランド/結果です。
  • -propagation-strategy: 使用するファクタ伝播戦略。
  • -run-op-priority-propagation: op 優先度の伝播を実行する(またはスキップする)かどうか。