PAI は、コンピューティングリソースを階層的に分割するために、マルチレベルのクォータをサポートしています。プリエンプションを有効にすると、特定のクォータでキューに入っているジョブが、兄弟クォータまたは子クォータのアイドル状態のコンピューティングリソースをプリエンプトできるようになり、リソース利用率を向上させることができます。
クォータ階層
PAI では、コンピューティングリソースを QuotaTree と呼ばれるツリー構造に整理し、組織構造に合わせて親クォータと子クォータに分割できます。これにより、きめ細かなリソース管理と割り当てが可能になります。
前図に示すように、コンピューティングリソースは 3 つのレベルに分割されます。
Root | Quotaは親クォータです。Quota-1、Quota-2、...、Quota-nはその子クォータであり、互いに兄弟クォータです。Quota-1はQuota-1.1とQuota-1.2の親クォータです。Quota-1.1とQuota-1.2は兄弟クォータであり、Quota-1の子クォータです。同様の構造がQuota-2からQuota-nにも適用されます。
組織またはプロジェクトに基づいてクォータを分割して使用し、それぞれのジョブとリソースを管理できます。リソース競合が発生した場合は、マルチレベルのクォータを作成し、プリエンプションポリシーを有効にすることで、リソース利用率を最大化することができます。
ユースケース:高優先度のジョブが、リソース不足により自身のクォータ内でキューに入り、兄弟クォータのジョブからリソースをプリエンプトする必要がある場合。
メカニズム:システムが兄弟クォータから重要なジョブにコンピューティングリソースを再割り当てします。
例:
Quota-1に対して兄弟レベルのプリエンプションを有効にすると、リソースが不足した場合に、このクォータでキューに入っているジョブが、Quota-2などの兄弟クォータで実行中のジョブからリソースをプリエンプトすることができます。
ユースケース:親クォータに送信されたジョブが、自身の割り当てでは十分なリソースを確保できない場合。
メカニズム:システムが子クォータから、親クォータ内の重要なジョブにコンピューティングリソースを再割り当てします。
例:
Quota-1に対して子レベルのプリエンプションを有効にすると、このクォータで作成されたジョブは、コンピューティングリソースが不足した場合にQuota-1.1とQuota-1.2からリソースをプリエンプトすることができます。
兄弟レベルのプリエンプションの有効化
操作手順
クォータを作成または編集する際に、兄弟レベルのプリエンプションを有効にします。
[同位レベルのプリエンプション] スイッチをオンにすると、[プリエンプション設定] ダイアログボックスが表示されます。このダイアログボックスでプリエンプションポリシーパラメーターを設定します。
ジョブが送信され、そのクォータのリソースが不足している場合、システムは次のポリシー設定に基づいて兄弟クォータからリソースをプリエンプトします。
パラメータ | 説明 |
[高優先度] | 兄弟クォータからリソースをプリエンプトできるジョブの優先度です。有効値:[1,9]。[単一の値] または [範囲] として指定します。この値が高いほど、優先度が高いことを示します。 |
[プリエンプト可能な優先度] | プリエンプト対象となるジョブの優先度です。有効値:[1,9]。[単一の値] または [範囲] として指定します。この値が高いほど、優先度が高いことを示します。 説明 プリエンプト可能な優先度は、高優先度より低くする必要があります。 |
[プリエンプト可能なモジュール] | 兄弟クォータからリソースをプリエンプトされる対象となるモジュール (DLC、DSW、EAS など) です。 |
例
プリエンプション設定:
次のパラメータでプリエンプションポリシーを設定します。
[高優先度]:6~9 の範囲に設定します。
[低優先度プリエンプション]: 単一の値 4 に設定します。
[プリエンプト可能なモジュール]:DLC と DSW を選択します。
結果:
このクォータで優先度が 6~9 のジョブが作成され、コンピューティングリソースが不足している場合、システムは兄弟クォータ内で優先度が 4 の DLC または DSW ジョブからコンピューティングリソースをプリエンプトすることができます。
子レベルのプリエンプションの有効化
操作手順
クォータを作成または編集する際に、子レベルのプリエンプションを有効にします。
専用リソースグループの詳細ページの [概要] タブで、[スケジューリング情報] セクションを見つけ、[子レベルのプリエンプション] スイッチをオンにし、[プリエンプション設定] ダイアログボックスで [プリエンプション可能な優先度] と [プリエンプション可能なモジュール] を設定します。
親クォータにジョブが送信され、コンピューティングリソースが不足している場合、システムは最適な戦略に基づいて子クォータ内で実行中のジョブからコンピューティングリソースを回収し、親クォータ内のジョブを実行できるようにします。
パラメータ | 説明 |
[プリエンプト可能な優先度] | 子クォータ内でプリエンプト対象となるジョブの優先度です。有効値:[1,9]。範囲として指定します。この値が高いほど、優先度が高いことを示します。 |
[プリエンプト可能なモジュール] | 子クォータ内でリソースをプリエンプトされる対象となるモジュール (DLC、 DSW、 EAS など) です。 |
例
プリエンプション設定:
次のパラメータでプリエンプションポリシーを設定します。
[プリエンプト可能な優先度]:1~3 の範囲に設定します。
[プリエンプト可能なモジュール]:DLC と DSW を選択します。
結果:
親クォータのジョブに対してコンピューティングリソースが不足している場合、システムは子クォータ内で優先度が 1~3 の DLC または DSW ジョブからコンピューティングリソースをプリエンプトすることができます。
関連ドキュメント
サブスクリプションクォータで作成された分散トレーニング (DLC) ジョブは、アイドルリソースを使用できます。 詳細については、「アイドルリソースを使用する」をご参照ください。