目录
前言
本文用于分享如何用Dokcer创建一个可以供多人共享使用的GPU服务器,适用于高校实验室或深度学习个人爱好者。
阅读本文的前提是假设读者已经具备了如下硬件设施与知识储备:
- 已经具有一台含有NVIDIA显卡的服务器/个人电脑;
- 了解Ubuntu操作系统的基本使用;
- 了解Dokcer的基本操作,并能使用;
一、安装Ubuntu18.04系统
1.系统安装
Ubuntu18.04系统的安装目前已有很多教程,因此本文不与赘述。推荐大家参考如下教程或自行查阅相关资料:
2.禁止Linux内核自动更新
禁止Linux内核自动更新的主要原因是:由于Linux内核的自动升级,会使得NVIDIA显卡驱动失效,因此建议大家一定要执行这步操作,具体的禁用过程如下:
查看已经安装的内核
sudo dpkg --get-selections | grep linux
查看正在使用的内核
uname -a
禁用指定内核
sudo apt-mark hold linux-image-x.xx.x-xx-generic
重启内核自动更新
sudo apt-mark unhold linux-image-x.xx.x-xx-generic
内核自动更新禁止后,可以观察到内核状态显示为hold
二、安装NVIDIA显卡驱动
查看机器显卡型号
ubuntu-drivers devices
可以看到如下情况,其中driver是可以使用的驱动,能够从图中看到推荐安装nvidia-driver-455驱动
如果安装推荐驱动,则执行:
sudo ubuntu-drivers autoinstall
如果想安装制定版本驱动,则执行:
sudo apt install nvidia-driver-450
安装驱动完成后,重启计算机,重启后输入:
nvidia-smi
如果出现显卡信息,说明安装成功,如下图:
三、安装NVIDIA Container Runtime
由于我们使用的是Docker19版本,因此不需要在安装nvidia-docker,但是需要安装NVIDIA Container Runtime以支持在的dokcer容器中使用显卡计算,具体安装方法如下:
添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
安装
yum install nvidia-container-runtime
检查是否安装成功
which nvidia-container-runtime-hook
出现下图则说明安装成功:
如果上述方法不成功,这里也提供另一种安装方法:nvidia container runtime安装方法
四、安装与配置docker19.03
1.安装
docker安装目前已有很多教程,因此本文不与赘述。推荐大家参考如下教程或自行查阅相关资料:
2.配置
加入用户组
#docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户
#因此需要root权限才能访问。所以需要创建用户组来访问和使用
sudo groupadd docker #添加docker用户组
sudo gpasswd -a admin docker #将当前用户admin添加至docker用户组中,其中admin为用户名,你可以按自己的用户名来定义
newgrp docker #更新docker用户组
启动dockerd服务进程
systemctl enable docker #设置开机自启
systemctl daemon-reload #重新加载服务
systemctl start docker #启动docker
查看dokcer版本,可以看到当前的版本为19.03.13
docker version
此时可以尝试一下Hello-World
验证 --gpus 选项
docker run --help | grep -i gpus
出现以下标识则说明支持:
五、获取Tensorflow环境
在Docker中配置Tensorflow的方式有很多,我们推荐直接使用tensorflow官方已经配置好的镜像进行使用,大家可以上dockerhub官网查询具体镜像情况。
以下为推荐的两个Tensorflow镜像,,镜像中已经包含了Ubuntu18.04操作系统、Python、jupyter等基础环境,十分方便:
Tensorflow1:
docker pull tensorflow/tensorflow:1.15.4-gpu-py3-jupyter
Tensorflow2:
docker pull tensorflow/tensorflow:2.2.1-gpu-py3-jupyter
六、获取PyTorch环境
同样采用镜像的方式,但是不同的是目前PyTorch并没有提供带jupyter的镜像,因此只能自己进行制作,关于镜像的制作和容器的使用将在下一篇文章中进行介绍。
推荐使用镜像:
docker pull pytorch/pytorch:1.7.0-cuda11.0-cudnn8-runtime
总结
本文针对需要多人共享GPU服务器的情况,对如何利用Dokcer搭建服务器基础环境进行了介绍,后续会对如何配置专属镜像,使用容器等进行介绍。
参考资料:
https://cloud.tencent.com/developer/article/1506050
https://www.runoob.com/docker/ubuntu-docker-install.html
https://blog.csdn.net/hangvane123/article/details/88639279#Dockerfile_438