硬件/软件环境
ubuntu16.04, 显卡 nvidia-1080
docker本身并不支持GPU的调用,安装在容器里的pytorch自然就没法调用GPU,因此,需要额外安装nvidia-docker
step 1: 安装nvidia-docker。
在安装nvidia-docker之前,请先参照我之前的文档安装好docker,然后开始安装nvidia-docker。这是安装的文档地址按照官方的instruction进行安装即可。
- 按照教程走,在更新官方仓库的时候可能会出现如下报错:
- 解决过程:
前往命令行提示的地址重新更新仓库,然后再按照之前的文档进行操作即可。
安装完nvidia-docker后,/etc/docker/文件夹下的daemon.json文件被覆盖,因此需要将原来的镜像地址加上去,否则docker-cuda的demo会报网络连接错误,因此需要再修改一下daemon.json并重启docker
systemctl daemon-reload
sudo systemctl restart docker
然后运行demo,就可以看到结果,说明nvidia-docker安装成功
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
step 2 安装带有Pytorch的image
选择合适的image
在docker hub 官网有很多image可供选择,读者可以选择合适的image进行使用。这里提供一下几个版本供参考(有点像当初玩老滚5去各大资源站寻找本体+ENB+随从美化+实验室整合包的感觉2333):
- nvidia提供的cuda包,包含了cuda+cudnn
- pytorch提供的image,包含了cuda+cudnn+pytorch
- 由github上大佬提供的深度学习整合包deepo,所有dl框架all in one
- 依然是网络问题
这里下载的是pytorch的pytorch/pytorch:1.0.1-cuda10.0-cudnn7-devel这个tag,下载到本地的命令是:
docker pull pytorch/pytorch:1.0.1-cuda10.0-cudnn7-devel
换了中科大,网易各种镜像,发现都会出现网络问题:" TLS handshake timeout",pytorch的image下载不下来,然后使用专属的阿里镜像源解决了问题。 - 解决过程again(安啦~是免费的)
这里参考了其实就是登陆阿里的容器镜像服务控制台设定一下专属的镜像源即可。首先登陆阿里的开发平台,然后进入容器镜像服务控制台,在搜索栏搜索容器镜像就可以点击链接进入了。
接着从左侧菜单栏进入镜像加速器,就可以看到自己专属的镜像地址了(期间可能需要你设置一下登陆docker的密码,按照提示的教程设置一下密码就可以)
最后在终端中进行如下操作:
1.更新一下访问凭证
2.更新一下自己的daemon.json并且重新启动docker服务(与step1中操作相同, 这里不再赘述)
当然最后我还是不放心这个mirror是否真的能连上,遂在registry-mirror字段把中科大,网易,等一堆镜像地址都给放上去了,格式如下所示,记得逗号不要漏掉。
经过折腾,pytorch的image终于下载完成。
后续
热乎的pytorch docker,赶紧探索一下。会在新博客补上