首頁 > AI資訊 > 最新資訊 > 深度學(xué)習(xí)時(shí)代,Kubernetes調(diào)度的創(chuàng)新實(shí)踐

深度學(xué)習(xí)時(shí)代,Kubernetes調(diào)度的創(chuàng)新實(shí)踐

新火種    2024-11-16

如今,人工智能領(lǐng)域的開發(fā)者越來越多地接受 Kubernetes 作為實(shí)際的容器編排工具,當(dāng)大家共享計(jì)算資源時(shí),一個(gè)公平調(diào)度的方案成為了迫切需求。尤其是在深度學(xué)習(xí)工作負(fù)載需要持續(xù)長時(shí)間運(yùn)行的情況下,決定哪位用戶將獲得下一個(gè) GPU 資源變得尤為關(guān)鍵。一個(gè)錯(cuò)誤的決策可能導(dǎo)致某些用戶或任務(wù)長時(shí)間無法獲得所需資源,這種資源短缺可能對(duì)整體業(yè)務(wù)進(jìn)度產(chǎn)生負(fù)面影響。因此,制定一個(gè)合理、公平的調(diào)度方案,確保資源分配效率,對(duì)于推動(dòng)人工智能開發(fā)的順利進(jìn)行至關(guān)重要。

 01

  調(diào)度問題有哪些

在本文中,我們將從以下幾個(gè)方面為大家解釋關(guān)于調(diào)度的相關(guān)問題:

  Kubernetes 調(diào)度 Pod 的方式

簡(jiǎn)單來說,Kubernetes 調(diào)度器會(huì)選擇一個(gè)狀態(tài)為 pending 的 Pod,然后嘗試將這個(gè) Pod 綁定到最合適的節(jié)點(diǎn)上,但調(diào)度器是如何挑選正確 Pod 的呢?默認(rèn)的調(diào)度器將狀態(tài)為 pending(掛起)的那些 Pod 存儲(chǔ)在一個(gè)堆數(shù)據(jù)結(jié)構(gòu)中。這個(gè)堆會(huì)根據(jù) Pod 的優(yōu)先級(jí)和創(chuàng)建時(shí)間對(duì) Pod 進(jìn)行排序,并按照這個(gè)順序進(jìn)行資源的分配。如果在共享集群中使用默認(rèn)的 Kubernetes 調(diào)度器,在 GPU 數(shù)量有限時(shí),可能會(huì)引起公平性問題,因?yàn)槟承┤蝿?wù)很容易壟斷整個(gè)集群的資源。

 壟斷 GPU 集群的方法

優(yōu)先級(jí):用戶壟斷 GPU 集群的一種方法是提交設(shè)置為最高優(yōu)先級(jí)的 Pod。這時(shí),他們的 Pod 會(huì)移到堆的頂部,從而首先被分配。最終,優(yōu)先級(jí)高的用戶就可以壟斷并使用集群中的所有 GPU。

批量提交:壟斷 GPU 集群的另一種方式是盡可能多地提交 Pod。這樣會(huì)導(dǎo)致堆中有更多的 Pod,并且縮短它們的創(chuàng)建時(shí)間。堆中的 Pod 數(shù)量越多, GPU 資源分配也就越多。

基于上述兩種情況的出現(xiàn),為了防止集群的壟斷,需要構(gòu)建一個(gè)調(diào)度程序,它可以在用戶之間公平地共享 GPU 資源,而不管創(chuàng)建時(shí)間和 Pod 優(yōu)先級(jí)如何。

 02

  Kubernetes

  調(diào)度框架

Kubernetes 的 V1.15 版本對(duì)調(diào)度器的架構(gòu)進(jìn)行了重大調(diào)整,采用了新的調(diào)度框架。這一框架采用了更為模塊化的設(shè)計(jì)思路,提供了多個(gè)擴(kuò)展接口,允許用戶根據(jù)需要調(diào)整調(diào)度器的工作方式。這一變化對(duì)于尋求默認(rèn)調(diào)度器替代方案的開發(fā)者來說是一個(gè)巨大的突破,因?yàn)樗?jiǎn)化了開發(fā)流程,減少了從零開始構(gòu)建調(diào)度器并持續(xù)集成 Kubernetes 新特性的工作量。

在 d.run 算力一體化方案中,「DaoCloud 道客」重新評(píng)估了這個(gè)新的調(diào)度框架,最終決定對(duì)此調(diào)度策略做升級(jí)。我們認(rèn)為現(xiàn)有的堆結(jié)構(gòu)限制了我們的調(diào)度策略,無法滿足我們對(duì)調(diào)度靈活性和效率的特定需求,并希望對(duì)此進(jìn)行改進(jìn)優(yōu)化調(diào)度過程,提高資源分配的效率和智能性。

  03

  d.run 調(diào)度策略

