Luozm +

Ubuntu1604的深度学习工具安装教程

Ubuntu上安装CUDA+cuDNN+TensorFlow+Keras+Caffe的艰辛历程。

原创文章,转载请注明:转自Luozm's Blog

这里记录了我的安装过程,供大家参考。

1. 安装准备

首先你需要确认自己的显卡是否可以支持CUDA。如果你的显卡是N卡,而且在这个列表中:CUDA GPUs,那么恭喜你可以使用GPU加速。

如果不知道自己的显卡型号,可以在终端输入$ lspci | grep -i nvidia查看。

我的笔记本显卡是NVIDIA Quadro K2000m,勉强可以带的动GPU加速。如果你的显卡不支持CUDA,请跳过1.1、1.2章节,在TensorFlow的安装中选择CPU-only版本。

1.1 CUDA(显卡驱动)

在NVIDIA官网下载CUDA 8.0:CUDA 8.0 Downloads

如果下载太慢,可以先在这里下载(8.0.44):cuda8.0 百度云盘分享 CUDA 8.0

17/9/26更新:目前最新的CUDA版本是CUDA9.0和cuDNN7,但是tensorflow暂时还没有正式支持,如果不想折腾可以从Legacy Releases里面找到CUDA8.0。想提前使用最新版请看后面tensorflow安装说明的更新部分。

Deb版本安装(自动安装,默认安装新版本Nvidia显卡驱动,如果不想安装驱动请使用runfile安装,见下文)

之后打开终端输入(请根据自己下载的版本更换代码):

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt update
sudo apt install cuda

自动配置成功就好。

Runfile版本安装

打开终端输入(请根据自己下载的版本更换代码):

sudo sh cuda_8.0.61_375.26_linux.run

然后按照命令行指令进行选择,可选择不安装显卡驱动,不下载CUDA samples,其他都选是。

将CUDA路径添加至环境变量

在终端输入:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

测试,在终端输入:

nvcc -V

或者

nvcc --version

会得到相应的nvcc编译器相应的信息,那么CUDA配置成功了,记得重启系统。

1.2 cuDNN

下一步就是安装cuDNN,需要在官网注册一下,回答几个问题,然后就可以下载了。 cuDNN Download

解压文件然后复制到相应的文件夹:

cd ~/下载/
tar xvf cudnn*.tgz
cd cuda
sudo cp */*.h /usr/local/cuda/include/
sudo cp */libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

1.3 Python

Python已经集成在Ubuntu系统里了,但我们还需要下载一些依赖包用于后续的使用。

在终端输入:sudo apt-get install python-pip

然后输入下载依赖包:

