共用方式為


OpenPBS

Azure CycleCloud 中的 OpenPBS 叢集類型提供健全且可調整的解決方案,可使用 PBS 專業版管理高效能運算 (HPC) 工作負載。 這種整合使用戶能夠透過簡化的配置和自動化在雲端部署和管理基於 PBS 的叢集。 如需詳細的設定指示、支援的功能和使用指引,請參閱 CycleCloud Open PBS 和 PBS 專業叢集專案 README

您可以在 CycleCloud 叢集上啟用 OpenPBS ,方法是在叢集定義的組態區段中變更 run_list 。 PBS Professional (PBS Pro) 叢集有兩個主要部分: 主要 節點,它會在共用文件系統上執行軟體,以及 執行 節點,該節點會掛接該文件系統並執行提交的作業。 例如,簡單的叢集範本代碼段可能如下所示:

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

當您在 CycleCloud 中匯入並啟動具有此定義的叢集時,您會取得單一 主要 節點。 您可以使用 命令,將cyclecloud add_node節點新增至叢集。 例如,若要新增10個更多 執行 節點,請使用:

cyclecloud add_node my-pbspro -t execute -c 10

PBS 資源型自動調整

CycleCloud 會維護兩個資源,以擴充動態布建功能。 這些資源是 nodearraymachinetype

當您提交作業並指定節點陣列資源qsub -l nodearray=highmem -- /bin/hostname時,CycleCloud 會將節點新增到名為highmem的節點陣列中。 如果節點陣列不存在,作業會保持閑置狀態。

當您在作業提交中指定機器類型資源時 (例如 qsub -l machinetype:Standard_L32s_v2 my-job.sh),CycleCloud 會自動調整 Standard_L32s_v2 (預設) 節點陣列中的 execute 機器。 如果節點陣列中 execute 沒有機器類型,作業會保持閑置狀態。

您可以將這些資源一體使用:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

只有在您在 Standard_HB60rs 節點陣列中指定 hpc 機器時,才會自動調整。

新增指派給節點陣列的額外佇列

在具有多個節點陣列的叢集上,建立個別的佇列,以自動將作業路由至適當的 VM 類型。 在此範例中,假設叢集範本中定義了下列 gpu 節點陣列:

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

匯入叢集範本並啟動叢集之後,請在伺服器節點上執行下列命令來建立 gpu 佇列:

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

備註

如範例所示,佇列定義會將佇列中的所有 VM 封裝成單一虛擬機擴展集,以支援 MPI 作業。 若要定義序列作業的佇列並允許多個虛擬機擴展集,請設定 ungrouped = true 用於 resources_defaultdefault_chunk。 如果您要排程器將工作壓縮到 VM 而不是循環配置工作,請設定 resources_default.place = pack。 如需 PBS 作業封裝的詳細資訊,請參閱官方 PBS 專業 OSS 檔

PBS Professional 設定參考

下表描述了您可以切換以自訂其功能的 PBS Professional(PBS Pro)的特定組態選項:

PBS Pro 選項 說明
pbspro.slots 要向 PBS Pro 報告的指定節點位置數目。 位置數目是節點可執行的並行作業數目。 此值預設為指定電腦上的CPU數目。 如果您不是根據 CPU,而是基於記憶體、GPU 和其他資源來執行工作,您可以覆寫此值。
pbspro.slot_type 節點提供的插槽類型名稱。 預設值為 'execute'。 當您使用硬式資源 slot_type=<type> 標記作業時,該作業 只會 在具有相同插槽類型的機器上執行。 此設定可讓您為每個節點建立不同的軟體和硬體組態,並確保正確的作業一律排程在正確的節點類型上。
pbspro.version 默認值:『18.1.3-0』。 此版本目前是預設且 一的選項,可供安裝和執行。 未來可能會支援更多版本的 PBS Pro 軟體。

使用 CycleCloud 連線 PBS

CycleCloud 會透過稱為的可安裝代理程式來管理 azpbs 叢集。 此代理程式會連線到 CycleCloud 以讀取叢集和 VM 組態。 它也會與 OpenPBS 整合,以處理作業和主機資訊。 您可以在 azpbs 檔案中找到所有 autoscale.json 組態,通常位於 /opt/cycle/pbspro/autoscale.json

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

重要檔案

代理 azpbs 程式在每次被呼叫時會剖析 PBS 組態,包含作業、佇列及資源。 代理程式會在命令的 stderr 和 stdout 中提供這項資訊,並且在可設定層級的記錄檔中也提供。 代理程式也會將所有 PBS 管理命令 (qcmd) 與自變數記錄到檔案。

您可以在安裝代理程式的 /opt/cycle/pbspro/ 目錄中找到所有這些檔案。

檔案 地點 說明
自動調整設定 autoscale.json 自動縮放、資源映射、CycleCloud 存取資訊的設定
自動調整記錄 autoscale.log 代理程式主要執行緒記錄,包括 CycleCloud 主機管理
需求記錄檔 demand.log 資源比對的詳細記錄
qcmd 追蹤記錄 qcmd.log 紀錄代理程式 qcmd 的調用
記錄設定 logging.conf 記錄遮罩和檔案位置的設定

定義 OpenPBS 資源

此專案可讓您透過 cyclecloud-pbspro (azpbs) 專案,將 OpenPBS 資源與 Azure VM 資源產生關聯。 您可以在 中 autoscale.json定義此資源關聯性。 叢集範本包含下列預設資源:

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

名為 mem 的 OpenPBS 資源對應至名為 node.memory的節點屬性,代表任何虛擬機的總記憶體。 此組態允許 azpbs 通過將作業資源需求的值與節點資源進行比較,來處理像 -l mem=4gb 這樣的資源請求。

目前,磁碟大小設定為 size::20g。 以下是如何處理 VM 大小特定磁碟大小的範例:

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

自動調整和規模設定

CycleCloud 會以不同的方式處理 OpenPBS 叢集中的跨越和串行作業。 跨越工作會落在屬於相同放置群組的節點上。 放置群組具有特定平台,這表示具有 SinglePlacementGroup=true 的 VirtualMachineScaleSet 和 CycleCloud 會管理每個跨節點集的具名放置群組。 請使用 PBS 資源 group_id 作為此放置組的名稱。

hpc 佇列使用原生佇列預設值來附加 -l place=scatter:group=group_id 的對等值。

安裝 CycleCloud OpenPBS 代理程式 azpbs

OpenPBS CycleCloud 叢集會管理伺服器節點上代理程式的安裝和設定。 準備步驟包括設定 PBS 資源、佇列和鉤子。 您也可以在 CycleCloud 之外執行腳本式安裝。

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

CycleCloud 支援跨排程器的標準自動停止屬性集:

屬性 說明
cyclecloud.cluster.autoscale.stop_enabled 啟用此節點上的自動停止。 是/否
cyclecloud.cluster.autoscale.idle_time_after_jobs 節點在工作自動停止前,完成工作之後閑置的時間量 (以秒為單位)。
cyclecloud.cluster.autoscale.idle_time_before_jobs 節點在自動停止之前的閒置時間(以秒為單位),即在完成所有作業後到停止前的時間。

備註

CycleCloud 不支援使用 Open PBS 的高載設定。

備註

雖然 Windows 是正式支援的 Open PBS 平臺,但 CycleCloud 目前不支援在 Windows 上執行 Open PBS。