d.run 除了基礎(chǔ)的 Kubernetes 調(diào)度之外,還結(jié)合了開源項(xiàng)目 Kueue 的調(diào)度策略,可以采用公平調(diào)度、親和、組調(diào)度、緊湊等調(diào)度算法來應(yīng)對(duì)不同的算力場(chǎng)景。這避免了 GPU 資源浪費(fèi)、大任務(wù)長期占用影響小任務(wù)資源使用、碎片化資源的浪費(fèi)等常見的 GPU 利用率低下的問題。

  GPU 資源優(yōu)化

d.run 支持單塊物理卡切分給不同的租戶使用,并支持按照算力、顯存進(jìn)行 GPU 資源配額,這讓單個(gè)任務(wù)可以使用更多的 GPU 資源而無需關(guān)心本身的 GPU 數(shù)量。用戶在部署應(yīng)用時(shí)可按照 1% 的算力顆粒度和 1MB 的顯存顆粒度極致壓榨 GPU 資源,這有效提高資源利用率。同時(shí),它還可以支持集群、節(jié)點(diǎn)、應(yīng)用等多維度 GPU 資源的可視化監(jiān)控,能夠幫助運(yùn)維人員更好地管理 GPU 資源。

  GPU 調(diào)度的分配算法和搶占算法

為了盡可能保障資源的公平分配,我們會(huì)根據(jù)具體的應(yīng)用場(chǎng)景和性能要求采用不同的調(diào)度算法。這里簡(jiǎn)單介紹兩種常見的調(diào)度算法:分配算法和搶占算法。

  1. 分配算法:

靜態(tài)分配:在任務(wù)開始之前,根據(jù)任務(wù)的特性和需求,預(yù)先分配 GPU 資源。這種方法的優(yōu)點(diǎn)是可以避免運(yùn)行時(shí)的調(diào)度開銷,但缺點(diǎn)是不夠靈活,難以適應(yīng)任務(wù)執(zhí)行過程中的變化。

動(dòng)態(tài)分配:根據(jù)任務(wù)的實(shí)際執(zhí)行情況,實(shí)時(shí)調(diào)整資源分配。這種方法更加靈活,能夠更好地適應(yīng)任務(wù)需求的變化,但可能會(huì)增加調(diào)度的復(fù)雜性和開銷。

  2. 搶占算法:

搶占式調(diào)度:允許調(diào)度器在任務(wù)執(zhí)行過程中,根據(jù)某些策略(如優(yōu)先級(jí)、資源使用情況等)中斷當(dāng)前任務(wù),將資源重新分配給其他任務(wù)。這種方法可以提高資源的利用率,但可能會(huì)導(dǎo)致任務(wù)執(zhí)行的延遲增加。

非搶占式調(diào)度:任務(wù)一旦開始執(zhí)行,就會(huì)持續(xù)運(yùn)行直到完成,不會(huì)在中途被中斷。這種方法的優(yōu)點(diǎn)是可以減少任務(wù)切換的開銷,但可能會(huì)導(dǎo)致資源長時(shí)間被單一任務(wù)占用,影響其他任務(wù)的執(zhí)行。

在需要高吞吐量和實(shí)時(shí)性的場(chǎng)景中,可能會(huì)采用動(dòng)態(tài)分配和搶占式調(diào)度;而在需要低延遲和高確定性的場(chǎng)景中,則可能更傾向于靜態(tài)分配和非搶占式調(diào)度。

在 Kubernetes 中實(shí)現(xiàn)深度學(xué)習(xí)工作負(fù)載的公平調(diào)度是一項(xiàng)復(fù)雜但至關(guān)重要的任務(wù)。我們通過理解 Kubernetes 調(diào)度框架的演變,并在 d.run 平臺(tái)上整合多種調(diào)度策略,助力構(gòu)建一個(gè)高效且公平的算力調(diào)度引擎,以適應(yīng)不同的業(yè)務(wù)需求。這種綜合調(diào)度策略的實(shí)施,確保了資源的高效利用和公平分配,避免了資源浪費(fèi)和任務(wù)執(zhí)行的延遲,為深度學(xué)習(xí)工作負(fù)載提供了一個(gè)強(qiáng)大而靈活的解決方案。

相關(guān)推薦
免責(zé)聲明
本文所包含的觀點(diǎn)僅代表作者個(gè)人看法,不代表新火種的觀點(diǎn)。在新火種上獲取的所有信息均不應(yīng)被視為投資建議。新火種對(duì)本文可能提及或鏈接的任何項(xiàng)目不表示認(rèn)可。 交易和投資涉及高風(fēng)險(xiǎn),讀者在采取與本文內(nèi)容相關(guān)的任何行動(dòng)之前,請(qǐng)務(wù)必進(jìn)行充分的盡職調(diào)查。最終的決策應(yīng)該基于您自己的獨(dú)立判斷。新火種不對(duì)因依賴本文觀點(diǎn)而產(chǎn)生的任何金錢損失負(fù)任何責(zé)任。

熱門文章