全部產品
Search
文件中心

Container Service for Kubernetes:安裝共用GPU調度組件

更新時間:Nov 30, 2024

ACK提供GPU共用調度能力,服務於共用單GPU的模型預測情境,同時也支援通過NVIDIA驅動核心態保障GPU顯存的隔離。本文介紹如何在GPU節點上安裝共用GPU組件和GPU資源查詢工具,實現GPU的調度和隔離能力。

前提條件

使用限制

  • 請勿將共用GPU調度的節點的CPU Policy設定為static

  • cGPU服務的隔離功能不支援以UVM的方式申請顯存,即調用CUDA API cudaMallocManaged(),請使用其他方式申請顯存,例如調用cudaMalloc()等。更多資訊,請參見NVIDIA

  • 共用GPU的DaemonSet的Pod在節點上的優先順序不是最高的,所以節點資源有可能被其他優先順序高的Pod搶佔而導致被驅逐。如果想避免這個問題,可以對您實際使用的DaemonSet(如共用GPU顯存的gpushare-device-plugin-ds)進行修改,加上priorityClassName: system-node-critical來保證其優先順序。

  • 共用GPU組件的安裝沒有地區限制,但GPU顯存隔離能力僅在以下地區中支援,請確保對應叢集屬於以下地區。

    展開查看地區資訊

    地區

    地區ID

    華北2(北京)

    cn-beijing

    華東2(上海)

    cn-shanghai

    華東1(杭州)

    cn-hangzhou

    華北3(張家口)

    cn-zhangjiakou

    華北6(烏蘭察布)

    cn-wulanchabu

    華南1(深圳)

    cn-shenzhen

    西南1(成都)

    cn-chengdu

    華南2(河源)

    cn-heyuan

    中國香港

    cn-hongkong

    日本(東京)

    ap-northeast-1

    印尼(雅加達)

    ap-southeast-5

    新加坡

    ap-southeast-1

    美國(維吉尼亞)

    us-east-1

    美國(矽谷)

    us-west-1

    德國(法蘭克福)

    eu-central-1

  • 版本配套資訊

    配置

    支援版本

    Kubernetes版本

    1.18.8及以上

    Nvidia驅動版本

    ≥418.87.01

    容器運行時版本

    • Docker:19.03.5及以上

    • containerd:1.4.3及以上

    作業系統

    Alibaba Cloud Linux 3.x、Alibaba Cloud Linux 2.x、CentOS 7.6、CentOS 7.7、CentOS 7.9

    支援顯卡

    P系列、T系列、V系列、A系列、H系列

步驟一:安裝共用GPU組件

未部署雲原生AI套件

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > 雲原生AI套件

  3. 雲原生AI套件頁面,單擊一鍵部署

  4. 在一鍵部署雲原生AI套件頁面,選中調度組件(批量任務調度、GPU共用、GPU拓撲感知、NPU調度)。1

  5. (可選)單擊調度組件(批量任務調度、GPU共用、GPU拓撲感知、NPU調度)右側的進階配置。在彈出的參數配置視窗,修改cGPU的policy欄位。修改完成後,單擊確定

    如果對cGPU算力共用無特殊要求,建議使用預設policy: 5。cGPU支援的policy,請參見安裝並使用KuberGPU產品的cGPU服務2.jpg

  6. 雲原生AI套件頁面最下方,單擊部署雲原生AI套件

    組件安裝成功後,在雲原生AI套件頁面的組件列表中能看到已安裝的共用GPU組件ack-ai-installer

已部署雲原生AI套件

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > 雲原生AI套件

  3. 在組件ack-ai-installer所在行,單擊操作列的部署

  4. (可選)在彈出的參數配置視窗,修改cGPU的policy欄位。

    如果對cGPU算力共用無特殊要求,建議使用預設policy: 5。cGPU支援的policy,請參見安裝並使用KuberGPU產品的cGPU服務2.jpg

  5. 修改完成後,單擊確定

    組件安裝完成後,ack-ai-installer狀態已部署

步驟二:開啟GPU共用調度能力和顯存隔離能力

  1. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點池

  2. 節點池頁面,單擊建立節點池

  3. 建立節點池頁面,設定建立節點池的配置項,然後單擊確認配置

    以下為重要配置項的說明,其餘配置項的配置方法,請參見建立節點池

    配置項

    說明

    期望節點數

    設定節點池初始節點數量。如無需建立節點,可以填寫為0。

    節點標籤

    標籤的值需根據您的業務需求添加。關於節點標籤的詳細說明,請參見GPU節點調度屬性標籤

    下文以標籤值cgpu為例,該值表示節點開啟共用GPU調度能力,每個Pod僅需申請GPU顯存資源,多個Pod在一張卡上實行顯存隔離和算力共用。

    單擊節點標籤節點標籤,設定為ack.node.gpu.schedule,為cgpu。

    重要

步驟三:添加GPU節點

說明

如果您添加節點池時已經建立GPU節點,可以跳過此步驟。

完成建立節點池後,您還可以在節點池中添加GPU節點。添加GPU節點時,您需要將執行個體規格架構設定為GPU雲端服務器。具體操作,請參見添加已有節點建立節點池

步驟四:安裝和使用GPU資源查詢工具

  1. 下載kubectl-inspect-cgpu。

    • 如果您使用的是Linux系統,您可以通過以下命令下載kubectl-inspect-cgpu。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-linux -O /usr/local/bin/kubectl-inspect-cgpu
    • 如果您使用的是macOS系統,您可以通過以下命令下載kubectl-inspect-cgpu。

      wget http://aliacs-k8s-cn-beijing.oss-cn-beijing.aliyuncs.com/gpushare/kubectl-inspect-cgpu-darwin -O /usr/local/bin/kubectl-inspect-cgpu
  2. 執行以下命令,為kubectl-inspect-cgpu添加執行許可權。

    chmod +x /usr/local/bin/kubectl-inspect-cgpu
  3. 執行以下命令,查看叢集GPU使用方式。

    kubectl inspect cgpu

    預期輸出:

    NAME                       IPADDRESS      GPU0(Allocated/Total)  GPU Memory(GiB)
    cn-shanghai.192.168.6.104  192.168.6.104  0/15                   0/15
    ----------------------------------------------------------------------
    Allocated/Total GPU Memory In Cluster:
    0/15 (0%)