Ubuntu-安装-theano+caffe-超详细教程

一、说明

  • 本文是继《Ubuntu-安装-cuda7.0-单显卡-超详细教程》 之后的续篇。theano和caffe是深度学习库,对运算能力需求很大,最好使用cuda进行加速。所以,请先阅读《Ubuntu-安装-cuda7.0-单显卡-超详细教程》,成功安装cuda之后,再来安装theano和caffe。

二、安装Theano

1. 安装各种包

  • 安装gfortran, numpy, scipy, sklearn, blas, atlas等包

    # 安装gfortran,后面编译过程中会用到
    sudo apt-get install gfortran
    
    # 安装blas,Ubuntu下对应的是libopenblas,其它操作系统可能需要安装其它版本的blas——这是个OS相关的。
    sudo apt-get install libopenblas-dev
    
    # 安装lapack,Ubuntu下对应的是liblapack-dev,和OS相关。
    sudo apt-get install liblapack-dev
    
    # 安装atlas,Ubuntu下对应的是libatlas-base-dev,和OS相关。
    sudo apt-get install libatlas-base-dev
    
    # 安装pip
    sudo apt-get install python-pip
    sudo apt-get install python-dev
    sudo apt-get install python-nose
    sudo apt-get install g++
    sudo apt-get install git 
    

2. 安装numpy和scipy

  • 安装这两个python库有点问题,如果使用apt-get安装,后面的test不能通过。如果使用pip安装,有得考虑各种依赖关系。

  • 所以,先使用apt-get安装,然后再卸载,最后再使用pip安装。这样,既能不考虑依赖关系,又能通过后面的test()测试。

    #安装numpy和scipy
    sudo apt-get install python-numpy
    sudo apt-get install python-scipy
    sudo apt-get install python-sklearn
    #卸载numpy和scipy
    sudo apt-get remove python-numpy
    sudo apt-get remove python-scipy
    # 安装numpy
    sudo pip install numpy
    # 测试numpy
    # 如果没有安装python-nose,测试会出错!
    python -c "import numpy;numpy.test()"
    # 安装scipy
    sudo pip install scipy
    # 测试scipy
    python -c "import scipy;scipy.test()"
    

3. 安装Theano

  • 前面的操作如果没有出现错误,就可以开始安装Theano了。命令如下所示。

    # 安装Theano
    sudo pip install Theano
    # 测试Theano
    python -c "import theano;theano.test()"
    

4. 安装pyCUDA

  • 测试Theano时,提示PyCUDA import错误,因此需要安装pyCUDA。而PyCUDA需要以Boost为基础,所以应该先安装Boost。

  • 使用pip安装pyCUDA。

    #安装boost
    sudo apt-get install libboost-all-dev
    
  • 如果使用pip安装pyCUDA出错,使用下面安装方式。参考文章:《Ubuntu Theano CUDA》

    git clone --recursive http://git.tiker.net/trees/pycuda.git
    cd pycuda
    sudo ./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib/x86_64-linux-gnu --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python --boost-thread-libname=boost_thread --no-use-shipped-boost
    make -j 4 #电脑核数
    sudo python setup.py install
    

5. 解决cuda_ndarray.cu错误

  • 如果出现错误:ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.6.5 cannot open shared object file: No such file or directory,需要运行以下命令:

    sudo ldconfig /usr/local/cuda-7.0/lib64
    

6. 配置Theano

  • 在主目录下新建.theanorc文件

    cd ~
    vi .theanorc
    
  • 在.theanorc中输入下面的内容

    [cuda]
    root=/usr/local/cuda/bin/
    [global]
    floatX = float32
    device = gpu0
    [nvcc]
    fastmath = True
    

7. 测试Theano是否在使用GPU

  • 将下列python代码复制到useGPU.py,并运行。

    from theano import function, config, shared, sandbox
    import theano.tensor as T
    import numpy
    import time
    
    vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
    iters = 1000
    
    rng = numpy.random.RandomState(22)
    x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
    f = function([], T.exp(x))
    print f.maker.fgraph.toposort()
    t0 = time.time()
    for i in xrange(iters):
        r = f()
    t1 = time.time()
    print 'Looping %d times took' % iters, t1 - t0, 'seconds'
    print 'Result is', r
    if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
        print 'Used the cpu'
    else:
        print 'Used the gpu'
    
  • 假定上面已经设置文件.theanorc,运行命令如下所示:

    python useGPU.py
    
  • 如果出现下面的错误信息,请运行命令sudo ldconfig /usr/local/cuda-7.0/lib64参考

    #错误信息
    ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: libcublas.so.7.0: cannot open shared object file: No such file or directory
    

