全部產品
Search
文件中心

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

更新時間:Nov 16, 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調度標籤後,請勿通過kubectl label nodes命令切換節點GPU調度屬性標籤值或使用控制台節點頁面的標籤管理功能更改節點標籤,以避免引發潛在的問題,請參見使用kubectl label nodes或通過控制台節點標籤管理功能切換標籤值存在的問題。推薦您基於節點池劃分GPU資源調度能力

步驟三:添加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%)