演習 - HPC クラスターにカスタム ノード配列を追加する
注意事項
このコンテンツでは、サポート終了 (EOL) 状態となっている Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。
ノード配列は、Azure CycleCloud クラスターの同じように構成されたノードのコレクションです。 その目的は、キュー内のジョブ数の変化に応じて、クラスターのコンピューティング リソースを水平方向にスケーリングすることです。 各ノード配列には、名前、各ノードに適用される属性のセット、およびノード配列のスケーリング方法が記述されている省略可能な属性があります。
Slurm ジョブ スケジューラは、グループ ノードを論理的な、重複する可能性のあるセットに分割します。 その目的は、リソースや時間制限などの特定の制約を考慮してジョブの処理を最適化することです。 スケジューラにより、リソースがすべて使用されるか、またはすべてのジョブが処理されるまで、パーティション内のノードにジョブが割り当てられます。
新しくデプロイした Azure CycleCloud によって管理されるクラスターを、ジョブ固有のリソース ニーズを考慮して変更する必要があります。 この目標を実現するため、基になるテンプレートにさらに変更を適用し、アプローチを検証します。
この演習では、次のタスクを行います。
- タスク 1: ノード配列の定義を Azure CycleCloud テンプレートに追加する
- タスク 2: グラフィカル インターフェイスのパラメーターを Azure CycleCloud テンプレートに追加する
- タスク 3: Azure CycleCloud クラスターのプロパティをエクスポートする
- タスク 4: プロパティ ファイルを編集して新しいパラメーターを含める
- タスク 5: 変更されたテンプレートとパラメーター ファイルを既存のクラスターにインポートする
Note
この演習を開始する前に、前の演習が正しく完了していることを確認します。
タスク 1: ノード配列の定義を Azure CycleCloud テンプレートに追加する
まず、前の演習でカスタマイズした Slurm テンプレート内にノード配列の定義を追加します。 サンプル テンプレートには、hpc と htc というラベルが付いた 2 つのパーティションが含まれています。 Compute Unified Device Architecture (CUDA) の機能を利用するジョブのために、別のパーティションと対応するノード配列を作成します。
Azure Portal に移動します。 プロンプトが表示されたら、このモジュールで使用する Azure サブスクリプションの共同作成者または所有者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントで認証します。
Azure portal で、ツール バーの検索テキスト ボックスの横にあるアイコンを選択して Cloud Shell を開き、Bash セッションを実行していることを確認します。
Cloud Shell で次のコマンドを実行して、作業ディレクトリを、前の演習でフェッチした GitHub リポジトリをホストするディレクトリに設定します。
cd ~/cyclecloud-slurm/templates
次のコマンドを実行し、ダウンロードしたテンプレートを nano エディターで開きます。
nano slurm.txt
nano エディターのインターフェイスで、
[parameters About]
セクションまでスクロールし、そのすぐ前に次の内容を追加します。[[nodearray cuda]] MachineType = $CUDAMachineType ImageName = $CUDAImageName MaxCoreCount = $MaxCUDAExecuteCoreCount AdditionalClusterInitSpecs = $CUDAClusterInitSpecs [[[configuration]]] slurm.autoscale = true slurm.hpc = true [[[cluster-init cyclecloud/slurm:execute]]] [[[network-interface eth0]]] AssociatePublicIpAddress = $ExecuteNodesPublic
Note
Windows コンピューターを使っている場合は、Shift + Insert キーの組み合わせを使ってクリップボードの内容を貼り付けることができます。
Note
この変更によって、追加のノード配列が定義されます。
タスク 2: グラフィカル インターフェイスのパラメーターを Azure CycleCloud テンプレートに追加する
Azure CycleCloud のグラフィカル インターフェイスでテンプレート パラメーターの値を変更できるようにするため、テンプレートにさらに変更を適用します。
nano エディターのインターフェイスで、
[[parameters Auto-Scaling]]
セクションまでスクロールし、そのすぐ前に次の内容を追加します。[[[parameter CUDAMachineType]]] Label = CUDA VM Type Description = The VM type for CUDA execute nodes ParameterType = Cloud.MachineType DefaultValue = Standard_NC24
[[[parameter HPCMaxScalesetSize]]]
セクションまでスクロールし、そのすぐ前に次の内容を追加します。[[[parameter MaxCUDAExecuteCoreCount]]] Label = Max CUDA Cores Description = The total number of CUDA execute cores to start DefaultValue = 100 Config.Plugin = pico.form.NumberTextBox Config.MinValue = 0 Config.IntegerOnly = true
[[[parameter SchedulerClusterInitSpecs]]]
セクションまでスクロールし、そのすぐ前に次の内容を追加します。[[[parameter CUDAImageName]]] Label = CUDA OS ParameterType = Cloud.Image Config.OS = linux DefaultValue = cycle.image.centos7 Config.Filter := Package in {"cycle.image.centos7", "cycle.image.ubuntu18"}
[[parameters Advanced Networking]]
セクションまでスクロールし、そのすぐ前に次の内容を追加します。[[[parameter CUDAClusterInitSpecs]]] Label = CUDA Cluster-Init DefaultValue = =undefined Description = Cluster init specs to apply to CUDA execute nodes ParameterType = Cloud.ClusterInitSpecs
Ctrl + O キーの組み合わせを押し、Enter キーを押してから、Ctrl + X キーの組み合わせを押し、行った変更を保存してファイルを閉じます。
タスク 3: Azure CycleCloud クラスターのプロパティをエクスポートする
Azure CycleCloud テンプレートで行った構成の変更をターゲット クラスターに適用する前に、まずクラスターのプロパティをエクスポートする必要があります。
Cloud Shell で次のコマンドを実行して、既存のクラスターを一覧表示します。
cyclecloud show_cluster
Note
出力に contoso-custom-slurm-lab-cluster エントリが含まれていることを確認します。
次のコマンドを実行して、contoso-custom-slurm-lab-cluster クラスターのパラメーターとその値のリストを、params.json ファイルにエクスポートします。
cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
次のコマンドを実行して、エクスポートされたパラメーターとその値のリストを確認します。
cat ~/params.json
タスク 4: プロパティ ファイルを編集して新しいパラメーターを含める
Azure CycleCloud テンプレートに適用した編集で新しく導入したパラメーターはすべて既定値でしたが、特定の要件に合わせて変更することが必要になる場合があります。 このタスクでは、CUDAMachineType パラメーターと MaxCUDAExecuteCoreCount パラメーターの値を設定します。
Cloud Shell で次のコマンドを実行して、ダウンロードしたパラメーター ファイルを nano エディターで開きます。
nano ~/params.json
nano エディターで、ファイルの末尾までスクロールし、右中かっこ (}) の前に、新しい行で始まる次の内容を追加します。
"CUDAMachineType" : "Standard_NC6", "MaxCUDAExecuteCoreCount" : 60
前の手順で追加した行の前の行の末尾にコンマを追加します。
"CUDAMachineType" : "Standard_NC6"
Ctrl + O キーの組み合わせを押し、Enter キーを押してから、Ctrl + X キーの組み合わせを押し、行った変更を保存してファイルを閉じます。
タスク 5: 変更されたテンプレートとパラメーター ファイルを既存のクラスターにインポートする
最後に、変更したテンプレートとそのパラメーター ファイルを既存のクラスターにインポートして、現在の構成をオーバーライドします。
Cloud Shell で次のコマンドを実行して、変更したテンプレートとそのパラメーター ファイルを既存のクラスターにインポートします。
cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
Note
既存のクラスターの構成を上書きするには、ターゲット クラスターの名前と
--force
フラグを指定する必要があります。お使いのコンピューターで別のブラウザー ウィンドウを開き、URL https://<IP アドレス> に移動します。 メッセージが表示されたら、続行を確認します。
認証を求めるメッセージが表示されたら、Azure CycleCloud CLI の構成に使用したものと同じ Azure CycleCloud アプリケーションのユーザー アカウントの資格情報を入力してサインインします。
Azure CycleCloud のグラフィカル インターフェイスで [クラスター] ページに移動します。 クラスターの一覧で、contoso-custom-slurm-lab-cluster エントリを選び、[編集] を選びます。
[Edit contoso-custom-slurm-lab-cluster](contoso-custom-slurm-lab-cluster の編集) ポップアップ ウィンドウの [About](情報) ページで、[次へ] を選択します。
[Required Settings](必須の設定) ページで、値が Standard_NC6 に設定されている [CUDA VM Type](CUDA VM の種類) エントリが存在することと、対応する自動スケーリング オプションを確認します。
お疲れさまでした。 このモジュールの 2 番目の演習が正常に完了しました。 この演習では、新しいノード配列と対応するパーティションの定義が含まれる変更したテンプレートを使用して、Azure CycleCloud クラスターをさらにカスタマイズしました。 この目標を達成するために、テンプレートを編集した後、クラスター パラメーター ファイルをエクスポートして編集し、それを変更したテンプレートと共にクラスターにインポートしました。
Note
次の演習を実行する予定がある場合は、この演習でデプロイおよび構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。