在容器调度领域,对于 nvidia GPU 的调度一直是以 GPU 卡独占为前提的。原因是 nvidia GPU 仅仅支持应用层面的显存上限设置,并不支持硬件层面,或者说平台层面的设备隔离。这种方案虽然安全,但是却阻止了客户在模型预测领域共享 GPU 卡的强烈需求。很多客户愿意接受平台层负责调度和监控,应用层负责保证共用应用在运行时的 GPU 卡显存使用上限。这是技术上的一种折中方案,但确实可以解决在模型预测上 GPU 卡浪费的问题。
基于此,阿里云容器服务提供了 GPU 指定卡调度的策略,即用户指定调用 GPU 卡列表,swarm 调度系统根据列表定位满足需求的 GPU 节点,将容器部署到该节点。
使用限制
实际上在指定 GPU 卡调度过程中,仅仅检查 GPU 节点是否满足包含指定 GPU 卡这个条件,并不会检查该 GPU 卡是否正在被其他容器使用。建议客户结合指定多节点调度一起使用,这样可以降低系统调度时共享卡压力过大的风险。具体可以参考
指定多节点调度。
Note 不建议与 GPU 独占标签 aliyun.gpu 在同一个集群混合使用,由于指定 GPU 卡调度不受节点调度限制,会运行在任何满足指定条件的 GPU 卡上,这会导致 aliyun.gpu 失效。如果必须要和 aliyun.gpu 混合使用,建议通过使用给节点打 label 的方式分开需要共享和独享 GPU 的节点,并且在调度时刻指定 GPU。
nvidia-smi -L | awk -F: '{print $1}'
GPU 0
GPU 1
version: '2'
services:
cuda:
image: registry.cn-hangzhou.aliyuncs.com/1hpc/cuda
command:
- tail
- -f
- /dev/null
labels:
- aliyun.gpu.devices=0,1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。