前言
之前一段时间帮实验室的十几台电脑安装或者更新了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()
若正确输出显卡信息则安装成功。