在某些场景下,您可能不需要GPU隔离模块参与共享GPU调度。例如,有些业务应用自带显存限制能力。在这种情况下,使用GPU隔离模块可能不合适。对此,共享GPU调度支持某些节点不安装GPU隔离模块的选项。本文介绍如何配置共享GPU调度仅共享不隔离策略。
前提条件
步骤一:创建节点池
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在节点池页面,单击创建节点池。 
- 在创建节点池页面,设置创建节点池的配置项,然后单击确认配置。下表仅介绍主要配置项,其余配置项请参见创建和管理节点池。 - 配置项 - 说明 - 实例规格 - 架构选择GPU云服务器,选择多个GPU实例规格。本文以使用GPU卡V100为例进行说明。 - 期望节点数 - 设置节点池初始节点数量。如无需创建节点,可以填写为0。 - 节点标签 - 单击  ,添加如下记录:键为 ,添加如下记录:键为- ack.node.gpu.schedule,值为- share。仅开启GPU共享调度能力。- 关于节点标签的更多信息,请参见GPU节点调度属性标签。 
步骤二:提交任务
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 单击页面上方的使用YAML创建资源,将如下代码拷贝至模板区域,然后单击页面下方的创建。 - YAML文件说明如下: - 该YAML定义了一个使用TensorFlow MNIST样例的Job。Job有1个Pod,该Pod申请4 GiB显存。 
- Pod申请4 GiB显存通过在Pod resources.limits定义 - aliyun.com/gpu-mem: 4实现。
 
步骤三:验证仅共享不隔离能力
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择。 
- 在创建的容器所在行(例如tensorflow-mnist-multigpu-***),单击操作列的终端。然后从下拉列表中选择需要登录的容器,执行如下命令。 - nvidia-smi- 预期输出: - Wed Jun 14 06:45:56 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.105.01 Driver Version: 515.105.01 CUDA Version: 11.7 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 35C P0 59W / 300W | 334MiB / 16384MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+- Pod内部能够发现整张GPU卡的总显存16384 MiB(本文示例使用GPU卡为V100),而在有隔离模块参与的场景下,该值与Pod申请值一致(本文示例为4 GiB),说明配置生效。 - 业务应用需要从两个环境变量中读取该业务能够使用的显存值。 - ALIYUN_COM_GPU_MEM_CONTAINER=4 # 该Pod能够使用的显存值。 ALIYUN_COM_GPU_MEM_DEV=16 # 每张GPU卡总共的显存值。- 如果应用需要的是显存的百分比,可以使用上述两个环境变量计算: - percetange = ALIYUN_COM_GPU_MEM_CONTAINER / ALIYUN_COM_GPU_MEM_DEV = 4 / 16 = 0.25