全部產品
Search
文件中心

Container Service for Kubernetes:共用GPU調度概述

更新時間:Jun 19, 2024

本文為您介紹阿里雲共用GPU方案、共用GPU專業版的優勢、共用GPU的基礎版與專業版的功能對比及使用情境,協助您瞭解和更好地使用共用GPU的能力。

背景介紹

阿里雲Container Service for Kubernetes (ACK)開源了GPU共用調度之後,您能在阿里雲、AWS、GCE和自己資料中心的容器叢集上通過GPU共用調度架構實現多個容器運行在同一個GPU裝置上的目標。ACK開源GPU共用調度降低了使用GPU的經濟成本,但是如何能在節省經濟成本同時也能讓GPU上的容器運行更穩定呢?

隔離是一個關鍵的需求。如何限制運行在同一個GPU上的多個容器能夠按照自己申請的資源使用量運行,避免因為其資源用量超標影響同一個GPU上的其他容器的正常工作,對此業界也做了很多探索。NVIDIA vGPU、MPS和vCUDA方案,都為更小顆粒度的使用GPU提供了可能。

基於以上的需求,阿里雲Container Service團隊提供共用GPU方案,既能夠實現一個GPU供多個任務使用,同時也能夠實現一個GPU上對各應用申請的顯存實現隔離以及GPU的算力分割。

功能及優勢

阿里雲提供的共用GPU方案通過自主研發的宿主機核心驅動, 實現對NVIDIA GPU的底層nv驅動更有效利用。共用GPU功能如下:

  • 更加開放:適配開源標準的Kubernetes和NVIDIA Docker方案。

  • 更加簡單:優秀的使用者體驗。AI應用無需重編譯,無需構建新的容器鏡像進行CUDA庫替換。

  • 更加穩定:針對NVIDIA裝置的底層操作更加穩定和收斂,而CUDA層的API變化多端,同時一些Cudnn非開放的API也不容易捕獲。

  • 完整隔離:同時支援GPU的顯存和算力隔離。

阿里雲提供的共用GPU方案是一套低成本、可靠、方便使用的規模化GPU調度和隔離方案,歡迎使用。

優勢

說明

支援共用調度和顯存隔離。

  • 單Pod單GPU卡共用調度和顯存隔離,常用於支援模型推理情境。

  • 單Pod多GPU卡共用調度和顯存隔離,常用於支援分布式模型訓練代碼的開發。

支援共用和隔離策略的靈活配置。

  • 支援按GPU卡的Binpack和Spread演算法分配策略。

    • Binpack:多個Pod會優先集中共用使用同一GPU卡,適用於需要提升GPU卡利用率的情境。

    • Spread:多個Pod會盡量分散使用不同GPU卡,適用於GPU高可用情境。盡量避免將同一個應用的副本放置到同一個GPU裝置。

  • 支援只共用不隔離策略,適配於已有深度學習應用內已自建應用程式層隔離能力的情境。

  • 同時支援多卡共用和顯存隔離策略。

GPU資源全方位監控。

同時支援監控獨佔GPU和共用GPU。

計費介紹

共用GPU調度目前已實行收費。在使用共用GPU調度前,需開通雲原生AI套件。具體收費資訊,請參見雲原生AI套件計費說明

使用說明

目前共用GPU調度僅支援ACK叢集Pro版。關於如何安裝和使用共用GPU調度,請參考:

除此以外,還有一些進階能力,您可以根據業務需求選擇:

相關概念

共用GPU調度 vs 獨佔GPU調度

共用GPU調度指的是多個Pod共同使用一張GPU卡,如下圖:TU2.png

獨佔GPU調度指的是一個Pod完整佔用一張卡或多張卡。如下圖:TU1.png

顯存隔離

如果沒有GPU隔離模組參與,那麼共用GPU調度僅能夠保證多個Pod運行在一張GPU卡上,並不能解決Pod之間相互影響的問題。以下是一個顯存使用的例子。

假設Pod1需要申請5 GiB顯存使用,Pod2需要申請10 GiB顯存使用。在沒有GPU隔離模組的參與下,Pod1實際使用達到10 GiB,這會導致Pod2無法正常運行,相當於Pod1非法使用了5 GiB顯存。有了GPU隔離模組後,當Pod1試圖使用的GPU顯存大於申請的值時,隔離模組將讓Pod1失敗退出。TU3.png

節點選卡策略Binpack和Spread

在共用GPU調度中,如果節點存在多張GPU卡,從節點中挑選GPU卡分配給Pod時,有兩種策略可以考慮:

  • Binpack:預設策略,調度系統先分配完節點的一張GPU卡後,再分配節點上另一張GPU卡,避免節點出現GPU資源片段。

  • Spread:調度系統會盡量將Pod分散到這個節點的各個GPU上,避免一張GPU卡壞掉後,影響的業務過多。

以下樣本表示,某個節點有2張GPU卡,每張卡有15 GiB顯存,Pod1申請2 GiB顯存,Pod2申請3 GiB顯存。2.png

單卡共用 vs 多卡共用

  • 單卡共用:一個Pod僅申請一張GPU卡,佔用該GPU部分資源。

  • 多卡共用:一個Pod申請多張GPU卡,每張GPU提供部分資源,且每張GPU提供的資源量相同。

圖片1.png