GPU独占和共享说明
若集群支持 GPU 算力和显存的共享与隔离,您可以在新建任务或工作负载的时候,通过控制台操作或根据提交的 YAML 来决定独占还是共享 GPU 资源。
前提条件
- 您已成功安装CCE GPU Manager 和 CCE AI Job Scheduler 组件。您可在“集群>组件管理>云原生AI”中安装。
- 节点已开启显存共享,您可在“集群>节点管理>Worker>显存共享配置”中开启。
GPU卡型号对应资源名称
为保证正常使用GPU资源,请正确指定GPU卡型号对应的资源名称,本文以使用GPU卡数量为例,若想指定GPU卡算力资源或显存资源,则在资源名称后加上“_core”或“_memory”即可。
GPU卡型号 | 资源名称 |
---|---|
NVIDIA V100 16GB | baidu.com/v100_16g_cgpu |
NVIDIA V100 32GB | baidu.com/v100_32g_cgpu |
NVIDIA T4 | baidu.com/t4_16g_cgpu |
NVIDIA A100 80GB | baidu.com/a100_80g_cgpu |
NVIDIA A100 40GB | baidu.com/a100_40g_cgpu |
NVIDIA A800 80GB | baidu.com/a800_80g_cgpu |
NVIDIA A30 | baidu.com/a30_24g_cgpu |
NVIDIA A10 | baidu.com/a10_24g_cgpu |
资源描述
资源名称 | 类型 | 单位 | 说明 |
---|---|---|---|
baidu.com/v100_32g_cgpu | int64 | 1 | GPU 卡数量,共享场景下请填 1 |
baidu.com/v100_32g_cgpu_core | int64 | 5% | GPU 卡算力,eg.100=单卡总算力,10=单卡算力的10%,要求最低5% |
baidu.com/v100_32g_cgpu_memory | int64 | GiB | GPU 卡显存 |
baidu.com/v100_32g_cgpu_memory_percent | int64 | 1% | 按百分比申请 GPU 卡显存,eg.100=单卡总显存 ,10=单卡显存的10% |
控制台创建任务示例
若您通过CCE控制台创建任务(操作步骤可参考云原生AI任务管理),您可在任务的容器组配置中指定GPU类型为独占或共享。
单卡/多卡独占示例
- 当您指定GPU类型为独占GPU时,若希望任务使用整张GPU卡资源,操作步骤如下:
- 选择GPU卡型号。
- 输入GPU卡数量,GPU卡数量需输入正整数,范围为[1~当前集群中单节点所含GPU卡最大数量]。
- 若希望任务仅使用CPU和内存资源,无需使用GPU资源,操作步骤如下:
GPU卡型号保持为空,仅输入所需CPU和内存资源量。
单卡共享【不进行算力隔离,只有显存隔离】示例
当您指定GPU类型为共享GPU时,若希望任务只进行显存隔离,算力无需隔离,操作步骤如下:
- 选择GPU卡型号。
- 算力值保持为空。
- 输入所需GPU显存,显存大小应为正整数,范围为[1~所选GPU卡显存大小]。
单卡共享【同时支持显存隔离和算力隔离】示例
当您指定GPU类型为共享GPU时,若希望任务同时进行显存隔离和算力隔离,操作步骤如下:
- 选择GPU卡型号。
- 输入所需算力值百分比,百分比大小应为[5~100正整数]。
- 再输入所需GPU显存,显存大小应为正整数,范围为[1~所选GPU卡显存大小]。
控制台创建工作负载示例
若您通过CCE控制台创建工作负载(操作步骤可参考工作负载),您可在工作负载的容器配置中指定GPU类型为独占或共享。独占和共享的资源输入限制和上文中AI任务的创建一致。
Yaml创建任务/工作负载示例
若您通过Yaml创建任务或工作负载(详细配置可参考云原生AI任务管理、工作负载),您可在Yaml配置中指定所需GPU卡资源为独占或共享,具体示例如下:
备注:
1、如使用Yaml的方式创建任务,调度器必须指定schedulerName: volcano
2、GPU显存资源必须申请,且baidu.com/v100_32g_cgpu_memory
和baidu.com/v100_32g_cgpu_memory_percent
只能填写一个,不可同时填写
单卡独占示例:
resources:
requests:
baidu.com/v100_32g_cgpu: 1 // 1卡
cpu: "4"
memory: 60Gi
limits:
baidu.com/v100_32g_cgpu: 1 // limit与request必须一致
cpu: "4"
memory: 60Gi
多卡独占示例:
resources:
requests:
baidu.com/v100_32g_cgpu: 2 // 2卡
cpu: "4"
memory: 60Gi
limits:
baidu.com/v100_32g_cgpu: 2 // limit与request必须一致
cpu: "4"
memory: 60Gi
单卡共享【不进行算力隔离,只有显存隔离】示例:
resources:
requests:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_memory: 10 // 10GB
cpu: "4"
memory: 60Gi
limits:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_memory: 10
cpu: "4"
memory: 60Gi
单卡共享【同时支持显存隔离和算力隔离】示例:
resources:
requests:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_core: 50 // 50%, 0.5卡算力
baidu.com/v100_32g_cgpu_memory: 10 // 10GB
cpu: "4"
memory: 60Gi
limits:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_core: 50 //
baidu.com/v100_32g_cgpu_memory: 10
cpu: "4"
memory: 60Gi
编解码功能使用示例(仅支持性能最优型组件):
resources:
requests:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_core: "20" // 20%, 0.2卡算力
baidu.com/v100_32g_cgpu_memory: "2" // 2
baidu.com/v100_32g_cgpu_encode: 100 // 开启编码功能
baidu.com/v100_32g_cgpu_decode: 100 // 开启解码功能
memory: "2Gi"
cpu: "1"
limits:
baidu.com/v100_32g_cgpu: 1
baidu.com/v100_32g_cgpu_core: "20"
baidu.com/v100_32g_cgpu_memory: "2"
baidu.com/v100_32g_cgpu_encode: 100
baidu.com/v100_32g_cgpu_decode: 100