GPU節(jié)點(diǎn)調(diào)度屬性標(biāo)簽說明及標(biāo)簽值的切換方法
安裝云原生AI套件的調(diào)度組件ack-ai-installer之后,您可以為GPU節(jié)點(diǎn)打上調(diào)度屬性標(biāo)簽,幫助GPU節(jié)點(diǎn)啟用共享GPU調(diào)度、GPU拓?fù)涓兄{(diào)度等能力。本文介紹GPU節(jié)點(diǎn)調(diào)度屬性標(biāo)簽及如何切換標(biāo)簽的值。
GPU節(jié)點(diǎn)調(diào)度屬性標(biāo)簽說明
標(biāo)簽ack.node.gpu.schedule
分類 | 標(biāo)簽值 | 是否可以切換到其他標(biāo)簽值 | 說明 |
獨(dú)占GPU調(diào)度 | default | 可切換至:
|
|
共享GPU調(diào)度 | cgpu | 可切換至:
|
|
core_mem | 可切換至:
|
| |
share | 可切換至:
|
| |
GPU拓?fù)涓兄{(diào)度 | topology | 可切換至:
|
|
動(dòng)態(tài)劃分MIG | mig | 不可切換。 |
|
標(biāo)簽ack.node.gpu.placement
分類 | 標(biāo)簽值 | 是否可以切換到其他標(biāo)簽值 | 說明 |
共享GPU調(diào)度 | spread | 可切換至:binpack |
|
binpack | 可切換至:spread |
|
標(biāo)簽值切換
使用kubectl label nodes
或通過控制臺(tái)節(jié)點(diǎn)標(biāo)簽管理功能切換標(biāo)簽值存在的問題
當(dāng)一個(gè)GPU節(jié)點(diǎn)從一種GPU資源調(diào)度能力A切換到另一種GPU資源調(diào)度能力B時(shí),直接使用kubectl label nodes
命令切換節(jié)點(diǎn)GPU調(diào)度屬性標(biāo)簽值,或在容器服務(wù)管理控制臺(tái)的節(jié)點(diǎn)頁面使用標(biāo)簽管理功能切換節(jié)點(diǎn)標(biāo)簽,會(huì)引發(fā)以下問題。
該GPU節(jié)點(diǎn)上可能還存在使用GPU資源的應(yīng)用,這些應(yīng)用是以A方式在申請(qǐng)GPU資源。節(jié)點(diǎn)的能力由A切換到B以后,調(diào)度器維護(hù)該節(jié)點(diǎn)GPU資源的賬本也會(huì)發(fā)生變化,導(dǎo)致節(jié)點(diǎn)上已經(jīng)申請(qǐng)GPU資源的應(yīng)用被遺漏。此時(shí),調(diào)度器對(duì)該節(jié)點(diǎn)上的GPU資源賬本與節(jié)點(diǎn)上實(shí)際分配GPU資源的情況不一致,導(dǎo)致GPU應(yīng)用之間相互影響。
某些能力是需要在節(jié)點(diǎn)上設(shè)置一些配置,當(dāng)使用
kubectl label nodes
或通過控制臺(tái)節(jié)點(diǎn)標(biāo)簽管理功能切換節(jié)點(diǎn)標(biāo)簽值時(shí),系統(tǒng)并不會(huì)重置節(jié)點(diǎn)上先前的配置,可能造成GPU節(jié)點(diǎn)啟用的新的GPU資源調(diào)度能力失敗。
基于以上問題,強(qiáng)烈建議您使用節(jié)點(diǎn)池劃分GPU資源調(diào)度能力。
基于節(jié)點(diǎn)池劃分GPU資源調(diào)度能力
假設(shè)現(xiàn)在您的一個(gè)集群需要同時(shí)使用GPU資源調(diào)度能力中的“共享GPU調(diào)度(僅顯存隔離)”和“共享GPU調(diào)度(顯存隔離和算力限制)”。那么可以在這個(gè)集群中創(chuàng)建兩個(gè)節(jié)點(diǎn)池:
節(jié)點(diǎn)池A:用于管理僅支持顯存隔離的節(jié)點(diǎn)。
節(jié)點(diǎn)池B:用于管理支持顯存隔離和算力限制的節(jié)點(diǎn)。
同時(shí)如果一個(gè)GPU節(jié)點(diǎn)需要從一種GPU資源調(diào)度能力(例如上面的A)切換到另一種GPU資源調(diào)度能力(例如上面的B),需要將該節(jié)點(diǎn)從一個(gè)節(jié)點(diǎn)池(節(jié)點(diǎn)池A)中移除,然后再將該節(jié)點(diǎn)添加到另一個(gè)節(jié)點(diǎn)池(節(jié)點(diǎn)池B)中。詳細(xì)操作,請(qǐng)參見移除節(jié)點(diǎn)和添加已有節(jié)點(diǎn)。
手動(dòng)切換節(jié)點(diǎn)GPU資源調(diào)度能力
除了基于節(jié)點(diǎn)池劃分GPU資源調(diào)度能力以外,您也可以手動(dòng)切換。手動(dòng)切換步驟比較復(fù)雜,下面是節(jié)點(diǎn)狀態(tài)流轉(zhuǎn)及操作,包括:
節(jié)點(diǎn)下線:先將節(jié)點(diǎn)置為不可調(diào)度,不讓節(jié)點(diǎn)接收新的Pod。
排空節(jié)點(diǎn):排空節(jié)點(diǎn)上的已有運(yùn)行Pod。
登錄節(jié)點(diǎn)進(jìn)行重置操作:登錄到節(jié)點(diǎn),進(jìn)行重置操作。重置操作因不同的標(biāo)簽值而有所不同。詳細(xì)信息,請(qǐng)參見標(biāo)簽配置重置。
切換節(jié)點(diǎn)標(biāo)簽:進(jìn)行重置操作以后,可以使用
kubectl label
給節(jié)點(diǎn)打上對(duì)應(yīng)標(biāo)簽。節(jié)點(diǎn)上線:標(biāo)簽打完后,上線節(jié)點(diǎn)。
標(biāo)簽配置重置
分類 | 標(biāo)簽 | 切換到其他標(biāo)簽之前需要的節(jié)點(diǎn)重置操作 |
共享GPU調(diào)度 | 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 |
相關(guān)文檔
GPU節(jié)點(diǎn)卡型屬性標(biāo)簽基本信息以及如何使業(yè)務(wù)運(yùn)行或不運(yùn)行在指定卡型上。詳細(xì)信息,請(qǐng)參見GPU節(jié)點(diǎn)卡型屬性標(biāo)簽。