本文為您介紹阿里云共享GPU方案、共享GPU專業版的優勢、共享GPU的基礎版與專業版的功能對比及使用場景,幫助您了解和更好地使用共享GPU的能力。
視頻介紹
背景介紹
阿里云容器服務 Kubernetes 版 ACK(Container Service for Kubernetes)開源了GPU共享調度之后,您能在阿里云和自己數據中心的容器集群上通過GPU共享調度框架實現多個容器運行在同一個GPU設備上的目標。ACK開源GPU共享調度降低了使用GPU的經濟成本,但是如何能在節省經濟成本同時也能讓GPU上的容器運行更穩定呢?
隔離是一個關鍵的需求。如何限制運行在同一個GPU上的多個容器能夠按照自己申請的資源使用量運行,避免因為其資源用量超標影響同一個GPU上的其他容器的正常工作,對此業界也做了很多探索。NVIDIA vGPU、MPS和vCUDA方案,都為更小顆粒度的使用GPU提供了可能。
基于以上的需求,阿里云容器服務團隊提供共享GPU方案,既能夠實現一個GPU供多個任務使用,同時也能夠實現一個GPU上對各個應用進行顯存隔離以及GPU算力分割的目標。
功能及優勢
阿里云提供的共享GPU方案通過自主研發的宿主機內核驅動, 實現對NVIDIA GPU的底層nv驅動更有效的利用。共享GPU功能如下:
更加開放:適配開源標準的Kubernetes和NVIDIA Docker方案。
更加簡單:優秀的用戶體驗。AI應用無需重編譯,無需構建新的容器鏡像進行CUDA庫替換。
更加穩定:針對NVIDIA設備的底層操作更加穩定和收斂,而CUDA層的API變化多端,同時一些Cudnn非開放的API也不容易捕獲。
完整隔離:同時支持GPU的顯存和算力隔離。
阿里云提供的共享GPU方案是一套低成本、可靠、用戶友好的規模化GPU調度和隔離方案,歡迎使用。
優勢 | 說明 |
支持共享調度和顯存隔離。 |
|
支持共享和隔離策略的靈活配置。 |
|
GPU資源全方位監控。 | 同時支持監控獨占GPU和共享GPU。 |
計費介紹
共享GPU調度目前已實行收費。在使用共享GPU調度前,需開通云原生AI套件。具體收費信息,請參見云原生AI套件計費說明。
使用說明
目前共享GPU調度僅支持ACK集群Pro版。關于如何安裝和使用共享GPU調度,請參考:
除此以外,還有一些進階能力,您可以根據業務需求選擇:
相關概念
共享GPU調度 vs 獨占GPU調度
共享GPU調度指的是多個Pod共同使用一張GPU卡,如下圖:
獨占GPU調度指的是一個Pod完整占用一張卡或多張卡。如下圖:
顯存隔離
如果沒有GPU隔離模塊參與,那么共享GPU調度僅能夠保證多個Pod運行在一張GPU卡上,并不能解決Pod之間相互影響的問題。以下是一個顯存使用的例子。
假設Pod1需要申請5 GiB顯存使用,Pod2需要申請10 GiB顯存使用。在沒有GPU隔離模塊的參與的情況下,Pod1實際使用達到10 GiB,這會導致Pod2無法正常運行,相當于Pod1非法使用了5 GiB顯存。有了GPU隔離模塊后,當Pod1試圖使用的GPU顯存大于申請的值時,隔離模塊將使Pod1失敗退出。
節點選卡策略Binpack和Spread
在共享GPU調度中,如果節點存在多張GPU卡,從節點中挑選GPU卡分配給Pod時,有兩種策略可以考慮:
Binpack:默認策略,調度系統先分配完節點的一張GPU卡后,再分配節點上另一張GPU卡,避免節點出現GPU資源碎片。
Spread:調度系統會盡量將Pod分散到這個節點的各個GPU上,避免一張GPU卡壞掉后,影響的業務過多。
以下示例表示,某個節點有2張GPU卡,每張卡有15 GiB顯存,Pod1申請2 GiB顯存,Pod2申請3 GiB顯存。
單卡共享 vs 多卡共享
單卡共享:一個Pod僅申請一張GPU卡,占用該GPU部分資源。
多卡共享:一個Pod申請多張GPU卡,每張GPU提供部分資源,且每張GPU提供的資源量相同。