演習 - HPC クラスターにカスタム ノード配列を追加する
注意事項
このコンテンツでは、サポート終了 (EOL) 状態となっている Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、 CentOS の終了ガイダンスを参照してください。
ノード配列は、Azure CycleCloud クラスターの同じように構成されたノードのコレクションです。 その目的は、キュー内のジョブ数の変化に応じて、クラスターのコンピューティング リソースを水平方向にスケーリングすることです。 各ノード配列には、名前、各ノードに適用される属性のセット、およびノード配列のスケーリング方法が記述されている省略可能な属性があります。
Slurm ジョブ スケジューラは、グループ ノードを論理的な、重複する可能性のあるセットに分割します。 その目的は、リソースや時間制限などの特定の制約を考慮してジョブの処理を最適化することです。 スケジューラにより、リソースがすべて使用されるか、またはすべてのジョブが処理されるまで、パーティション内のノードにジョブが割り当てられます。
新しくデプロイした Azure CycleCloud によって管理されるクラスターを、ジョブ固有のリソース ニーズを考慮して変更する必要があります。 この目標を実現するため、基になるテンプレートにさらに変更を適用し、アプローチを検証します。
この演習では、次のタスクを行います。
- タスク 1: ノード配列の定義を Azure CycleCloud テンプレートに追加する
- タスク 2: グラフィカル インターフェイスのパラメーターを Azure CycleCloud テンプレートに追加する
- タスク 3: Azure CycleCloud クラスターのプロパティをエクスポートする
- タスク 4: プロパティ ファイルを編集して新しいパラメーターを含める
- タスク 5: 変更されたテンプレートとパラメーター ファイルを既存のクラスターにインポートする
注
この演習を開始する前に、前の演習が正しく完了していることを確認します。
タスク 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.txtnano エディターのインターフェイスで、
[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注
Windows コンピューターを使用している場合は、 Shift + Insert キーの組み合わせを使用してクリップボードの内容を貼り付けることができます。
注
この変更によって、追加のノード配列が定義されます。
タスク 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.ClusterInitSpecsCtrl + O キーの組み合わせを選択し、Enter キーを押してから、Ctrl + X キーの組み合わせを選択して行った変更を保存し、ファイルを閉じます。
タスク 3: Azure CycleCloud クラスターのプロパティをエクスポートする
Azure CycleCloud テンプレートで行った構成の変更をターゲット クラスターに適用する前に、まずクラスターのプロパティをエクスポートする必要があります。
Cloud Shell で次のコマンドを実行して、既存のクラスターを一覧表示します。
cyclecloud show_cluster注
出力に 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.jsonnano エディターで、ファイルの末尾までスクロールし、次の内容を閉じ中かっこ (}) の前に新しい行から始めて追加します。
"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注
既存のクラスターの構成を上書きするには、ターゲット クラスターの名前と
--forceフラグを指定する必要があります。コンピューターで別のブラウザー ウィンドウを開き、 https://<IP_address> URL に移動します。 メッセージが表示されたら、続行を確認します。
認証を求めるメッセージが表示されたら、Azure CycleCloud CLI の構成に使用したものと同じ Azure CycleCloud アプリケーションのユーザー アカウントの資格情報を入力してサインインします。
Azure CycleCloud グラフィカル インターフェイスで、[ クラスター ] ページに移動します。 クラスターの一覧で、 contoso-custom-slurm-lab-cluster エントリを選択し、[ 編集] を選択します。
[ Contoso-custom-slurm-lab-cluster の編集 ] ポップアップ ウィンドウの [ 概要 ] ページで、[ 次へ ] を選択します。
[必須の設定] ページで、Standard_NC6値に設定された CUDA VM の種類エントリと、対応する自動スケール オプションが存在することを確認します。
お疲れさまでした。 このモジュールの 2 番目の演習が正常に完了しました。 この演習では、新しいノード配列と対応するパーティションの定義が含まれる変更したテンプレートを使用して、Azure CycleCloud クラスターをさらにカスタマイズしました。 この目標を達成するために、テンプレートを編集した後、クラスター パラメーター ファイルをエクスポートして編集し、それを変更したテンプレートと共にクラスターにインポートしました。
注
次の演習を実行する予定がある場合は、この演習でデプロイおよび構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。