演習 - 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 テンプレート内にノード配列の定義を追加します。 サンプル テンプレートには、hpchtc というラベルが付いた 2 つのパーティションが含まれています。 Compute Unified Device Architecture (CUDA) の機能を利用するジョブのために、別のパーティションと対応するノード配列を作成します。

  1. Azure Portal に移動します。 プロンプトが表示されたら、このモジュールで使用する Azure サブスクリプションの共同作成者または所有者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントで認証します。

  2. Azure portal で、ツール バーの検索テキスト ボックスの横にあるアイコンを選択して Cloud Shell を開き、Bash セッションを実行していることを確認します。

  3. Cloud Shell で次のコマンドを実行して、作業ディレクトリを、前の演習でフェッチした GitHub リポジトリをホストするディレクトリに設定します。

    cd ~/cyclecloud-slurm/templates
    
  4. 次のコマンドを実行し、ダウンロードしたテンプレートを nano エディターで開きます。

    nano slurm.txt
    
  5. 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 のグラフィカル インターフェイスでテンプレート パラメーターの値を変更できるようにするため、テンプレートにさらに変更を適用します。

  1. nano エディターのインターフェイスで、[[parameters Auto-Scaling]] セクションまでスクロールし、そのすぐ前に次の内容を追加します。

    
        [[[parameter CUDAMachineType]]]
        Label = CUDA VM Type
        Description = The VM type for CUDA execute nodes
        ParameterType = Cloud.MachineType
        DefaultValue = Standard_NC24
    
    
  2. [[[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
    
    
  3. [[[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"}
    
    
  4. [[parameters Advanced Networking]] セクションまでスクロールし、そのすぐ前に次の内容を追加します。

    
        [[[parameter CUDAClusterInitSpecs]]]
        Label = CUDA Cluster-Init
        DefaultValue = =undefined
        Description = Cluster init specs to apply to CUDA execute nodes
        ParameterType = Cloud.ClusterInitSpecs
    
    
  5. Ctrl + O キーの組み合わせを押し、Enter キーを押してから、Ctrl + X キーの組み合わせを押し、行った変更を保存してファイルを閉じます。

タスク 3: Azure CycleCloud クラスターのプロパティをエクスポートする

Azure CycleCloud テンプレートで行った構成の変更をターゲット クラスターに適用する前に、まずクラスターのプロパティをエクスポートする必要があります。

  1. Cloud Shell で次のコマンドを実行して、既存のクラスターを一覧表示します。

    cyclecloud show_cluster
    

    Note

    出力に contoso-custom-slurm-lab-cluster エントリが含まれていることを確認します。

  2. 次のコマンドを実行して、contoso-custom-slurm-lab-cluster クラスターのパラメーターとその値のリストを、params.json ファイルにエクスポートします。

    cyclecloud export_parameters contoso-custom-slurm-lab-cluster > ~/params.json
    
  3. 次のコマンドを実行して、エクスポートされたパラメーターとその値のリストを確認します。

    cat ~/params.json
    

タスク 4: プロパティ ファイルを編集して新しいパラメーターを含める

Azure CycleCloud テンプレートに適用した編集で新しく導入したパラメーターはすべて既定値でしたが、特定の要件に合わせて変更することが必要になる場合があります。 このタスクでは、CUDAMachineType パラメーターと MaxCUDAExecuteCoreCount パラメーターの値を設定します。

  1. Cloud Shell で次のコマンドを実行して、ダウンロードしたパラメーター ファイルを nano エディターで開きます。

    nano ~/params.json
    
  2. nano エディターで、ファイルの末尾までスクロールし、右中かっこ (}) の前に、新しい行で始まる次の内容を追加します。

       "CUDAMachineType" : "Standard_NC6",
       "MaxCUDAExecuteCoreCount" : 60
    
  3. 前の手順で追加した行の前の行の末尾にコンマを追加します。

       "CUDAMachineType" : "Standard_NC6"
    
  4. Ctrl + O キーの組み合わせを押し、Enter キーを押してから、Ctrl + X キーの組み合わせを押し、行った変更を保存してファイルを閉じます。

タスク 5: 変更されたテンプレートとパラメーター ファイルを既存のクラスターにインポートする

最後に、変更したテンプレートとそのパラメーター ファイルを既存のクラスターにインポートして、現在の構成をオーバーライドします。

  1. Cloud Shell で次のコマンドを実行して、変更したテンプレートとそのパラメーター ファイルを既存のクラスターにインポートします。

    cyclecloud import_cluster contoso-custom-slurm-lab-cluster --file ~/cyclecloud-slurm/templates/slurm.txt -p ~/params.json -c Slurm --force
    

    Note

    既存のクラスターの構成を上書きするには、ターゲット クラスターの名前と --force フラグを指定する必要があります。

  2. お使いのコンピューターで別のブラウザー ウィンドウを開き、URL https://<IP アドレス> に移動します。 メッセージが表示されたら、続行を確認します。

  3. 認証を求めるメッセージが表示されたら、Azure CycleCloud CLI の構成に使用したものと同じ Azure CycleCloud アプリケーションのユーザー アカウントの資格情報を入力してサインインします。

  4. Azure CycleCloud のグラフィカル インターフェイスで [クラスター] ページに移動します。 クラスターの一覧で、contoso-custom-slurm-lab-cluster エントリを選び、[編集] を選びます。

  5. [Edit contoso-custom-slurm-lab-cluster](contoso-custom-slurm-lab-cluster の編集) ポップアップ ウィンドウの [About](情報) ページで、[次へ] を選択します。

  6. [Required Settings](必須の設定) ページで、値が Standard_NC6 に設定されている [CUDA VM Type](CUDA VM の種類) エントリが存在することと、対応する自動スケーリング オプションを確認します。

[contoso-custom-slurm-lab-cluster の編集] ポップアップ ウィンドウの [必須設定] ページのスクリーンショット。

お疲れさまでした。 このモジュールの 2 番目の演習が正常に完了しました。 この演習では、新しいノード配列と対応するパーティションの定義が含まれる変更したテンプレートを使用して、Azure CycleCloud クラスターをさらにカスタマイズしました。 この目標を達成するために、テンプレートを編集した後、クラスター パラメーター ファイルをエクスポートして編集し、それを変更したテンプレートと共にクラスターにインポートしました。

Note

次の演習を実行する予定がある場合は、この演習でデプロイおよび構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。