centos 安装 nvidia-docker 并测试 tensorflow 和 pytorch
docker环境
如果系统没有环境,就安装环境。已经有了环境,最好升级到最新版本。
安装docker
- 安装yum工具
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 增加docker仓库到yum中
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
- 启动docker
$ sudo systemctl start docker
- 配置自启动
$ sudo systemctl enable docker
- 测试安装情况
$ docker --version
升级docker版本
$ sudo yum upgrade docker-ce docker-ce-cli containerd.io
升级docker版本的时候请注意,会导致已经创建的容器无法启用,需要重新创建容器。
安装 nvida-docker
$ 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
$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker
- 测试
$ docker run --rm --gpus all nvidia/cuda:9.0-base nvidia-smi
如果打印出下方类似的图片,也就是目前的宿主机的GPU,就说明安装正常。
可能出现的问题
安装 nvidia-container-toolkit 的时候报错 [Errno -1] repomd.xml signature could not be verified for libnvidia-container
修改 /etc/yum.repos.d/nvidia-docker.repo 文件 repo_gpgcheck 设置为0.
tensorflow测试
- 创建一下临时的docker容器,并进入容器的运行环境。
@ docker run --rm -it --gpus all tensorflow/tensorflow:1.15.0-gpu-py3 bash
运行python进入环境,并执行下面来自官网的代码例子。
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
试试看能代码能够正常运行下去。
pytorch测试
- 创建一下临时的docker容器,并进入容器的运行环境。
@ docker run --rm -it --gpus all pytorch/pytorch:1.3-cuda10.1-cudnn7-runtime bash
运行python进入环境,并执行下面来自官网的代码例子。
from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
试试看能代码能够正常运行下去。