参考文章http://blog.csdn.net/songrotek/article/details/50770154
使用ubuntu安装深度学习环境caffe和tensorflow过程中会遇到挺多麻烦事。写个文档总结下安装
安装cuda
这里我使用cuda7.5的deb进行安装。
之前我尝试过使用.run文件进行安装。但是常常安装完成之后重启出现一直在登陆界面的情况。网上有很多这方面的问题,但能真正解决办法的很难找到。因此这里采用.deb安装。需要注意的是,可以跳过单独安装Nvidia的显卡驱动而直接安装cuda,因为cuda里面自带了显卡驱动,会自动安装
Step 2.1 到Nvidia官网下载cud的deb安装文件
Step 2.2 关闭与Nvidia内核不兼容的nouveau
这里参考caffe安装教程:https://github.com/BVLC/caffe/wiki/Install-Caffe-on-EC2-from-scratch-(Ubuntu,-CUDA-7,-cuDNN)
打开Terminal终端(Ctrl+Alt+T)
sudo edit /etc/modprobe.d/blacklist-nouveau.conf
1
1
在文件中写入:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
1
2
3
4
5
1
2
3
4
5
在terminal中执行
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
sudo reboot
1
2
3
1
2
3
(貌似并没有执行conf文件,但关掉了nouveau,如果没有关掉nouveau,会导致安装cuda之后重启就进入不了系统,出现 ACPI PCC probe failed的错误)
重启开始安装cuda
Step 2.3 安装build-essential
sudo apt-get update
sudo apt-get install build-essential
1
2
1
2
Step 2.4 安装cuda
进入到cuda .deb安装位置
sudo dpkg -i cuda-repo-ubuntu1404_local_7.5-18_amd64.deb
sudo apt-get update
sudo apt-get install cuda
1
2
3
1
2
3
安装完毕之后,打开bashrc文件,将cuda路径写入:
gedit ~/.bashrc
1
1
在basic文件中写入:
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=:/usr/local/cuda/lib64
1
2
1
2
Step 2.5 验证安装
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
1
2
3
1
2
3
运行测试代码,如果现在找到GPU则成功
Step 3 安装cudnn
这部分比较简单,首先要注册Nvidia的开发账号,然后才能下载cudnn。
下载下来后:
tar -zxf cudnn-7.0-linux-x64-v3.0-prod.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
1
2
3
4
1
2
3
4
Step 4 更新一下系统
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install linux-source
sudo apt-get install linux-headers-uname -r
1
2
3
1
2
3
其中Linux-source在前面参考教程中有安装,因此也一并安装。
重启后仍然有ACPI PCC probe failed的错误,但不影响进入系统
Step 5 安装Caffe
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml python-numpy
sudo easy_install pillow
sudo apt-get install pypy-dev
cd ~
git clone https://github.com/BVLC/caffe.git
cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install
cp Makefile.config.example Makefile.config
vi Makefile.config
去掉USE_CUDNN:=1注释
去掉WITH_PYTHON_LAYERS注释
make pycaffe -jX
make all -jX
make test -jX
export PYTHONPATH=/home/username/caffe/python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Step 6: 安装tensorflow
sudo apt-get install python-pip python-dev
Ubuntu/Linux 64-bit, GPU enabled:
sudo pip install –upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.7.1-cp27-none-linux_x86_64.whl
1
2
3
4
1
2
3
4
测试tensorflow:
$ python
…
import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
print(sess.run(hello))
Hello, TensorFlow!
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
42
安装完后,安装OpenBlas
参考文献 http://blog.csdn.net/xiaojun111111/article/details/59042673
http://www.cnblogs.com/llxrl/p/5292119.html
使用Caffe的模型做分类时,其运算大概是这样:把输入的图像当做矩阵,一直不停的和模型里面的卷积层kernel做卷积,然后推给pooling层做缩放,最后得到分类结果。最耗时的部分应该在于卷积的操作,Caffe把卷积这种操作转化成了矩阵相乘。而Caffe使用了BLAS的矩阵相乘接口。BLAS是一个数学函数接口标准,有很多个实现。按照Caffe官方ubuntu的安装文档默认安装的是ATLAS。这个版本的BLAS不能利用多核CPU,我们将其换为OpenBLAS,可以利用多核CPU并行计算,加快Caffe的分类速度。
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make -j4 # 4核cpu
sudo make PREFIX=/usr/local/OpenBLAS install
修改Caffe的Makefile.config,将下面几行:
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas
添加环境变量
在 /etc/profile 末尾加上 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/OpenBLAS/lib/ 然后 sudo source /etc/profile
注:直接安装在/usr/local 下应该就不需要添加环境变量
编译Caffe
make all
make test
make runtest
经过以上之后Caffe就算是编译成功了!
ps:会遇到make: Nothing to be done for
all’`的错误。
那如何让make重新编译源文件呢?
有时候,因为系统的不同,导致运行库版本不同,则需要重新编译源文件。方法如下:
make clean #清除上次make命令所产生的object文件(后缀为“.o”的文件)及可执行文件
ldconfig #该命令通常在系统启动时运行,确保动态链接库为系统所共享。当用户安装了一个新的动态链接库时,则需手工运行该命令。)
make #执行makefile文件)
可在环境变量中设置OpenBLAS所使用的CPU线程数
export OPENBLAS_NUM_THREADS=4
export PATH = /home/yukaihua/opt/nios2/bin : $PATH