搞了一个月总算申请到了台 NVIDIA 机器, 接下来是安装过程
NVIDIA 驱动及Cuda环境安装
1. 查看系统架构
$ uname -am
Linux aisrv 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
安装 ubuntu 常用包
$ sudo apt install ubuntu-drivers-common
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.0/0000:03:00.0 ==
vendor : NVIDIA Corporation
modalias : pci:v000010DEd00001B06sv00001462sd00003609bc03sc00i00
driver : nvidia-384 - distro non-free
driver : nvidia-387 - third-party non-free recommended
driver : xserver-xorg-video-nouveau - distro free builtin
安装docker
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
# 免sudo 运行 docker
# 查看是否存在 docker group
$ cat /etc/group | grep docker
docker:x:999:
# 当前是存在 docker 组, 如不存在,通过 $ sudo groupadd docker 创建
# 添加当前用户到组中
$ sudo usermod -aG docker $(whoami)
$ sudo service docker restart
# 退出当前登录, 然后重新登录即可
2. 安装 GPU 驱动
安装 NVIDIA 驱动(可跳过)
# 自动安装驱动,有可能失败
$ sudo ubuntu-drivers autoinstall
# 手动安装, 如上述 ubuntu-drivers devices命令结果来看,安装
$ sudo apt install nvidia-384
$ sudo reboot
安装完成之后简单测试:
$ nvidia-smi
Sat Jan 6 12:12:43 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.90 Driver Version: 384.90 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:03:00.0 Off | N/A |
| 29% 37C P0 53W / 250W | 0MiB / 11171MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
安装 cuda 包
$ lspci | grep -i nvidia
03:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
03:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
进入到 GPU 官网, 按当前服务器配置进行选择,并配置:
上述使用的是网络安装的方式进行安装.
安装完成之后需要重启机器
安装 cuDNN 库
caffe , tensorflow等DL专用的深度学习库
$ wget https://developer.nvidia.com/rdp/cudnn-download#a-collapse731-92
以 tensorflow为例:
$ export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}')
$ docker run -it --rm $DEVICES -v /usr/lib64/nvidia/:/usr/local/nvidia/lib64 tensorflow/tensorflow:latest-gpu bash
3. 安装docker 镜像
通过 tensorflow 官方镜像来构建自己的系统镜像
参见Dockerfile.gpu
4. 挂载 GPU 节点
如上述内容 tensorflow 的例子,相似 在 docker 环境内部安装 cuda 相关的 libraries 之后, 将主机上的设备节点直接映射到 docker 内部使用即可
其他问题
总结
在 docker 中使用宿主机的 GPU 主要是将对应的设备节点直接映射到 docker 内部即可
KVM 中使用 NVIDIA 则是通过虚拟化的方式,详细参见GPU Virtualization with KVM / QEMU
参考
GPU Virtualization with KVM / QEMU
cuda – 从docker容器使用GPU?
docker cuda - Dockerfile
docker-hub cuda
install-from-a-package