Theano相关资料

  • 参考:Using the GPU & THEANO_FLAGS & THEANORC

  • CUDA Toolkit默认安装在/usr/local/cuda/,含有bin, lib, include等子文件夹。/usr/local/cuda/bin/文件夹称为cuda root文件夹。

  • 使用Theano时,必须告诉它CUDA root文件夹,有3种方法:

    • 定义$CUDA_ROOT环境变量。例如, CUDA_ROOT=/usr/local/cuda/bin/

    • 在THEANO_FLAGS中添加cuda.root标识。例如,THEANO_FLAGS='cuda.root=/usr/local/cuda/bin/'

    • 在.theanorc文件夹中添加[cuda]

        [cuda]
        root=/usr/local/cuda/bin/
      
  • 还需要更改设备选项(gpu or gpu0 or gpu1),设置默认的浮点计算类型(float32)

    • 方法一: THEANO_FLAGS=’cuda.root=/usr/local/cuda/bin/,device=gpu,floatX=float32’

    • 方法二: 设置.theanorc文件的[global]选项:

        [cuda]
        root=/usr/local/cuda/bin/
        [global]
        device = gpu
        floatX = float32
      
  • 注意:

    • 如果电脑有多个GPU,而配置是‘device=gpu’,驱动会选择其中一个使用(一般是 gpu0)。可以使用 nvida-smi 改变这一规则。
    • 可以通过指定 ‘device=gpuX’来选择一个特定的GPU。
    • 默认使用GPU计算。如果GPU有问题,Theano会退回使用CPU。可以通过设置标识‘force_device=True’,当GPU不能使用时,弹出错误信息。

安装OpenCV

下载OpenCV

  • 下载地址:https://github.com/jayrambhia/Install-OpenCV,这是根据大神编译过的版本进行安装的。
  • 切换到文件保存的文件夹,然后安装依赖项:
#切换路径
cd ~/Downloads/Install-OpenCV-master/Ubuntu
#安装OpenCV的依赖项
sudo ./dependencies.sh
#切换路径
cd 2.4
#修改opencv2_4_9.sh, 添加CUDA_GENERATION
#根据显卡支持Fermi或Kepler做相应的修改。此处以Fermi为例。
sudo gedit opencv2_4_9.sh
  • 将以下内容
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ..
  • 修改为:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_GENERATION=Fermi ..
  • 即在最后的..前面添加***CUDA_GENERATION=Fermi***
  • 安装最新版opencv2_4_9
#添加执行权限
sudo chmod +x opencv2_4_9.sh
#安装OpenCV
sudo ./opencv2_4_9.sh
  • 等待…..,直到安装完成。如下图所示。 http://img.blog.csdn.net/20150731210950383这里写图片描述

安装其它依赖项

  • 执行以下命令,安装其它依赖项
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler  python-pandas 

安装glog

  1. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:
$ tar zxvf glog-0.3.3.tar.gz
$ ./ configure
$ make
$ sudo make install

安装caffe

下载caffe

  • 下载地址:https://github.com/BVLC/caffe

编辑Makefile.config

  • 参考: http://caffe.berkeleyvision.org/installation.html http://ouxinyu.github.io/Blogs/20140723001.html
  • 执行以下命令,通过设置Makefile.config文件,来使用CuDNN来加速。
unzip caffe-master.zip #本地解压caffe-master
cd /caffe-master #切换路径
vi Makefile.config #编辑Makefile.config
  • 开始编辑Makefile.config
    • 取消第5行的注释,即将 #USE_CUDNN=1 改为 USE_CUDNN=1
    • BLAS=atlas 改为 BLAS=open

执行以下命令,

配置Python相关选项

  • 安装python依赖库
cd python #切换到./caffe-master/python/路径下
for req in $(cat requirements.txt); do sudo pip install $req; done
  • 设置Python环境变量
sudo vi /etc/profile # 编辑profile文件
#在最后面添加以下语句,注意将path换成你的系统下的路径
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

安装Matlab

  • 选择Mathworks.Matlab.R2014a.Unix.iso - 右键 - 使用磁盘映像挂载器打开”
  • 进入装载的虚拟光盘,拷贝全部文件至home/Matlab 文件夹
  1. 授权安装文件夹 $ chmod a+x Matlab -R
  2. 安装 $ sudo ./install 拷贝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/
安装完毕,程序默认启动路径:
$ sh /usr/local/MATLAB/R2014a/bin/matlab