0%

TensorFlow GPU 在Ubuntu 18.04的安装

在Ubuntu上安装TensorFlow GPU版本,首先需要:

  • 一张NVIDIA GPU显卡和Ubuntu系统;
  • NVIDIA 显卡驱动,最新为495.29.05(2021年10月22日);
  • CUDA toolkit;
  • cudNN SDK;
  • CUPTI;
  • TensorFlow作为深度学习的框架。

以NVIDIA 2080ti为例,安装步骤如下:

安装 NVIDIA 显卡驱动

在官网:https://www.nvidia.com/download/index.aspx?lang=en-us 下载最新的显卡驱动。

完成后运行nvidia-smi,查看显卡信息:

正常显示则表示驱动安装成功。

Ubuntu初次插入GPU显卡后会自动安装驱动,也能正常使用显卡,但是版本可能较低,和TensorFlow的GPU需求不匹配。也可以通过Ubuntu自带的驱动更新来安装显卡最新的驱动

CUDA toolkit

去谷歌网站查看版本匹配,确定TensorFlow、cuda toolkit、和cuDNN的版本对应正确。

以TensorFlow2.5为例,需要的cuDNN8.1和CUDA 11.2。

注意这个CUDA 11.2不是驱动的版本,可以和上面的显卡驱动显示的11.5不一致。

下载:

1
2
3
wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
sudo chmod +x cuda_11.2.2_460.32.03_linux.run
sudo ./cuda_11.2.2_460.32.03_linux.run

坑-1

cuda toolkit包中含有了显卡驱动,因为之前已安装,这里不要再安装,否则显卡驱动冲突。

此处可参考:https://zhuanlan.zhihu.com/p/122286055

去掉driver前面的X,执行install,等一会安装成功。

添加到路径

1
2
3
4
5
sudo gedit ~/.bashrc
export PATH="/usr/local/cuda-11.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.2/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME=/usr/local/cuda-11.2
source ~/.bashrc

测试

1
nvcc -V

cuDNN

从官网(https://developer.nvidia.com/rdp/cudnn-download) 下载cuDNN。先注册,然后找到对应的8.1版本,并下载deb版本。

可参考:https://zhuanlan.zhihu.com/p/126997172

下载内容为:

1
2
3
libcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb
libcudnn8-samples_8.1.1.33-1+cuda11.2_amd64.deb

依次安装:

1
2
3
sudo dpkg -i llibcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-samples_8.1.1.33-1+cuda11.2_amd64.deb

对于新版的cuda,如11.6,cudnn只提供了一个文件。可以使用如下方法安装:

1
2
3
4
5
6
7
8
# Procedure
# Navigate to your <cudnnpath> directory containing the cuDNN tar file.
# Unzip the cuDNN package.
$ tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
# Copy the following files into the CUDA toolkit directory.
$ sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

参考:https://blog.csdn.net/P081513083/article/details/126324723

测试cuDNN

1
2
3
4
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd ~/cudnn_samples_v8/mnistCUDNN
sudo make clean
sudo make

遇到错误:

1
2
test.c:1:10: fatal error: FreeImage.h: No such file or directory
1 | #include "FreeImage.h"

解决方法:

1
sudo apt-get install libfreeimage3 libfreeimage-dev

进行测试:

1
sudo ./mnistCUDNN

显示Test passed!

CUPTI

该程序没有约定版本,直接通过apt安装。

1
sudo apt-get install libcupti-dev

并编辑~/.bashrc添加到路径。

1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

Tensorflow

坑2

不要使用conda安装,使用pip安装。

使用conda反复安装TensorFlow,总是无法调用GPU,后来使用pip安装(也是官方教程的方法)发现安装包要比conda的包大一倍。

使用下面的命令测试:

1
import tensorflow as tf

会出现Successfully opened dynamic library libcudart.so.11.0,表示成功。

接着使用

1
tf.config.list_physical_devices('GPU')

至此,安装成功。

参考

https://medium.com/analytics-vidhya/configure-tensorflow-gpu-with-ubuntu-18-04-2021-update-aee264e887ae
https://www.bilibili.com/read/cv9164113
https://towardsdatascience.com/installing-tensorflow-gpu-in-ubuntu-20-04-4ee3ca4cb75d
https://zhuanlan.zhihu.com/p/122286055
https://zhuanlan.zhihu.com/p/126997172
https://www.tensorflow.org/install/source#gpu