描述如何執行 Slurm 搭配 Azure CycleCloud

已完成

完成本單元之後,您應該能夠在 Azure CycleCloud 上使用 Slurm。

在 CycleCloud 上啟用 Slurm

執行下列步驟,即可使用 Azure CycleCloud 來部署高效能運算 (HPC) 叢集:

  1. 連結到已部署的 Azure CycleCloud 執行個體並驗證。

  2. 在 [建立新叢集] 頁面上,檢閱可用的選項,然後在 [排程器] 區段中選取 [Slurm]

    螢幕擷取畫面描述 Azure CycleCloud Web 應用程式的 [建立新叢集] 頁面。

  3. 在 [新增 Slurm 叢集] 頁面的 [關於] 索引標籤上,於 [叢集名稱] 文字方塊中提供 Slurm 叢集的名稱。

  4. 在 [新增 Slurm 叢集] 頁面的 [必要的設定] 索引標籤上,於 [叢集名稱] 文字方塊中進行下列設定:

    • 區域:定義哪些資料中心將裝載叢集節點。
    • 排程器 VM 類型:可讓您指定將託管工作排程器的虛擬機器 VM SKU。
    • HPC VM 類型:可讓您指定將託管 HPC 分割區工作負載的虛擬機器 VM SKU。
    • HTC VM 類型:可讓您指定將託管 HTC 分割區工作負載的虛擬機器 VM SKU。
    • 自動調整:可讓您在需要或不再需要這些節點時,啟用或停用託管分割區節點的 VM 執行個體啟動和停止。
    • 最大 HPC 核心:自動調整時可配置給 HPC 分割區的最大 CPU 核心數目。
    • 最大 HTC 核心:自動調整時可配置給 HTC 分割區的最大 CPU 核心數目。
    • 每個擴展集的 VM 數目上限:可用來裝載分割區工作負載的 VM 數目上限。
    • 使用現成執行個體:確認是否要允許使用 Azure 現成執行個體。 雖然現成執行個體的執行成本相當便宜,但您可以將其移除,而不會因為警告而影響作業執行。
    • 子網路識別碼:將託管叢集節點 VM 的 Azure 虛擬網路子網。

    螢幕擷取畫面描述 Azure CycleCloud Web 應用程式中 [新增 Slurm 叢集] 頁面的 [必要的設定] 索引標籤。

  5. 在 [網路連結儲存體] 頁面上,設定您要使用 [內建] 還是 [外部 NFS] 選項進行網路連結儲存體掛接。 當您選取 [內建] 時,排程器節點會設定為 NFS 伺服器,以作為其他節點的掛接點。 如果您指定 [外部 NFS],則可以提供網路連結儲存體的詳細資料,例如 Azure NetApp Files、HPC Cache,或特別設定、執行 NFS 伺服器的 VM。

  6. 在 [進階設定] 頁面上,您可以指定下列設定:

    • Slurm 版本:選擇要與叢集搭配使用的 Slurm 版本。
    • 作業計量:指定是否要啟用作業計量,以及您選擇儲存計量資料的設定。
    • 關機原則:您可以選擇終止執行個體或解除配置執行個體。
    • 認證:連線至相關 Azure 訂用帳戶的認證。
    • 排程器作業系統:選擇要用來裝載排程器的 Linux 作業系統。
    • HPC 作業系統:指定要用來裝載排程器的 Linux 作業系統。
    • 排程器叢集 Init:在此,您可以指定要套用至排程器 VM 的自訂指示。
    • UCR 叢集 Init:指定要套用至 HTC 節點的自訂指示。
    • 進階網路:此選項可讓您啟用 [傳回 Proxy],無論是否可以從網際網路位址存取前端節點,以及無論是否可以從網際網路存取執行節點。

    螢幕擷取畫面描述 Azure CycleCloud Web 應用程式中 [新增 Slurm 叢集] 頁面的 [進階設定] 索引標籤。

  7. Cloud-init 頁面可讓您在部署虛擬機器節點之後,將自訂組態設定傳遞至虛擬機器節點。

記憶體設定

CycleCloud 會自動設定 Slurm 用於排程用途的可用記憶體數量。 由於不同的 Linux 核心選項可能會導致可用記憶體量略有變化,而且作業系統和 VM 可能會佔用少量本來可用於作業的記憶體量,因此 CycleCloud 會自動減少 Slurm 配置中的記憶體量。 根據預設,CycleCloud 會保留 VM 中報告可用記憶體的 5%,但您可以將 slurm.dampen_memory 設定為要保留的記憶體百分比,以在叢集範本中覆寫此值。 例如,若要保留 20% 的 VM 記憶體,請使用:

slurm.dampen_memory=20

設定 Slurm 分割區

隨附於 Azure CycleCloud 的預設範本有兩個分割區 (HPC 和 HTC),且您可以定義直接對應至 Slurm 分割區的自訂節點陣列。 例如,若要建立 GPU 分割區,請將下列區段新增至叢集範本:

[[nodearray gpu]]
    MachineType = $GPUMachineType
    ImageName = $GPUImageName
    MaxCoreCount = $MaxGPUExecuteCoreCount
    Interruptible = $GPUUseLowPrio
    AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs

        [[[configuration]]]
        slurm.autoscale = true
        # Set to true if nodes are used for tightly-coupled multi-node jobs
        slurm.hpc = false

        [[[cluster-init cyclecloud/slurm:execute:2.0.1]]]
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic

編輯現有的 Slurm 叢集

如果您修改並套用現有 Slurm 叢集的變更,則必須重建 slurm.conf 檔案,並更新叢集中的現有節點。 您可以使用指令碼來執行此動作,其位置在使用名為 cyclecloud_slurm.sh 的特殊指令碼部署於 Azure cyclecloud 中的 Slurm 叢集上。 該指令碼位於 Slurm 排程器節點上的 /opt/cycle/slurm 目錄中。 對叢集進行任何變更之後,請使用 apply_changes 參數以根身分執行下列指令碼。 例如,如果您所做的變更會影響參與訊息傳遞介面 (MPI) 分割區的節點,請使用 /opt/cycle/slurm/cyclecloud_slurm.sh apply_changes

停用節點或分割區的自動調整

您可以直接編輯 slurm.conf 檔案,以停用執行中 Slurm 叢集的自動調整。 您可以排除個別節點或整個分割區,使其無法自動調整。

若要從自動調整中排除節點或多個節點,請將 SuspendExcNodes=<listofnodes> 新增至 Slurm 組態檔。 例如,若要從 HPC 分割區中排除節點 1 和 2,請將下列內容新增至 /sched/slurm.conf,然後重新啟動 slurmctld 服務:

SuspendExcNodes=hpc-pg0-[1-2]

若要排除分割區,您也可以修改 /sched/slurm.conf 檔案。 例如,若要從自動調整中排除 HPC 分割區,請將下列這一行新增至 slurm.conf,然後重新啟動 slurmctld 服務:

SuspendExcParts=hpc