翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチキューモードのクラスターでジョブを実行する
このチュートリアルでは、複数のキューモードで最初のHello World「」ジョブを AWS ParallelCluster で実行する方法について説明します。
AWS ParallelCluster コマンドラインインターフェイス (CLI) または API を使用する場合、 AWS ParallelCluster イメージとクラスターを作成または更新したときに作成された AWS リソースに対してのみ料金が発生します。詳細については、「AWS が使用する サービス AWS ParallelCluster」を参照してください。
前提条件
-
AWS ParallelCluster がインストールされます。
-
AWS CLI がインストールされ、設定されています。
-
Amazon EC2 のキーペアがある。
クラスターを設定する
まず、次のコマンドを実行して、 が正しくインストール AWS ParallelCluster されていることを確認します。
$pcluster version
pcluster version の詳細については、「pcluster version」を参照してください。
このコマンドは、実行中の のバージョンを返します AWS ParallelCluster。
次に、pcluster configure を実行して、基本的な設定ファイルを生成します。このコマンドに続くすべてのプロンプトに従います。
$pcluster configure --config multi-queue-mode.yaml
pcluster configure コマンドの詳細については、「pcluster configure」を参照してください。
このステップを完了すると、multi-queue-mode.yaml という名前の基本設定ファイルが表示されます。このファイルには、基本的なクラスター設定が含まれています。
次のステップでは、新しい設定ファイルを変更して、複数のキューを持つクラスターを起動します。
注記
このチュートリアルで使用される一部のインスタンスは、無料利用枠の対象外です。
このチュートリアルでは、設定ファイルを以下の設定に合わせて変更します。赤で強調表示されている項目は、設定ファイルの値を表します。お客様の値をご使用ください。
Region:region-idImage: Os: alinux2 HeadNode: InstanceType: c5.xlarge Networking: SubnetId:subnet-abcdef01234567890Ssh: KeyName:yourkeypairScheduling: Scheduler: slurm SlurmQueues: - Name: spot ComputeResources: - Name: c5xlarge InstanceType: c5.xlarge MinCount: 1 MaxCount: 10 - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: -subnet-abcdef01234567890- Name: ondemand ComputeResources: - Name: c52xlarge InstanceType: c5.2xlarge MinCount: 0 MaxCount: 10 Networking: SubnetIds: -subnet-021345abcdef6789
クラスターを作成する
設定ファイルに基づいて multi-queue-cluster という名前が付けられたクラスターを作成します。
$pcluster create-cluster --cluster-name multi-queue-cluster --cluster-configuration multi-queue-mode.yaml{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.14.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
pcluster create-cluster コマンドの詳細については、「pcluster create-cluster」を参照してください。
次のコマンドを実行して、クラスターのステータスを確認します。
$pcluster list-clusters{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.14.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
クラスターが作成されると、clusterStatus フィールドは、CREATE_COMPLETE を表示します。
ヘッドノードにログインします。
プライベート SSH キーファイルを使用して、ヘッドノードにログインします。
$pcluster ssh --cluster-name multi-queue-cluster -i~/path/to/yourkeyfile.pem
pcluster ssh の詳細については、「pcluster ssh」を参照してください。
ログインしたら、sinfo スケジューラキューがセットアップされ設定されていることを確認します。
sinfo の詳細については、「Slurm ドキュメンテーション」の「sinfo」
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 18 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[1-9] spot* up infinite 2 idle spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
この出力では、1 つの t2.micro コンピューティングノードと 1 つのc5.xlarge コンピューティングノードが idle 状態で存在し、クラスター内で利用可能であることがわかります。
その他のノードはすべて省電力状態にあることが、ノード状態の ~ サフィックスで示されています。これらは Amazon EC2 インスタンスによってバッキングされていません。デフォルトのキューには、キュー名の後に * というサフィックスが付きますので、spot はデフォルトのジョブキューとなります。
マルチキューモードでジョブを実行する
次に、しばらくの間、ジョブをスリープ状態にして実行してみます。このジョブは、後で自分のホスト名を出力します。このスクリプトが現在のユーザーで実行できることを確認します。
$tee <<EOF hellojob.sh#!/bin/bash sleep 30 echo "Hello World from \$(hostname)" EOF$chmod +x hellojob.sh$ls -l hellojob.sh-rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh
sbatch コマンドを使用してジョブを送信します。このジョブに対して -N 2 オプションで 2 つのノードを要求し、ジョブが正常に送信されることを確認します。sbatch の詳細については、「Slum ドキュメンテーション」の「sbatch」
$sbatch -N 2 --wrap "srun hellojob.sh"Submitted batch job 1
squeue コマンドでは、キューの表示やジョブの状態を確認することができます。特定のキューを指定していないため、デフォルトのキュー (spot) が使用されます。squeue の詳細については、「Slurm ドキュメンテーション」の「squeue
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 1 spot wrap ec2-user R 0:10 2 spot-st-c5xlarge-1,spot-st-t2micro-1
ジョブが現在実行ステータスであることが出力に示されます。ジョブが終了するまで待機してください。これには約 30 秒かかります。その後、もう一度 squeue を実行してください。
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
キュー内のジョブがすべて終了したので、カレントディレクトリで slurm-1.out という名前の出力ファイル探します。
$cat slurm-1.outHello World from spot-st-t2micro-1 Hello World from spot-st-c5xlarge-1
この出力では、spot-st-t2micro-1 と spot-st-c5xlarge-1 の各ノードでジョブが正常に実行されたことが示されています。
次のコマンドで特定のインスタンスに制約条件を指定して、同じジョブを送信します。
$sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh"Submitted batch job 2
これらのパラメータを sbatch に使用しました。
-
-N 3— 3 つのノードを要求します -
-p spot— ジョブをspotキューへ送信します また、-p ondemandを指定してondemandキューにジョブを送信することもできます。 -
-C "[c5.xlarge*1&t2.micro*2]"— このジョブの特定のノード制約を指定します。これは、このジョブに使用される 1 つのc5.xlargeノードと 2 つのt2.microノードを要求します。
sinfo コマンドを実行して、ノードとキューを表示します。のキュー AWS ParallelCluster は、 のパーティションと呼ばれますSlurm。
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 1 alloc# spot-dy-t2micro-1 spot* up infinite 17 idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9] spot* up infinite 1 mix spot-st-c5xlarge-1 spot* up infinite 1 alloc spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
ノードの電源が入っています。これは、ノードの状態に # というサフィックスが付いていることで示されます。squeue コマンドを実行して、クラスター内のジョブに関する情報を表示します。
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user CF 0:04 3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
ジョブは CF (CONFIGURING) の状態で、インスタンスがスケールアップしてクラスターに参加するのを待っています。
約 3 分後、ノードが利用可能になり、ジョブは R (RUNNING) の状態になります。
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user R 0:07 3 spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
ジョブが終了すると、3 つのノードはすべて idle の状態になります。
$squeueJOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
そして、キューにジョブが残っていない状態になってから、ローカルディレクトリに slurm-2.out があるかどうかを確認します。
$cat slurm-2.outHello World from spot-st-t2micro-1 Hello World from spot-dy-t2micro-1 Hello World from spot-st-c5xlarge-1
これがクラスターの最終的な状態です。
$sinfoPARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
クラスターからログオフした後、pcluster delete-cluster を実行してクリーンアップすることができます。詳細については、「pcluster list-clusters」および「pcluster delete-cluster」を参照してください。
$pcluster list-clusters{ "clusters": [ { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "CREATE_COMPLETE" } ] }$pcluster delete-cluster -n multi-queue-cluster{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "DELETE_IN_PROGRESS" } }