如何使用nvidia-docker在Docker Swarm中创建服务。

3
如何使用nvidia-docker在docker操作的swarm模式下创建服务。我正在尝试在这个swarm网络中训练一个tensorflow模型,以进行分布式学习。我发现一种方法是在不同机器上运行不同容器的swarm网络,并在每台机器上使用GPU进行分布式训练。如果在swarm模式下不可能,是否有可能完成上述任务?
docker服务创建--name tensorflow --network overnet saikishor/tfm:test azt0tczwkxaqpkh9yaea4laq1
由于未指定--detach=false,任务将在后台创建。
在未来的发布中,--detach=false将成为默认值
但在docker服务ls下,我有这个:
ID NAME MODE REPLICAS IMAGE PORTS uf6jgp3tm6dp tensorflow replicated 0/1 saikishor/tfm:test
2个回答

3

当问及此事时,可能是不可能的,但现在不是。

自从发布了nvidia-docker2,就支持了一个名为 nvidia 的新的docker容器运行时,可以像使用nvidia-docker run ... 一样通过 docker run --runtime nvidia ... 访问GPU。 此外,在配置了 dockerd 选项 --default-runtime nvidia 后,像docker-compose、Docker Swarm和Kubernetes等工具也能够使用GPU。

nvidia-gpu-docker

安装

基于Debian的发行版

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

基于RHEL的发行版

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | \
  sudo tee /etc/yum.repos.d/nvidia-docker.repo

配置

{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "default-runtime": "nvidia",
    ...
}

0

目前,nvidia-docker不支持docker swarm。因此,现在没有可能性。我们需要创建一个外部网络来将它们连接在一起。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接