Ubuntu 16.04 cuda10.0 cudnn 7.4.1 tensorflow 1.13.1 环境配置

前言

之前一段时间帮实验室的十几台电脑安装或者更新了Tensorflow环境,从最开始的安装 Cuda8.0 + Tensorflow 1.2.0 到前一段时间卸载 Cuda8.0 安装 Cuda10.0 和 Tensorflow 1.13.0。感觉有必要总结一下安装过程。

卸载原有 Nvidia 驱动以及 Cuda

# sudo apt remove --purge nvidia*
# sudo apt remove --purge cuda
# sudo apt autoclean

卸载完成后可以检查文件是否完全删除干净,路径 /usr/local/ 如果没有看到 cuda 等文件夹则证明卸载完成。同时如果最初是使用的 deb 本地安装的 cuda,需要删除镜像源文件。

# cd /etc/apt/source.list.d
# rm cuda*

禁用 Nouveau

只有在禁用 Nouveau 的情况下才能顺利安装 Nvidia 驱动。首先

# sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在最后一行加上

blacklist nouveau

可能这一步需要重启。(之前并没有遇到过这个对于重装环境的影响)

安装新 Cuda

这一步主要根据 NVIDIA 官方的指导。对于 Cuda 10.0

# sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
# sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
# sudo apt-get update
# sudo apt-get install cuda

安装结束后可以检测是否安装成功

# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

看到以上字样说明安装成功。

安装 libcudnn

首先去官网下载相应 libcudnn 安装包,这里使用的 libcudnn 7.4.1,依次安装

sudo dpkg -i libcudnn7_7.4.1.5-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.4.1.5-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.4.1.5-1+cuda10.0_amd64.deb

验证安装

输入命令 nvidia-smi ,如果输出显卡的信息则证明安装成功。若出现

# nvidia-smi
Failed to initialize NVML: Driver/library version mismatch

一般可以重启解决。但也可以尝试不重启的解决方法。我们可以尝试 unload 目前的驱动模块,load 正确版本的驱动。

# lsmod | grep nvidia

可能会出现结果

nvidia_uvm            634880  8
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              12312576  86 nvidia_modeset,nvidia_uvm

依次 unload 这些模块

sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia_uvm
sudo rmmod nvidia

在这个过程中可能会出现 rmmod: ERROR: Module nvidia is in use 的情况,说明有进程在使用驱动模块,我们需要终止这些进程。

sudo lsof /dev/nvidia*

然后一一 kill 掉,通过 lsmod | grep nvidia 来确定是否成功的 unload。之后通过 nvidia-smi 检查正确的驱动版本是否能被加载,若可以,则安装成功。

安装 Tenseofow

直接使用 pip 进项安装,若速度较慢则可以尝试更换镜像源。安装之前记得删除旧的 TensorFlow

# pip install tensorflow-gpu==1.13.1

打开ipython等

import tensroflow as tf
sess = tf.Session()

若正确输出显卡信息则安装成功。