全部產品
Search
文件中心

Container Service for Kubernetes:更改共用GPU調度顯存最小分配單位

更新時間:Nov 14, 2024

共用GPU調度預設按1 GiB為單位申請顯存,申請更細粒度的顯存需要更改顯存最小分配單位。本文介紹如何將共用GPU調度顯存最小分配單位更改為128 MiB,以申請更細粒度的顯存。

前提條件

  • 您的叢集需要安裝共用GPU調度專業版的組件,然後您才可以更改共用GPU調度顯存最小分配單位。關於安裝共用GPU調度專業版的組件,請參見安裝共用GPU調度組件

  • 已建立ACK託管叢集Pro版且版本為1.18.8及以上,請參見建立ACK託管叢集升級叢集

注意事項

  • 如果叢集中已存在共用GPU應用(申請了aliyun.com/gpu-mem的Pod),需要刪除這些任務才能進行顯存單元切換工作(1 GiB -> 128 MiB或128 MiB -> 1 GiB),否則調度器賬本會發生混亂。

  • 該功能僅支援叢集中節點開啟只共用不隔離的情景(即節點打上了標籤ack.node.gpu.schedule=share),對於既共用又隔離的情景(即節點打上了標籤:ack.node.gpu.schedule=cgpu),因為隔離模組限制了一塊GPU卡上僅能建立16個Pod,所以在一張顯存為32 GiB的GPU卡上,即使您的Pod申請的顯存為128 MiB,也只能建立16個Pod。

  • 當節點按128 MiB為單位上報顯存資源時,不支援節點Auto Scaling,例如某個Pod申請aliyun.com/gpu-mem資源數為32,此時叢集中節點沒有足夠的顯存滿足該Pod需求,該Pod處於Pending狀態,即使配置了節點Auto Scaling,也不會彈出放置該Pod的節點。

  • 若叢集建立時間早於2021年10月20日,需要提交工單讓售後同學重啟調度器,配置才會生效。

更改顯存單位

未安裝ack-ai-installer

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

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

  3. 單擊頁面下方的一鍵部署,選中調度組件(批量任務調度、GPU共用、GPU拓撲感知、NPU調度),然後單擊部署雲原生AI套件

  4. 雲原生AI套件頁面,單擊組件ack-ai-installer所在行的卸載,單擊確定

  5. 卸載完成後,單擊組件ack-ai-installer所在行的部署,增加如下代碼gpuMemoryUnit: 128MiB1

  6. 單擊確定

    組件ack-ai-installer的狀態部署中變為已部署,表明組件已部署完成。

已安裝ack-ai-installer

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

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

  3. 單擊組件ack-ai-installer所在行的卸載,單擊確定

  4. 卸載完成後,單擊組件ack-ai-installer所在行的部署,增加如下代碼gpuMemoryUnit: 128MiB1

  5. 單擊確定

    組件ack-ai-installer的狀態部署中變為已部署,表明組件ack-ai-installer已部署完成。

申請顯存樣本

下面是一個樣本Pod,該Pod通過aliyun.com/gpu-mem申請16個單位為128 MiB的顯存,總共申請:16 * 128 MiB = 2GiB。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: binpack
  labels:
    app: binpack
spec:
  replicas: 1
  serviceName: "binpack-1"
  podManagementPolicy: "Parallel"
  selector: # define how the deployment finds the pods it manages
    matchLabels:
      app: binpack-1
  template: # 定義Pods規範。
    metadata:
      labels:
        app: binpack-1
    spec:
      containers:
      - name: binpack-1
        image: registry.cn-beijing.aliyuncs.com/ai-samples/gpushare-sample:tensorflow-1.5
        command:
        - bash
        - gpushare/run.sh
        resources:
          limits:
            # 128 MiB
            aliyun.com/gpu-mem: 16   # 16 * 128 MiB = 2 GiB