共用GPU調度預設按1 GiB為單位申請顯存,申請更細粒度的顯存需要更改顯存最小分配單位。本文介紹如何將共用GPU調度顯存最小分配單位更改為128 MiB,以申請更細粒度的顯存。
前提條件
您的叢集需要安裝共用GPU調度專業版的組件,然後您才可以更改共用GPU調度顯存最小分配單位。關於安裝共用GPU調度專業版的組件,請參見安裝共用GPU調度組件。
注意事項
如果叢集中已存在共用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
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊頁面下方的一鍵部署,選中調度組件(批量任務調度、GPU共用、GPU拓撲感知、NPU調度),然後單擊部署雲原生AI套件。
在雲原生AI套件頁面,單擊組件ack-ai-installer所在行的卸載,單擊確定。
卸載完成後,單擊組件ack-ai-installer所在行的部署,增加如下代碼
gpuMemoryUnit: 128MiB
。單擊確定。
組件ack-ai-installer的狀態從部署中變為已部署,表明組件已部署完成。
已安裝ack-ai-installer
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊組件ack-ai-installer所在行的卸載,單擊確定。
卸載完成後,單擊組件ack-ai-installer所在行的部署,增加如下代碼
gpuMemoryUnit: 128MiB
。單擊確定。
組件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