共用GPU調度預設按1 GiB為單位申請顯存,申請更細粒度的顯存需要更改顯存最小分配單位。本文介紹如何將共用GPU調度顯存最小分配單位更改為128 MiB,以申請更細粒度的顯存。
前提條件
注意事項
如果叢集中已存在共用GPU應用(申請了
aliyun.com/gpu-mem的Pod),需要刪除這些任務才能進行顯存單元切換工作,否則調度器賬本會發生混亂。該功能僅支援節點開啟只共用不隔離的情景(即節點標籤為
ack.node.gpu.schedule=share)。對於既共用又隔離的情景(即節點標籤為ack.node.gpu.schedule=cgpu),由於隔離模組限制,即使每個Pod申請的顯存為128 MiB,每塊GPU卡只能建立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拓撲感知)並單擊進階配置。
單擊進階配置,在如下位置添加代碼
gpuMemoryUnit: 128MiB,然後單擊確定。
配置完成後單擊部署雲原生AI套件。
組件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的顯存,總共申請2 GiB。
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