在ACK託管叢集Pro版叢集中部署GPU計算任務時,可通過為GPU節點分配調度屬性標籤(如獨佔、共用、拓撲感知等)和指定卡型標籤(卡型調度),實現資源使用率最佳化與應用精準調度。
調度標籤介紹
GPU調度標籤通過標識GPU型號、資源分派策略等資訊,實現資源精細化管理與高效調度。
調度模式 | 標籤值 | 適用情境 |
獨佔調度(預設) |
| 效能要求高、需獨佔整卡的任務,如模型訓練、HPC等。 |
共用調度 |
| 提升 GPU 利用率,適用於多租戶、推理等多個輕量型工作並發啟動並執行情境。
|
| 適用於在開啟
| |
拓撲感知調度 |
| 根據單機內GPU物理拓撲關係,為Pod自動分配通訊頻寬最優的GPU組合,適用於對GPU之間通訊延遲敏感的任務。 |
卡型調度 |
配合卡型調度設定GPU任務的顯存容量、總GPU卡數。 | 將任務調度到指定 GPU 型號的節點上,或避開特定型號。 |
開啟調度功能
一個節點只能啟用一種 GPU 調度模式(獨佔、共用或拓撲感知)。啟用後,其他調度模式所上報的擴充資源將自動置為 0。
獨佔調度
節點未添加任何GPU調度標籤,則預設啟用獨佔調度。此時,節點以單張GPU卡為最小配置單位,為Pod提供GPU資源。
若已開啟其他GPU調度模式,僅刪除標籤無法恢複獨佔調度,需手動將標籤值修改為ack.node.gpu.schedule: default才能恢複獨佔調度能力。共用調度
共用調度,僅支援ACK託管叢集Pro版。具體資訊,請參見使用限制。
安裝共用調度組件
ack-ai-installer。登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在雲原生AI套件頁面,單擊一鍵部署。在一鍵部署雲原生AI套件頁面,選中調度策略擴充(批量任務調度、GPU共用、GPU拓撲感知)。
如何設定cGPU服務支援的算力調度Policy策略,請參見安裝並使用cGPU服務。
在雲原生AI套件頁面,單擊部署雲原生AI套件。
在雲原生AI套件頁面組件列表,查看已安裝的共用GPU組件ack-ai-installer。
開啟共用調度功能。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點池頁面,單擊建立節點池配置節點標籤,單擊確認配置。
其餘配置項資訊可保持預設。關於節點標籤的使用情境,請參見調度標籤介紹。
配置基礎共用調度。
單擊節點標籤(Labels)的
,設定鍵為ack.node.gpu.schedule,可選擇配置cgpu、core_mem、share、mps(需安裝MPS Control Daemon組件)標籤值之一。配置多卡共用調度。
當節點包含多張GPU卡,最佳化多GPU卡資源的分配策略時,可在基礎共用調度上,進一步配置多卡共用調度。
單擊節點標籤(Labels)的
,設定鍵為ack.node.gpu.placement,可選擇配置binpack、spread標籤值之一。
驗證是否已開啟共用調度功能。
cgpu/share/mps將變數<NODE_NAME>替換為目標節點名稱後,執行以下命令,驗證節點池是否開啟
cgpu/share/mps共用調度功能。kubectl get nodes <NODE_NAME> -o yaml | grep -q "aliyun.com/gpu-mem"預期輸出:
aliyun.com/gpu-mem: "60"aliyun.com/gpu-mem欄位不為0,說明已開啟cgpu/share/mps共用調度功能。core_mem將變數
<NODE_NAME>替換為目標節點名稱後,執行以下命令,驗證節點池是否開啟core_mem共用調度功能。kubectl get nodes <NODE_NAME> -o yaml | grep -E 'aliyun\.com/gpu-core\.percentage|aliyun\.com/gpu-mem'預期輸出:
aliyun.com/gpu-core.percentage:"80" aliyun.com/gpu-mem:"6"欄位
aliyun.com/gpu-core.percentage和aliyun.com/gpu-mem均不為0,說明已開啟core_mem共用調度功能。binpack使用共用GPU調度GPU資源查詢工具,執行以下命令,查詢節點GPU資源分派情況:
kubectl inspect cgpu預期輸出:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 15/15 9/15 0/15 0/15 24/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 24/60 (40%)輸出結果表明,GPU0資源已全部分配15/15,GPU1已指派資源為9/15,符合優先填滿一張GPU後再分配下一張的調度策略,
binpack策略生效。spread使用共用調度GPU資源查詢工具,執行以下命令,查詢節點GPU資源分派情況:
kubectl inspect cgpu預期輸出:
NAME IPADDRESS GPU0(Allocated/Total) GPU1(Allocated/Total) GPU2(Allocated/Total) GPU3(Allocated/Total) GPU Memory(GiB) cn-shanghai.192.0.2.109 192.0.2.109 4/15 4/15 0/15 4/15 12/60 -------------------------------------------------------------------------------------- Allocated/Total GPU Memory In Cluster: 12/60 (20%)輸出結果表明,GPU0已指派資源4/15,GPU1已指派資源為4/15,GPU3已指派資源為4/15,符合優先將Pod分散到不同GPU上的調度策略,
spread策略生效。
拓撲感知調度
拓撲感知調度,僅支援ACK託管叢集Pro版。具體資訊,請參見系統組件版本要求。
開啟拓撲感知調度功能。
將變數<NODE_NAME>替換為目標節點名稱後,執行以下命令,為節點增加Label,顯式啟用節點的GPU拓撲感知調度功能。
kubectl label node <NODE_NAME> ack.node.gpu.schedule=topology節點啟用GPU拓撲感知調度後,不再支援非拓撲感知GPU資源的調度。可以執行
kubectl label node <NODE_NAME> ack.node.gpu.schedule=default --overwrite命令更改Label,恢複獨佔調度。驗證是否已開啟拓撲感知調度功能。
將變數<NODE_NAME>替換為目標節點名稱後,執行以下命令,驗證節點池是否開啟
topology拓撲感知調度功能。kubectl get nodes <NODE_NAME> -o yaml | grep aliyun.com/gpu預期輸出:
aliyun.com/gpu: "2"aliyun.com/gpu欄位不為0,說明已開啟topology拓撲感知調度功能。
卡型調度
將任務調度到指定 GPU 型號的節點上,或避開特定型號。
查看節點GPU卡型。
執行以下命令,在叢集中查詢節點的GPU卡型。
節點GPU卡型名稱:NVIDIA_NAME欄位。
kubectl get nodes -L aliyun.accelerator/nvidia_name預期輸出如下:
NAME STATUS ROLES AGE VERSION NVIDIA_NAME cn-shanghai.192.XX.XX.176 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GB cn-shanghai.192.XX.XX.177 Ready <none> 17d v1.26.3-aliyun.1 Tesla-V100-SXM2-32GB開啟卡型調度。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在任務頁面,單擊使用YAML建立資源。使用如下樣本建立應用,並開啟卡型調度功能。

指定特定卡型
利用GPU卡型調度標籤,讓業務運行在指定卡型的節點上。
將
aliyun.accelerator/nvidia_name: "Tesla-V100-SXM2-32GB"代碼中Tesla-V100-SXM2-32GB替換為節點實際卡型。建立成功後,可以在左側導覽列中選擇。在容器組列表中,可看到一個樣本Pod(容器組)成功調度到對應的節點上,從而實現基於GPU卡型調度標籤的靈活調度。
屏蔽特定卡型
利用GPU卡型調度標籤,通過節點親和性與反親和性,避免讓業務運行在某些卡型上。
將
values: - "Tesla-V100-SXM2-32GB"中Tesla-V100-SXM2-32GB替換為節點實際卡型。建立成功後,應用不會調度到標籤鍵為
aliyun.accelerator/nvidia_name且對應值為Tesla-V100-SXM2-32GB的節點,但允許調度到其他卡型的GPU節點。
