Ubuntu17.04配置Tensorflow-gpu环境

从安装Nvidia驱动到成功运行tensorflow-gpu

目前Windows环境下不支持python2.7 的tensorflow,而TensorflowModel 上object detection API, 不兼容python3.x的tensorflow,多次运行报错的情况下,最终放弃Windows,投靠Ubuntu。
博主不怎么玩Linux,配置过程中遇到了很多坑。都是泪。。。


本人环境

  • i5 6300hq
  • Nvidia GTX 960M

主要流程

  • 安装相应的Nvidia驱动
  • 下载安装CUDA8.0
  • 下载配置cuDNN5.1
  • 配置环境变量
  • 测试运行tensorflow-gpu

Nvidia驱动

关闭Secure Boot
关闭Secure Boot
关闭Secure Boot
不然安装后会login loop,才进这个坑多次,最后才知道要关闭Secure Boot

  1. 添加ppa源
    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt-get update
    
  2. 安装相应的驱动版本
    查看支持的驱动

     ross@HP:~$ ubuntu-drivers devices
     == cpu-microcode.py ==
     driver   : intel-microcode - distro non-free
    
     == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
     model    : GM107M [GeForce GTX 960M]
     vendor   : NVIDIA Corporation
     modalias : pci:v000010DEd0000139Bsv0000103Csd00008257bc03sc02i00
     driver   : nvidia-381 - third-party free
     driver   : nvidia-375 - third-party free
     driver   : nvidia-384 - third-party free recommended
     driver   : nvidia-378 - third-party free
     driver   : xserver-xorg-video-nouveau - distro free builtin
    
  3. 安装推荐的版本
    我就安装 384

    sudo apt-get install nvidia-384 
    #根据需要换成你的版本,具体看tensorflow所适配的CUDA版本,而版本不同的CUDA要求的N卡驱动版本也不同,请参考tensorflow官方文档。
    

    等待安装完后重启一次。

    ross@HP:~$ nvidia-smi
    Thu Aug  3 20:30:10 2017
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 384.59                 Driver Version: 384.59                    |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 960M    Off  | 00000000:01:00.0 Off |                  N/A |
    | N/A   55C    P0    N/A /  N/A |    392MiB /  2000MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID  Type  Process name                               Usage      |
    |=============================================================================|
    |    0      1229    G   /usr/lib/xorg/Xorg                              24MiB |
    |    0      1620    G   /usr/lib/xorg/Xorg                             165MiB |
    |    0     11255    G   ...el-token=xxxxxxxxxxxxxxxxxxxxx               83MiB |
    |    0     14770    G   /usr/bin/gnome-shell                            87MiB |
    +-----------------------------------------------------------------------------+
    

    相应的版本驱动信息表示成功。

CUDA

方法一:

apt-get install nvidia-cuda-toolkit

用apt安装后路径会有点不同,它会放在/usr/local 中,而不是/usr/local/cuda中

所以我们要在/usr/local中新建一个cuda的文件夹

cd /usr/bin/cuda
mkdir cuda
ln -s /usr/local/bin/ /usr/local/cuda/bin
ln -s /usr/local/include/ /usr/local/cuda/include

方法二:

以安装CUDA9.1为例子。

2018-05-21 12-48-10 的屏幕截图18配置Tensorflow-gpu环境/2018-05-21 12-48-10 的屏幕截图.png)

在Nvidia网站下载CUDA(具体版本自己决定) 下载链接,下载完成后cd到该文件目录。

sudo dpkg -i cuda-repo-ubuntu1604-9-1-local_9.1.85-1_ppc64el.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub # 其中<version>是9-1-local,其他版本自行更改
sudo apt-get update
sudo apt-get install cuda-libraries-9-1 # 安装CUDA库而不安装Nvidia驱动

# 如果想同时安装驱动,请直接安装cuda,但是这样会替换掉原来的驱动,可能会导致Tensorflow-gpu运行失败
sudo apt-get install cuda 

用此方法安装后,CUDA的所在目录会不同,后面cuDNN的教程的时候自行修改。

cuDNN

下载CUDA版本的cuDNN Library for Linux (需要登录)

根据自己的tensorflow版本安装不同的cuDNN,这里以cuDNN5.1为例子。

tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
# 先新建一个文件夹饭lib64文件
mkdir /usr/local/cuda/lib64
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

添加环境变量

gedit ~/.bashrc  # (~/.zsh)

在文件末尾添加以下两行

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda 

保存退出后激活一下

source ~/.bashrc # (~/.zsh)

tensorflow-gpu

sudo pip install tensorflow-gpu

如果遇到不能安装

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo pip install tensorflow-gpu

python tensorflow-helloworld import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello))