使用 gpu 内存作为约束使用 docker swarm 调度容器

Posted

技术标签:

【中文标题】使用 gpu 内存作为约束使用 docker swarm 调度容器【英文标题】:Schedule a container with docker swarm using gpu memory as a constraint 【发布时间】:2017-03-03 12:37:17 【问题描述】:

是否可以使用 docker swarm 将容器调度到具有一定 gpu 内存量的节点上?

例如,如果我需要调度一个具有 5gb gpu 内存的容器,我如何让 swarm 在具有足够 gpu 内存的节点可用之前不调度容器。

【问题讨论】:

【参考方案1】:

从 1.12.x 开始,使用 Docker Swarm - 我能想到的完成此类事情的唯一方法如下:

从管理节点,通过 docker node update 命令标记所有满足您要求的节点: docker node update --label-add gpu-5g node-1 然后在创建服务时使用约束参数来限制服务在目标机器上运行 docker service create ...--constraint 'node.labels == gpu-5g'

如果您需要运行时剩余的可用内存,那么也许可以组合容器来协调标签的设置。一个服务容器,运行在所有 GPU 机器上,报告当前可用内存,另一个在管理器节点上设置标签。

我会关注这个问题,因为它很有趣。看看你最终如何解决这个问题会很有趣。

【讨论】:

得到一些反馈说 mesos/marathon 支持这个,我正在调查,如果这不是一个选项,我可能会实现上述版本,有一个服务容器更新节点标签可用的 gpu 并将其用作约束

以上是关于使用 gpu 内存作为约束使用 docker swarm 调度容器的主要内容,如果未能解决你的问题,请参考以下文章

如何在Docker中使用Nvidia GPU

安装使用NVIDIA-Docker-- 可使用GPU的Docker容器

配置 Docker 使用 GPU

CUDA 映射内存是不是占用 GPU RAM?

使用 docker 容器中的 GPU?

在Docker中使用TensorFlow(GPU版+Ubuntu 20.04)