View a markdown version of this page

PCS でのカスタム GRES AWS 設定の構成 - AWS PCS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

PCS でのカスタム GRES AWS 設定の構成

Slurm は gres.conf を使用して、コンピューティングノード上の GPUs、マルチプロセスサービス (MPS)、マルチインスタンス GPU (MIG) デバイスなどの汎用リソース (GRES) を管理します。 AWS PCS では、コンピューティングノードグループの作成または更新slurmConfiguration中に の gresCustomSettingsプロパティgres.confを使用してカスタマイズできます。

パラメータと値のペアのフラットリストである他のカスタム設定とは異なり、 gresCustomSettingsはレコードのリストです。各レコードは、1 つの GRES デバイスまたはリソースを記述する一連のgres.conf属性です。たとえば、レコードは 8 つの A100 GPU をName=gpu Type=a100 File=/dev/nvidia[0-7]宣言します。 GPUs

Slurm では、NodeName=プレフィックスを指定しない限り、gres.confレコードはクラスター内のすべてのノードに適用されます。 AWS PCS は常にコンピューティングノードグループのNodeName=プレフィックスを追加するため、指定せず、指定したすべてのレコードはそのコンピューティングノードグループにのみ適用されます。 AWS PCS はクラスター全体のgres.confレコードをサポートしていません。

gres.conf の設定

gres.conf カスタム設定は、コンピューティングノードグループの作成時に AWS コンソール、CLI、または SDKs を使用して設定することも、更新オペレーションを通じて後で変更することもできます。

AWS マネジメントコンソール

コンピューティングノードグループリソースの作成または編集ページの追加のスケジューラ設定に移動します。1 行に 1 つのgres.confレコードをネイティブgres.conf形式で入力します (例: Name=gpu Type=a100 File=/dev/nvidia[0-7])。

AWS CLI

gres.conf 設定をプログラムで管理するには、コンピューティングノードグループの作成または更新オペレーションで gresCustomSettingsフィールドを使用します。リストの各要素は 1 つのgres.confレコードです。

例– コンピューティングノードグループでの GPU デバイスの宣言
aws pcs update-compute-node-group \ --cluster-identifier my-cluster \ --compute-node-group-identifier my-cng-1 \ --slurm-configuration \ 'gresCustomSettings=[{Name=gpu,Type=a100,File=/dev/nvidia[0-7]}]'

コンピューティングノードグループでサポートされている gres.conf 設定

コンピューティングノードグループレベルの各レコードでは、次のgres.conf属性がサポートされています。

各属性の意味と許容される値については、Slurm gres.conf ドキュメントを参照してください。 AWS PCS は、Slurm が適用されるのと同じルールに照らしてレコードを検証します。特に、アクティブな値がデバイスAutoDetectを検出MultipleFilesしない限り、各レコードは NameまたはアクティブなAutoDetect値を宣言し、GPU レコード (Name=gpu) は Fileまたは を指定する必要があります。

アクティブなAutoDetect値は、 nvmlや など、検出をオンにする任意の値ですfull。 はAutoDetect=off検出をオフにするため、アクティブな値ではなく、レコード内で単独で立つことはできません。

PCS AWS が gres.conf レコードを適用する方法

GRES 設定は Slurm 設定の 2 つの場所に表示され、PCS AWS は両方を書き込みます。

  • で指定するgres.confレコードは、ノードに存在するデバイスをgresCustomSettings記述します。

  • の Gres設定は、スケジューラが割り当てることができるものを 形式でslurm.conf宣言しますname[:type]:count。で、コンピューティングノードグループのカスタム Slurm 設定として指定しますslurmCustomSettings。詳細については、「PCS コンピューティングノードグループのカスタム Slurm AWS 設定」を参照してください。

AWS PCS はレコードを にレンダリングgres.confし、管理する GRES 設定と照合します。

  • 宣言した GPU レコードは、PCS がコンピューティングノードグループに対して生成するデフォルトの GPU AWS レコードを置き換えます。GPU レコードは、 Name=gpuまたは AutoDetect 属性を指定するレコードです。

  • mps、、shardまたは独自のリソース名などの他のリソースのレコードは、PCS AWS のデフォルトとともに追加されます。

  • AWS PCS は、 GresTypes 設定と AccountingStorageTRESの設定のgres/*エントリを Gres設定slurm.confから取得します。

Slurm バージョン 26.05 以降では、 AWS コンピューティングノードグループに Socketsを設定した、または PCS が CPU トポロジを自動的に検出したために、ノードslurmCustomSettingsのソケットレイアウトがわかっている場合、PCS は GPU AWS コンピューティングノードグループにAutoDetect=fullデフォルトで を設定します。ソケットレイアウトが使用できない場合、 AWS PCS はAutoDetect代わりに なしで GPU レコードを出力します。

gres.conf と Gres 設定の間の制約

Slurm はリソースをスケジュールするために GRES 設定の両側を必要とし、そのうちの 1 つだけに表示されるリソースは機能しません。の Gres設定にgres.confレコードslurm.confがないエントリがあると、ノードレポートは設定されているリソースよりも少なくなり、ノードはドレインします。Gres エントリのないレコードは、デバイスをノードに残しますが、スケジュールできません。

AWS PCS は、コンピューティングノードグループを作成または更新するときに 2 つを相互に検証し、次の場合にリクエストを拒否します。

  • slurm.conf Gres エントリは、gres.confレコードが宣言しないリソースに名前を付けます。これには が含まれますgpu。gpuエントリには、カウントが であってもgresCustomSettings、 に GPU レコードが必要です0。

  • slurm.conf Gres エントリは、gres.confレコードが宣言する数よりも多くのリソースを宣言します。低いカウントは まで許可されます0。gres.confレコードはノードに存在するデバイスを記述し、 はスケジューラが割り当てることができるデバイスの数をGres宣言します。

  • slurm.conf Gres エントリは、 で GPU レコードがgres.conf宣言されない GPU タイプを指定します。

最後の 2 つのチェックは、レコードの宣言内容によって異なります。 AWS PCS は、ノードの起動時に Slurm が検出したデバイスをカウントできないため、 のみを有効にするレコードは、Gresエントリの任意のgpuカウントとタイプAutoDetectを受け入れます。これは、MIG プロファイルが検証に合格する方法です。 AWS PCS は、共有 GRES (mps および shard) のカウントチェックもスキップし、GPU レコードが を宣言しない場合にタイプチェックをスキップしますType。

AWS PCS は、一致するGresエントリがないレコードを受け入れます。リソースはノードに存在しますが、ジョブはリクエストできません。Gres エントリを追加して、スケジュール可能にします。

重要

AWS PCS は、レコードの構文と Gres設定との整合性を検証します。ハードウェアに対して検証されません。File、Cores、または Linksレイアウトがブートノードのデバイスと一致しないレコードは、ノードをドレインします。MIG にも同じことが当てはまります。 で宣言するプロファイルは、ノードで設定されたプロファイルと一致するGres必要があります。ドレインされたノードの診断の詳細については、「」を参照してくださいPCS での無効なノード登録 (INVALID_REG) AWS のトラブルシューティング。