(1)Ubuntu16.04.1 x64系统,GPU: TITAN XP
(2)NVIDIA驱动:NVIDIA-Linux-x86_64-375.66
(3)CUDA8.0.61
(4)cuDNN V5.1
(5)OpenCV3.4.2
驱动的版本不仅与你安装的显卡型号有关,还与你所装的系统的内核有关,如果你装的驱动的型号比较老,而你的系统内核比较高,在装驱动时就会出现出现:ERROR : An error occurred while performing the step : ” Building kernel modules “. See /var/log/nvidia-installer.log for details.
问题原因:Linix系统的内核是在不断更新的,而安装的NVIDIA驱动是之前下载好的,没有更新,因此安装过程中无法创建内核。
关于内核的操作可以看这篇博文https://blog.csdn.net/u011304615/article/details/70919711
并且不同的显卡驱动对应不同的CUAD版本,显卡驱动版本与CUAD版本不一样,就会出现cuad drive version 与 cuad runing version 不一致的情况就会出错。它们之间的关系具体可以参考这篇博文https://blog.csdn.net/zl535320706/article/details/83474849
正常的是官网查询GPU驱动,下载安装就好。我的推荐安装显卡驱动版本是384.130对应的是cuda9.0,但是我需要安装cuda8.0,刚开始安装的是Ubuntu16.04.5的系统,内核版本比较高,又重新安装16.04.1的系统核是4.4.0-31-generic
然后装的显卡驱动是NVIDIA-Linux-x86_64-375.66,下载地址是http://us.download.nvidia.com/XFree86/Linux-x86_64/375.66/NVIDIA-Linux-x86_64-375.66.run,将驱动放到Home。
Ubuntu都预装了开源的nouveau显卡驱动,如果不禁用,则显卡驱动,CUDA驱动不能正确安装,所以要将nouveau加入黑名单。
1) 在终端下输入: sudo gedit /etc/modprobe.d/blacklist.conf
2) 输入密码收在最后一行加上:blacklist nouveau. 这里是将Ubuntu自带的显卡驱动加入黑名单
3) 在终端输入:sudo update-initramfs –u,使修改生效
4)重启电脑
5) 打开终端输入lsmod | grep nouveau,没有输出,则屏蔽成功
1)可以先卸载一下原来的显卡驱动,终端输入sudo apt-get remove –purge nvidia*
2)在终端输入 sudo service lightdm stop
3)按Ctrl+Alt+F1~F6进入命令行界面(安装GPU驱动要求在命令行环境),输入用户名和密码进入用户目录
4)sudo chmod +x ./NVIDIA-Linux-x86_64-384.111.run,修改权限。然后:sudo ./NVIDIA-Linux-x86_64-384.111.run,进入安装程序
5)完成安装后,重启电脑
6)重启电脑后,输入以下指令进行验证:sudo nvidia-smi,若列出了GPU的信息列表则 表示驱动安装成功。
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。
1)首先安装依赖包
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
有一定几率安装失败而导致后续步骤出现问题,所以要确保以上依赖包都已安装成功,验证方法就是重新运行安装命令,如验证 git cmake build-essential是否安装成功共则再次运行以下命令:
sudo apt-get install git cmake build-essential
界面提示如下则说明已成功安装依赖包,否则继续安装直到安装成功。
2)下载CUDA
首先在官网上https://developer.nvidia.com/cuda-toolkit-archive下载CUDA。下载CUDA时一定要注意CUDA和NVIDIA显卡驱动的适配性。CUDA_8.0支持375.**及以上系列的显卡驱动;CUDA_9.0支持384.**及以上系列的显卡驱动;CUDA_9.1支持389.**及以上系列的显卡驱动。本文下载的是375.66对应的是CUDA Toolkit 8.0 GA2
3)运行安装程序
CUDA中包含有 nvidia 显卡驱动,故此步骤 CUDA 的安装包括了 nvidia 显卡驱动的安装,此时注意你是否已经安装过 nvidia 显卡驱动,若无法保证已安装的 nvidia 显卡驱动一定正确,那就卸载掉之前安装的 nvidia 显卡驱动(卸载方法链接),然后开始安装 CUDA 8.0;若可以保证已安装正确的 nvidia 显卡驱动,则直接开始安装 CUDA 8.0,在安装过程中选择不再安装 nvidia 显卡驱动。
为了方便开始安装过程的路径查找,把下载的 CUDA 安装文件移动到 HOME 路径下,然后通过 Ctrl + Alt + F1 进入文本模式,输入帐号密码登录,通过 Ctrl + Alt + F7 可返回图形化模式,在文本模式登录后首先关闭桌面服务:sudo service lightdm stop
执行命令:sudo sh cuda_8.0.61_375.26_linux.run –no-opengl-libs
其中 cuda_8.0.61_375.26_linux.run 是我的 CUDA 安装文件名,而你需替换为自己的 CUDA 安装文件名,若此时忘记可直接通过 ls 文件查看文件名,这也是我建议把 CUDA 安装文件移动到 HOME 下的另一个原因。
执行此命令约1分钟后会出现 0%信息,Ctrl+ C 到100%,然后按照提示操作即可,先输入 accept ,然后让选择是否安装 nvidia 驱动,这里的选择对应第3步开头,若未安装则输入 “y”,若确保已安装正确驱动则输入“n”。
剩下的选择则都输入“y”确认安装或确认默认路径安装,开始安装,此时若出现安装失败提示则可能为未关闭桌面服务或在已安装 nvidia 驱动的情况下重复再次安装 nvidia 驱动,安装完成后输入重启命令重启:sudo reboot
4)环境变量设置
sudo gedit ~/.bashrc
在该文件最后加入以下两行并保存:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
使该配置生效:source ~/.bashrc
5)测试CUDA是否安装成功
执行以下命令:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
若看到类似以下信息则说明 cuda 已安装成功:
cuDNN是GPU加速计算深层神经网络的库。
1)登录官网:https://developer.nvidia.com/rdp/cudnn-download ,下载对应 cuda 版本且 linux 系统的 cudnn 压缩包,注意官网下载 cudnn 需要注册帐号并登录,不想注册的可从这个网盘下载:https://pan.baidu.com/s/1c2xPVzy
2)下载完成后解压,得到一个 cudn 文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
3)然后命令行进入 cudn/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.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
4)安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:
1)下载
进入官网 : http://opencv.org/releases.html , 选择 3.4.2版本的 source , 下载 opencv-3.4.2.zip
2)安装前准备,创建编译文件夹
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.4.2 目录下,执行:
mkdir build # 创建编译的文件目录
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 #编译
3)安装
以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:
sudo make install
安装完成后通过查看 opencv 版本验证是否安装成功:
pkg-config --modversion opencv
1)下载Caffe
首先在你要安装的路径下 clone :
git clone https://github.com/BVLC/caffe.git
2)修改Makefile.config
进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :
sudo cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
打开并修改配置文件:
sudogedit Makefile.config #打开Makefile.config文件 根据个人情况修改文件:
a. 若使用cudnn,则将
#USE_CUDNN:= 1
修改成:
USE_CUDNN:= 1
b. 若使用的opencv版本是3的,则将
#OPENCV_VERSION:= 3
修改为:
OPENCV_VERSION:= 3
c. 若要使用python来编写layer,则将
#WITH_PYTHON_LAYER:= 1
修改为WITH_PYTHON_LAYER := 1
d. 重要的一项,将
#Whatever else you find you need goes here. 下面的
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
这是因为Ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径。
3)修改Makefile文件
打开Makefile文件,做如下修改,将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX)-Xcompiler -fPIC $(COMMON_FLAGS)
4)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉,将
#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
改为:
//#error-- unsupported GNU version! gcc versionslater than 4.9 are not sup
5)编译
OK,可以开始编译了,在 caffe 目录下执行 :
make all -j8 #-j根据自己电脑配置决定
这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
6)测试
编译成功后可运行测试:sudo make runtest -j8
可能会出现出现error while loading shared libraries: libcudnn.so.5,参考https://blog.csdn.net/weixin_43439673/article/details/84198228,通过sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig指令解决
表示安装成功。
在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进行操作,而这一步 pycaffe 的安装以及 notebook 环境配置只是为了更方便的去使用 caffe ,实际上大多数都是通过 python 来操作 caffe 的,而 notebook 使用浏览器作为界面,可以更方便的编写和执行 python 代码。
1)编译pycaffe
cd caffe
sudo make pycaffe -j8
下是我编译 pycaffe 时出现的错误:python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
解决方法:
sudo apt-get install python-numpy
2)python 中导入 caffe 包
首先进入 python 环境:
python
然后导入 caffe :
>>> import caffe
若不报错则表示 caffe 的 python 接口已正确编译,但是应该不会那么顺利,以下是我导入 caffe 时出现的错误:
错误1:
解决方法:
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
source ~/.bashrc
错误2:
ImportError: No module named skimage.io
解决方法:
pip install -U scikit-image #若没有安装pip: sudo apt install python-pip
可能需要升级pip:pip install --upgrade pip
3)配置notebook环境
首先要安装python接口依赖库,在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。
首先进入 caffe/python 目录下,执行安装代码:
sudo apt-get install gfortran
for req in $(cat requirements.txt); do sudo pip install $req; done
安装完成以后执行:
sudo pip install -r requirements.txt
就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。
然后安装 jupyter :
sudo pip install jupyter
安装完成后运行 notebook :
jupyter notebook
或
ipython notebook
可能出错:nicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 10: ordinal not
解决:
cd /usr/lib/python2.7/
sudo gedit posixpath.py
然后加上三行代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
参考博文:https://blog.csdn.net/w5688414/article/details/76679982
再jupyter notebook可能还出错:Bad config encountered during initialization
解决: Ubuntu如果是中文的话,将系统语言 改成英文即可
打开 /etc/default/locale 文件 sudo gedit /etc/default/locale
将原来的配置内容修改为
LANG=”en_US.UTF-8″
LANGUAGE=”en_US:en”
sudo gedit /etc/environment
PATH原先存在,不做修改
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LANG=“en_US.UTF-8”
LANGUAGE=“en_US.UTF-8
sudo dpkg-reconfigure locales使设置生效,用locale查看 ,若没有warning则设置成功,然后 reboot 重启即可。
改了系统语言后,运行终端
jupyter notebook
就会在浏览器中打开notebook, 点击右上角的New-python2, 就可以新建一个网页一样的文件,扩展名为ipynb。在这个网页上,我们就可以像在命令行下面一样运行python代码了。输入代码后,按shift+enter运行,更多的快捷键,可点击上方的help-Keyboard shortcuts查看,或者先按esc退出编辑状态,再按h键查看。
参考博文:https://blog.csdn.net/qq_31163325/article/details/83051075
安装完成之后一定不要更新软件啥的,一更新NVIDIA驱动就不好用了。在系统设置->软件和更新->更新中把对号都点去,自动检查更新从不,新版本从不。。。
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
1.将终端定位到Caffe根目录
cd ~/caffe
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图所示:
参考博文:https://blog.csdn.net/yggaoeecs/article/details/79163789