一、了解Docker
Docker介绍:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
场景举例:
在一个做计算机视觉研究的小组里,大家都有一台自己的用于平时工作的台式机,同时组里还有一台服务器。这台服务器上有这个小组的所有GPU计算资源。平时大家的工作模式是:在自己的台式机上写好自己的算法,调试好之后放到服务器上利用服务器的GPU去运行。
这样乍一看好像没什么问题,但是细细一想你就会发现这么模式的弊端。假设该小组有A、B、C、D四个人。A使用的框架是Pytorch,B使用的是tensorflow,C也同样是Pytorch,但是与A的版本不一样,D用的是caffe。那么问题来了,假设服务器上只有pytorch这个框架,B与D就要自己去安装相应的环境。当然这不是最重要的,也不是docker主要想解决的问题。最要命的在假设A只能在他目前所在的Pytorch版本上去运行,而C也是同样如此。那么两个人每次使用服务器的时候都要去重新装一遍对应版本的pytorch,这样岂不是很麻烦?
所以说docker就出现了,它使得一台服务器上可以装自己的环境(镜像)而与其它人的环境互补干扰。想要运行程序的时候,启动这个镜像就可以了。而且这个镜像是可以保存在硬盘里的(就是一个压缩文件),当你想在另一台服务器上,运行你写的算法的时候,你只要将你这个镜像导入到当前服务器的docker中(也就是前面所提到的让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux机器上),并启动它,就可以得到与你目前服务器一模一样的环境而不必担心各种依赖文件的版本问题。我们来看下图就能理解docker的运行机制了:
Docker安装:
二、搭建GPU版本的Pytorch Docker镜像
了解并安装完Docker之后,来配置安装GPU版本的Pytorc