notes

Ubuntu 20.4 系统下基于 docker 安装支持 GPU 的 tensorflow

主要分为 3 步,安装 docker,安装 nvidia-docker 和安装 tensorflow。如果 ubuntu 电脑上的 nvidia 显卡驱动不是 nvidia 的,那还需要安装 NVIDIA® GPU 驱动程序。

安装 docker

根据 docker ubuntu 的 官方文档 安装 docker。

只要根据文档中提供的命令一句句执行下来就行了,安装完成后给用户添加执行 docker 的权限。

# 创建 docker 组
sudo groupadd docker

# 添加当前用户到 docker 组
sudo usermod -aG docker $USER

# 运行下面的命令后重启一个终端可能能执行 docker 命令了,如果不行就重启下机器
newgrp docker

安装 nvidia 驱动程序

查看当前电脑上的显卡驱动是不是 nvidia 驱动。

打开 所有应用程序 -> 搜索 driver -> 点击 附加驱动,来查看当前使用的显卡驱动是不是 nvidia 的驱动。如果在安装 ubuntu 时勾选了为图形或无线硬件,以及其他媒体格式安装第三方软件,那么系统会自动安装 nvidia 驱动。

如果不是 nvidia 驱动的话需要自行去网上找安装教程,或者参考我的这篇博客重装一下 ubuntu 系统。

安装 nvidia-docker

根据 tensorflow 官方文档的说明,需要在宿主机上安装 NVIDIA® GPU 驱动程序。这里的驱动程序指的就是 nvidia-docker。

根据文档上的连接,会跳转到 nvidia-docker 的 github 地址,进入安装文档

这里的话也是根据文档上提供的命令一句句安装下来。最好执行命令前看看是什么意思。

安装完成后执行下面命令,会输出以下信息就表示安装成功。

# 执行测试安装是否成功
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

# 控制台输出以下信息
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
| N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

下载支持 gpu 的 tensorflow

前置工作已经准备完成,只要下载 tensorflow 跑起来就行了。

dockerhub 查看 tensorflow 的版本。

选择一个 tag 里面带有 gpu 标识的镜像下载就行了。

测试 tensorflow 是否使用了 gpu

执行以下命令测试 tensorflow 是否使用了 gpu,在控制台的输出中应该会看到显卡的名称

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

或者手动进入容器,在 python 交互式命令行下输入

import tensorflow as tf;
tf.test.is_gpu_available()

// 这里会返回 True