更新一波
网上很多博客已经写了如何搭建的教程,因为搭建的过程中参考了很多博客和官方教程,所以在这里写下自己在笔记本上搭建的教程吧,适合随时在自己本上调程序的小伙伴们。
第一部分 系统安装
版本Ubuntukylin16.04.2。这里省略安装过程,请自行网上搜索安装过程。这里只强调一点,为了系统的稳定性,常用挂载分区(/,交换分区,/boot,/home,/usr;有些还分了/data到固态硬盘放数据集加快GPU调用数据)一定要分。
安装完系统,一定要执行以下命令来更新系统:
$ sudo apt update
$ sudo apt upgrade
然后再搜索找到软件更新器,用软件更新器更新一次系统,目的是让系统在目前保持最新。
第二部分 显卡驱动,cuda8.0和cudnn5.1的安装
1、显卡驱动安装
我这里是运用ppa更新的最新驱动,使用起来能够得到挺好的体验,并能够实现双显卡的自由切换。
首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
需要输入用户密码,并确认链接源。之后刷新软件库并安装最新的驱动,在命令行输入:
然后打开Ubuntu系统设置-》软件和更新-》附加驱动,选择最新版的显卡装有驱动,系统会自动安装好显卡驱动,然后重启系统便会切换到独显。网上好多是下载官方的显卡驱动很容易出现安装完无法登陆系统、登陆界面死循环、或者重启后黑屏。所以建议本方法。
安装成功后可以通过下面命令查看:(由于篇幅,截图省略)
2、cuda8.0安装与配置
cuda8.0下载请自行到官网下载,建议下载runfile(local)类型,下载完要进行md5校验,保证安装包不出问题。
后面用到的工具:(vim安装:终端输入$ sudo apt-get install vim 即可)
然后,退出GUI,也就是X-Win界面,操作方法是:同时按:CTRL+ALT+F1(F2-F6),切换到TTY1-6命令行模式。登陆root用户,关闭桌面服务:
再输入以下指令:
# vim /etc/modprobe.d/blacklist.conf
在文件最后面,添加这句:
重启,然后进入TTY1,登陆root用户:
# chmod +x cuda*.run #获取文件权限
# ./cuda*.run #执行文件安装
在选择条件的过程中,一定不要再次安装nvidia驱动,否则之前安装的显卡驱动就坏了。
特别注意:这里所有的编译都用Ubuntu自带编译器GCC和G++版本编译,不要进行降级,就不会导致后面编译caffe出现找不到依赖库的错误。等待cuda安装完成。
配置环境变量:
插入文本,按i键,在文件末尾添加这句:
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存退出,按esc,再输入“:wq”即可。
输入命令:
使其生效
输入命令:
# vim /etc/ld.so.conf.d/cuda.conf
添加内容:
输入命令:
使其生效
安装所缺少的库
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
3、cudnn5.1安装与配置
首先到官网下载cudnn5.1(说明:就目前而言,tensorflow-GPU1.3.0版本已经支持cudnn6.0,但是为了能用nvidia的digits工具操作tensorflow训练网络,必须按照官网的教程要求,cudnn5.1和tensorflow-GPU==1.2.1版本,digits才能自动识别)并解压,打开终端执行以下指令:
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
到此cudnn已安装好
第三部分 OpenCV3.2.0安装与配置
首先安装必要的库,有的依赖库我是已经安装过的,具体安装的先后关系已经忘了。如果出现有些依赖关系不满足的错误,可以再安装库:
$ sudo apt-get -y remove ffmpeg x264 libx264-dev
$ sudo apt-get -y install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev ibfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg
根据官网上的链接下载OpenCV3.2.0版本,并进行解压,解压之后进入安装文件目录:
$ mkdir opencv
$ cd opencv
建立要编译的build目录,然后进入build目录进行编译:
$ mkdir build
$ cd build
$ 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 ..
(如果上面cmake报错,可以用这个:$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..)
在configure过程中过程中,可能会出现下面的错误:ICV: Downloading ippicv_linux_20151201.tgz…
在直接下载该文件的过程中,会因为超时而失败,可以下载ippicv_linux_20151201.tgz, 并替换掉 opencv-3.2.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可。生成编译文件之后,在opencv-3.2.0/build目录下,终端输入:
$ make -j2
$ sudo make install
安装好以后配置环境变量,使其生效:
$ sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
特别注意:这里所有的编译都用Ubuntu自带编译器GCC和G++版本编译,不要进行降级,就不会导致后面编译caffe出现找不到依赖库的错误。等待安装完成
第四部分 Python安装和调试
python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。第一种直接安装库文件比较简单,不需要修改相应的包含路径和库文件。
*第一种如下:
首先通过下面的命令安装pip,pip是Python的一个安装和管理扩展库的工具。
$ sudo apt-get install python-pip
安装完毕之后,请输入ipython命令测试是否能正常启动。为了让IPython notebook工作,还还需要安装tornado和pyzmq:
$ sudo pip install tornado pyzmq pygments
$ sudo apt-get install libzmq-dev
使用iPyhthon NoteBook(基于浏览器的Python IDE),特别是适合需要用Python做教程的老师们,可以直接导出.py, .ipynb, html格式,安装步骤如下:
$ sudo apt-get install ipython notebook
启动(自动打开浏览器):$ ipython nootbook
通过apt-get命令可以快速安装这几个库:
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-qt4 qt4-designer pyqt4-dev-tools python-qt4-doc spyder cython swig python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags ipython protobuf-c-compiler protobuf-compiler
*第二种如下(推荐使用这种方法安装,相当于虚拟环境,方便不同版本的项目间相互切换):
Anaconda请到官网自行下载,cd进入下载文件所在的目录,在命令行输入:
$ bash AnacondaX-XXX-Linux-x86_64.sh
环境变量在安装的时候会自动添加。
下面的指令可以查看python和pip的路径,已经是在anaconda下了
$ which python
$ which pip
下面的安装会在anaconda的环境下进行框架搭建。
第五部分 caffe的安装与配置
首先,安装caffe必要的库文件:
$ sudo apt-get update
$ sudo apt-get install build-essential cmake git pkg-config libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev python-dev
$ sudo apt-get install --no-install-recommends libboost-all-dev
执行完以上的语句之后,基本的依赖库就安装完成了
为了避免下面编译caffe报错,这一步要将 libopencv-dev卸载掉,因为已经安装了opencv3.2.0并与之冲突,并且用的是anaconda,卸载指令:
$ sudo apt-get autoremove libopencv-dev
到这里建议重启一下电脑,为了将卸载的 libopencv-dev缓存清掉
重启后,安装BLAS,使用如下的语句自动安装BLAS(当然,你可以选择其他的库) ,执行:
$ sudo apt-get install libatlas-base-dev
修改配置文件,进入到caffe的根目录,执行:
$ cp Makefile.config.example Makefile.config
打开makefile.config对其进行修改,makefile.config修改内容内容如下(未配置cudnn加速):
注释第5行的 USE_CUDNN := 1
去掉注释第21行的 OPENCV_VERSION := 3
在第68行的 PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
在72行的 ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
在 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 后面添加 /usr/include /usr/include/hdf5/serial
这一行要注释掉 # LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
如果要进行多GPU显卡并行训练网络,可以将第102行# USE_NCCL := 1的注释去掉,并且安装NCCL,这个网上有教程,请自行上网查找
到这里,整个配置文件修改完毕,可以开始编译了,
$ make all -j2
$ make test -j2
$ make runtest -j2
编译Python用到的caffe文件
caffe框架到此已安装完毕,尽情看源码吧!
问题一:
在成功编译caffe的源码之后,可以在python环境中使用caffe。
在Ubuntu环境下,打开python解释程序,输入import caffe时:出现以下错误
>>>import caffe
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named caffe
解决办法,配置环境变量,终端输入:
把export PYTHONPATH="/home/用户名/caffe/python" 添加到 ~/.bashrc文件中
再在终端输入:
使环境变量生效,即可永久解决该问题
或者到caffe的python目录下执行import caffe即可
第六部分 digits的安装与配置
先把官网安装教程放在这https://github.com/NVIDIA/DIGITS/blob/master/docs/BuildDigits.md
安装包自行到官网下载
安装依赖项(sudo命令是将库包安装到系统默认路径下,前面安装了anaconda,所以pip安装到了anaconda的库包目录下了,如果出现了库包冲突请玩家自行解决,比较简单的卸载操作了)
$ sudo apt-get install --no-install-recommends git graphviz python-dev python-flask python-flaskext.wtf python-gevent python-h5py python-numpy python-pil python-pip python-scipy python-tk
进入到digits目录下执行下面指令:
$ pip install -r requirements.txt
在digits目录下执行下面指令运行digits服务,在浏览器中输入localhost:5000打开digits首页:
如果出现这个问题:
ImportError: /home/../anaconda2/lib/python2.7/site-packages/zmq/backend/cython/../../../../.././libstdc++.so.6: versionGLIBCXX_3.4.21' not found conda install libgccShould fix this error.
解决方法:
运行digits服务这步会提示找不到CAFFE_ROOT,可以将“CAFFE_ROOT=/home/用户名/caffe/”添加进环境变量里面,添加进用户的全局设置 cd进 /etc/profile
$ CAFFE_ROOT=/home/用户名/caffe/
更新环境变量:
添加进所有用户的全局设置:
将 “CAFFE_ROOT=/home/用户名/caffe/” 添加进去
更新环境变量
临时设置环境变量,在终端输入下面指令:
$ export CAFFE_ROOT=/home/用户名/caffe
digits中caffe是必须要调通的,才能看到tensorflow的
第七部分 tensorflow的安装与配置
这是digits官网里安装tensorflow的教程https://github.com/NVIDIA/DIGITS/blob/master/docs/BuildTensorflow.md
tensorflow的安装现在特简单了,一句指令搞定(为了用nvidia的digits),安装到了anaconda下了:
$ pip install tensorflow-gpu==1.2.1
V1.2.1这个版本digits会自动识别到的
第八部分 keras的安装与配置
这是keras官网的安装教程https://github.com/fchollet/keras
keras的安装也很简单,一句搞定,依赖包官网教程有的,下面指令安装到了anaconda下了: