安裝雲原生AI套件的調度組件ack-ai-installer之後,您可以為GPU節點打上調度屬性標籤,協助GPU節點啟用共用GPU調度、GPU拓撲感知調度等能力。本文介紹GPU節點調度屬性標籤及如何切換標籤的值。
GPU節點調度屬性標籤說明
標籤ack.node.gpu.schedule
分類 | 標籤值 | 是否可以切換到其他標籤值 | 說明 |
獨佔GPU調度 | default | 可切換至:
|
|
共用GPU調度 | cgpu | 可切換至:
|
|
core_mem | 可切換至:
|
| |
share | 可切換至:
|
| |
GPU拓撲感知調度 | topology | 可切換至:
|
|
動態劃分MIG | mig | 不可切換。 |
|
標籤ack.node.gpu.placement
分類 | 標籤值 | 是否可以切換到其他標籤值 | 說明 |
共用GPU調度 | spread | 可切換至:binpack |
|
binpack | 可切換至:spread |
|
標籤值切換
使用kubectl label nodes
或通過控制台節點標籤管理功能切換標籤值存在的問題
當一個GPU節點從一種GPU資源調度能力A切換到另一種GPU資源調度能力B時,直接使用kubectl label nodes
命令切換節點GPU調度屬性標籤值,或在Container Service管理主控台的節點頁面使用標籤管理功能切換節點標籤,會引發以下問題。
該GPU節點上可能還存在使用GPU資源的應用,這些應用是以A方式在申請GPU資源。節點的能力由A切換到B以後,調度器維護該節點GPU資源的賬本也會發生變化,導致節點上已經申請GPU資源的應用被遺漏。此時,調度器對該節點上的GPU資源賬本與節點上實際分配GPU資源的情況不一致,導致GPU應用之間相互影響。
某些能力是需要在節點上設定一些配置,當使用
kubectl label nodes
或通過控制台節點標籤管理功能切換節點標籤值時,系統並不會重設節點上先前的配置,可能造成GPU節點啟用的新的GPU資源調度能力失敗。
基於以上問題,強烈建議您使用節點池劃分GPU資源調度能力。
基於節點池劃分GPU資源調度能力
假設現在您的一個叢集需要同時使用GPU資源調度能力中的“共用GPU調度(僅顯存隔離)”和“共用GPU調度(顯存隔離和算力限制)”。那麼可以在這個叢集中建立兩個節點池:
節點池A:用於管理僅支援顯存隔離的節點。
節點池B:用於管理支援顯存隔離和算力限制的節點。
同時如果一個GPU節點需要從一種GPU資源調度能力(例如上面的A)切換到另一種GPU資源調度能力(例如上面的B),需要將該節點從一個節點池(節點池A)中移除,然後再將該節點添加到另一個節點池(節點池B)中。詳細操作,請參見移除節點和添加已有節點。
手動切換節點GPU資源調度能力
除了基於節點池劃分GPU資源調度能力以外,您也可以手動切換。手動切換步驟比較複雜,下面是節點狀態流轉及操作,包括:
節點下線:先將節點置為不可調度,不讓節點接收新的Pod。
排空節點:排空節點上的已有運行Pod。
登入節點進行重設操作:登入到節點,進行重設操作。重設操作因不同的標籤值而有所不同。詳細資料,請參見標籤配置重設。
切換節點標籤:進行重設操作以後,可以使用
kubectl label
給節點打上對應標籤。節點上線:標籤打完後,上線節點。
標籤配置重設
分類 | 標籤 | 切換到其他標籤之前需要的節點重設操作 |
共用GPU調度 | ack.node.gpu.schedule=cgpu | bash /usr/local/cgpu-installer/uninstall.sh |
ack.node.gpu.schedule=core_mem | bash /usr/local/cgpu-installer/uninstall.sh |
相關文檔
GPU節點卡型屬性標籤基本資料以及如何使業務運行或不運行在指定卡型上。詳細資料,請參見GPU節點卡型屬性標籤。