最近为了研究深度学习所以需要安装一个深度学习的环境,弄了一个星期,重装了10次电脑总算是弄好了,虽然还有很多不明白的地方,不过整个流程基本上是熟悉了。安装过程中看了很多网上的教程,没有一个是可以正常安装好的。其实我第一次安装就成功了,测试程序也跑起来了,GPU运算速度很快,但是一重启就懵逼了。。。。。。因为我使用的电脑是双显卡intel核显以及Nvidia GEFORCE GTX960M显卡(双显卡的电脑应该还是很多的),所以很容易出现各种驱动问题,一般问题会导致三种情况:
1.启动后电脑黑屏,不能进行任何操作(可能还有救)。
在grub界面选择要登录的系统按“e”,进入编辑界面,在倒数第二行末尾加入acpi_osi=linux nomodeset,具体操作可以上网查。
2.启动后电脑黑屏但是可以通过CTRL+ALT+F1(我的电脑是CTRL+ALT+F4)进入命令行模式(可能还有救)。
删除所有nvidia,sudo apt-get remove nvidia*,然后重启。
3.进入登录界面,然后不断地让你登录,一直登录不进去,进入命令行也一直闪烁(可能没救了)。
我用的是DELL电脑,GPU是GEFORCE GTX960M,大家的GPU比我的新或者差不多应该就没问题。
下面为了能让新手“比较顺利”的安装,尽量把一些可能出现的问题也尽量写出来,好了,现在开始。
1.首先安装CUDA
(a)首先安装好Ubuntu16.04,然后先安装一些依赖
sudo apt-get update
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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
(b)安装好之后需要禁用nouveau,创建/etc/modprobe.d/blacklist-nouveau.conf,写入:
blacklist nouveau
option nouveau modeset=0
然后sudo update-initramfs -u
(c)配置一些基本的环境变量
vim ~/.bashrc
加入:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
到这里之后有些教程会让我们上NVIDIA官网上看我们的GPU型号应该用什么版本的驱动,其实不需要
另外有些教程会让我们把gcc和g++版本降低,比如降低为gcc-4.9和g++-4.9,我建议最好不要,后面会出错
(d)然后我们需要下载CUDA(https://developer.nvidia.com/cuda-downloads),这个网址
(e)安装cuda有点讲究
下载完成后重启电脑,在出现登录界面时,登录tty1,按Ctrl + Alt + F1,在文本模式中登录
关闭桌面服务sudo service lightdm stop。这步对于安装Nvidia驱动至关重要
进入下载cuda文件的目录执行:
sudo sh cuda-8.0.44_linux.run --no-opengl-libs
如果不加--no-opengl-libs应该是会出现循环登录问题
安装过程中完全按照它的指引就可以了,大概是
Accept EULA conditions
Say YES to installing the NVIDIA driver
Say YES to installing CUDA Toolkit + Driver
Say YES to installing CUDA Samples
然后重启,这个时候应该没有循环登录问题,可以正常进入桌面了
(f)修改环境配置
vim ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda8.0b64:$LD_LIBRARY_PATH
source .bashrc
(g)测试CUDA的sammples:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
如果看到一些GPU的信息说明安装成功
2.配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
(a)首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载
我已经下载好了,直接分享吧http://pan.baidu.com/s/1bp3hTmv,自己下载的话按照下图选择
(b)下载cuDNN5.1之后进行解压,cd进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
(c)再将cd进入lib64目录下的动态文件进行复制和链接:
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
3.安装opencv3.1
从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置
在你的opencv目录下
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 BUILD_TIFF=ON -D WITH_OPENGL=ON ..
make -j4
make的时间比较久,耐心等待。。。
sudo make install
sudo vim /etc/ld.so.conf
加上/usr/local/lib
然后sudo ldconfig
4.安装Anaconda
(a)网址:https://www.continuum.io/downloads,选择PYTHON2.7版本,根据自己系统位数,然后下载
下载完之后执行下载的文件,比如:
bash Anaconda2-4.2.0-Linux-x86_64.sh
后面就根据提示执行就可以了,很简单
(b)你在命令行输入python,会调用系统自带的python,所以
执行完之后需要替换python
vim ~/.bashrc
加入anaconda的安装目录是/home/xxx/anaconda2,那么在文件的最后加上
alias python=’/home/xxx/anaconda2/bin/python‘
然后source .bashrc
你再执行python就变成了anaconda的python
5.安装caffe
(a)从github上获取caffe:
git clone https://github.com/BVLC/caffe.git
进入caffe目录
sudo cp Makefile.config.example Makefile.config
(b)我们需要修改Makefile.config文件
vim Makefile.config
以下是需要修改的地方
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
注释掉原来的PYTHON_INCLUDE,使用ANACONDA的配置,
注意文件的ANACONDA_HOME := $(HOME)/anaconda
可能需要改为ANACONDA_HOME := $(HOME)/anaconda2,根据自己的情况
#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
#PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
(c)然后修改makefile文件
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
然后再大概181行的地方做修改
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui
(d)编辑/usr/local/cuda/include/host_config.h
#error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 5 are not supported!
(e)
make all -j4
运气好的话就可以编译成功了,如果还有一些小问题可以百度谷歌解决。