sudo apt-get update && sudo apt-get install -y python-numpy python-scipy python-nose \
python-h5py python-skimage python-matplotlib \
python-pandas python-sklearn python-sympy
sudo apt-get clean && sudo apt-get autoremove
sudo rm -rf /var/lib/apt/lists/*

17/9/26更新:增加Python3备注

如果想再Python3中运行下面的深度学习库,请先安装Python3的pip3:

sudo apt install python3-pip

如果找不到对应的包,请尝试:

sudo apt update

然后在Python3中下载依赖包:

pip3 install numpy scipy nose h5py scikit-image matplotlib pandas sklearn sympy

1.4 openCV(用于caffe)

安装依赖包:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libatlas-base-dev libopenblas-dev

2. 安装Deep Learning工具

2.1 TensorFlow

官方安装教程在这里:Installing TensorFlow on Ubuntu

17/9/26更新:安装前首先安装依赖包:

sudo dpkg -i libcudnn7_7.0.2.43-1+cuda9.0_amd64.deb
sudo apt-get update

备注:如果想在CUDA9和cuDNN7下使用tensorflow,请参考深度学习服务器环境配置: Ubuntu17.04+Nvidia GTX 1080+CUDA 9.0+cuDNN 7.0+TensorFlow 1.3

在终端使用下列命令安装对应版本的TensorFlow:

sudo pip install tensorflow      # Python 2.7; CPU support (no GPU support)
sudo pip3 install tensorflow     # Python 3.n; CPU support (no GPU support)
sudo pip install tensorflow-gpu  # Python 2.7; GPU support
sudo pip3 install tensorflow-gpu # Python 3.n; GPU support

(Optional) 如果上一步请求失败,通过下列形式的命令来安装最新版本的TensorFlow:

sudo pip  install --upgrade TF_BINARY_URL   # Python 2.7
sudo pip3 install --upgrade TF_BINARY_URL   # Python 3.N

TF_BINARY_URL表示TensorFlow Python包的URL。正确的TF_BINARY_URL 取决于操作系统、Python版本和GPU。举例来说,如果你想把TensorFlow安装在Linux、Python 3.4、CPU-only版本,那么正确的地址如下:

 sudo pip3 install --upgrade \
 https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-py3-none-any.whl

运行TensorFlow小程序测试一下:

Python中运行如下程序:

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

如果返回Hello, TensorFlow!,则安装成功~

17/9/29更新:如果想提升tensorflow的运行速度请通过sources的方式安装,如下

Installing TensorFlow from Sources

  1. Clone the TensorFlow repository 克隆最新版tensorflow:

     git clone https://github.com/tensorflow/tensorflow
    
  2. Prepare environment for Linux Install Bazel

    Install TensorFlow Python dependencies(如果装过就不用装了):

     sudo apt-get install python3-dev python3-wheel
    
  3. Configure the installation 首先运行tensorflow根目录下的脚本文件:

     cd tensorflow  # cd to the top-level directory created
     ./configure
    

    然后生成pip包:

     bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
    

    bazel 生成一个脚本文件 build_pip_package. 运行该文件会生成一个.whl 文件在/tmp/tensorflow_pkg目录下:

     bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    

    安装pip包:

     sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-py2-none-any.whl
    

2.2 Keras

参考自Keras中文文档Keras Documentation

在终端pip安装Keras:

sudo pip install -U --pre keras

安装完毕后,输入python,然后输入:

import keras

如果没有任何提示,则表明安装已经成功。

Keras中mnist数据集测试

下载Keras开发包:

cd GitProjects
git clone https://github.com/fchollet/keras.git
cd keras/examples/
python mnist_mlp.py

程序无错进行,至此,Keras安装完成。

17/9/29更新:可通过sources方式安装最新版keras

首先卸载原有的keras:

sudo pip3 uninstall keras

安装:

sudo pip3 install git+https://github.com/fchollet/keras.git

2.3 Caffe

2.3.1 克隆Caffe

从Github克隆Caffe源码:

cd GitProjects
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config

如果你已经安装了cuDNN, 在Makefile中取消USE_CUDNN := 1的注释:

sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config

如果你已经安装了OpenBLAS, 在Makefile中把BLAS的值修改为open

sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config

2.3.2 安装,编译及测试caffe

安装所有要求的包,编译Caffe,编译tests,运行tests,确保通过所有的测试。注意这需要一定的时间:

sudo pip install -r python/requirements.txt
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))

make all出错解决方法 参考自ubuntu配置caffe遇到的问题

如果出现以下错误

./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory

解决方法如下:

在Makefile.config文件的第94行(行数可能会变),添加 /usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

在Makefile文件的第181行(行数可能会变),把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

2.3.3 编译PyCaffe

PyCaffe是Caffe的Python接口,命令如下:

make pycaffe -j $(($(nproc) + 1))

更新:如果想在python3下安装,请在Makefile.config中:

  1. 去掉第78、79行中关于python3的注释:PYTHON_LIBRARIESPYTHON_INCLUDE
  2. 在第78行把boost_python3改成boost_python-py35

添加Caffe到你的环境变量:

echo 'export CAFFE_ROOT=$(pwd)' >> ~/.bashrc
echo 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc

测试你的Caffe,如果下列代码运行中没有报错说明安装成功了:

ipython
import caffe
exit()

更新:如果出现如下错误:

raise ValueError, "Can't create weekday with n == 0"

这说明你的matplotlib版本过低,请更新:

sudo pip3 install matplotlib --upgrade

2.4 Pytorch

Pytorch官网

根据自己的配置情况在官网选择对应的选项,执行对应代码,我选择的代码如下:

pip3 install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp35-cp35m-manylinux1_x86_64.whl 
pip3 install torchvision

请注意,如果执行第二句时报错,请不要惊慌,见Issue #566。这时选择不按照依赖即可:

pip3 install no-deps torchvision

2.5 Caffe2

caffe2官网

请注意,目前Caffe2只支持Python2.7,不支持Python3。(据我所知,如果有后续更新请通知我)

2.5.1 安装依赖包

由于之前我们的包都安装在了Python3里面,现在还需要重新在Python2里再安装一遍:

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
      build-essential \
      cmake \
      git \
      libgoogle-glog-dev \
      libprotobuf-dev \
      protobuf-compiler \
      python-dev \
      python-pip                          
sudo pip install numpy protobuf

由于之前已经安装过了配置好了CUDA和cuDNN,这里我们直接跳过就好。

继续安装其他依赖包(针对Ubuntu 16.04):

sudo apt-get install -y --no-install-recommends libgflags-dev

更多依赖包:

# for both Ubuntu 14.04 and 16.04
sudo apt-get install -y --no-install-recommends \
      libgtest-dev \
      libiomp-dev \
      libleveldb-dev \
      liblmdb-dev \
      libopencv-dev \
      libopenmpi-dev \
      libsnappy-dev \
      openmpi-bin \
      openmpi-doc \
      python-pydot
sudo pip install \
      flask \
      future \
      graphviz \
      hypothesis \
      jupyter \
      matplotlib \
      pydot python-nvd3 \
      pyyaml \
      requests \
      scikit-image \
      scipy \
      setuptools \
      six \
      tornado

2.5.2 Clone & Build

克隆并编译:

git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
make && cd build && sudo make install
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

显示Success表明前面的安装已经成功了!不要高兴得太早,还要检查一下GPU是否工作正常:

python -m caffe2.python.operator_test.relu_op_test

这里我就安装成功了,如果有各种奇怪问题请参考troubleshooting

备注

更多深度学习工具安装教程参考:

© Luozm . All rights reserved. | Top

Life

Theory

Develop