工作站是64位,Ubuntu14.04系统
系统版本查看:lsb_release –a
查看是32bit还是64bit:sudo uname --m
P.S.其他系统命令:
sudo uname --s 显示内核名字s
sudo uname --r 显示内核版本
sudo uname --n 显示网络主机名
sudo uname --p 显示cpu
查看显卡型号:lspci |grep -i vga(我的显卡是GTX 1080Ti)
1. 安装相关依赖项
sudo apt-get install build-essential # basic requirement
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-devprotobuf-compiler
sudo apt-get install--no-install-recommendslibboost-all-dev
sudo apt-get install libopenblas-dev liblapack-devlibatlas-base-dev
sudo libgflags-dev libgoogle-glog-dev liblmdb-dev #required by caffe
2. 安装NVIDIA驱动
(1)下载驱动
首先去官网http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载。
驱动文件名是以.run结尾的。我下载好的驱动是NVIDIA-Linux-x86_64-384.69.run
(如果是中文系统:要把这个文件移动到家目录下,因为安装显卡驱动要切换到命令界面下,如果放到~/下载 下面,没有中文输入法不能进入这个目录)
(2)安装驱动
在终端下输入: sudo gedit/etc/modprobe.d/blacklist.conf
输入密码后在最后一行加上 blacklist nouveau . 这里是将Ubuntu自带的显卡驱动加入黑名单。
在终端输入: sudo update-initramfs -u ,重新生成initrd文件
完成后重启电脑。
接下来安装显卡驱动。首先要给NVIDIA***.run驱动程序添加可执行权限:sudo chmod +x NVIDIA**.run
关闭X-Window(图形界面):sudo service lightdm stop,然后切换到tty1:Ctrl+Alt+F1即可
在纯字符界面下,登陆用户
接下来就是最关键的一步了:sudo ./NVIDIA.run开始安装,安装过程比较快,根据提示选择即可(一般都是YES)
最后安装完毕后,重新启动X-Window:sudo service lightdm start,然后Ctrl+Alt+F7进入图形界面;
重启电脑,输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。
3. 安装配置CUDA和cuDNN
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。
安装CUDA前我先更新了自带的gcc、g++版本到4.9
http://blog.csdn.net/zongchenxian341/article/details/72377387
(1)下载安装CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA。
选择对应版本的CUDA下载.run文件,我的是cuda_8.0.61_375.26_linux.run
下载完执行以下命令:
sudo sh cuda_****.run
启动安装后有大量条款,一路空格到最后accept,之后有一系列提示确认,一般都是y,但注意问要不要装driver时选n(因为之前装过了)。
后面是一系列安装路径确认,我只改动了samples的位置:/usr/local/cuda-8.0/samples
安装完成后有warning提示没有装driver,不用理。
(2)安装配置cuDNN
cuDNN是GPU加速计算深层神经网络的库。
从官网https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN(需要注册账号),我下的版本是v5.1 for CUDA 8.0
下载之后解压,
sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
解压后得到cuda目录,文件拷贝:
cd cuda
sudo cp lib/lib* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include/
更新软连接:
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.5.1.10
sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -sf libcudnn.so.5 libcudnn.so
sudo ldconfig
(3)配置环境变量
在/etc/profile中添加CUDA环境变量:sudo gedit /etc/profile
在末尾加入
PATH=/usr/local/cuda/bin:$PATH
export PATH
保存之后创建链接文件:sudo vim /etc/ld.so.conf.d/cuda.conf
添加 /usr/local/cuda/lib64, 保存退出。终端下接着输入 sudo ldconfig 使链接生效。
(4)生成CUDA Sample测试
进入/usr/local/cuda/samples, 执行下列命令来build samples
sudo make all -j4
整个过程大概10分钟左右, 全部编译完成后, 进入 samples/bin/x86_64/linux/release, 运行deviceQuery
./deviceQuery
执行后如果显示出了关于GPU的信息,则说明安装成功。
4. 安装OpenCV
从官网http://opencv.org/ 下载opencv的Source Code,我下载的是opencv-3.1.0.zip
(1)安装依赖项(可能跟之前有重复,不影响):
sudo apt-get install build-essential
# 必须的,gcc编译环境
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 必须的,包括cmake等工具
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# 可选的,看个人需要,总共5M左右
解压:unzip opencv-3.1.0.zip
建立编译目标文件夹:
cd opencv-3.1.0
mkdir build
cd build
(2)用cmake方式生成Makefile
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
# 生成后的Makefile在build文件夹中,而需要的CMakeLists.txt在 ".."中,即上一级文件夹中(opencv-3.1.0)
在Configure过程中,若出现
– ICV: Downloading ippicv_linux_20141027.tgz…
则下载ippicv_linux_20151201.tgz ,替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b 下的同名文件即可,注意替换后,重新编译,或着一开始就放进去。
(3)编译(还是在build目录下):
sudo make -j8
编译过程中出现“nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated”,只是提示build target 2.0, 2.1被弃用了,不影响编译。
编译到后面出现有关opencv_cudalegacy的错误,这是因为opencv3.2以下与cuda8.0不兼容导致的。(好像3.2版本开始就支持cuda8.0了)
解决办法:进入opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp,做如下修改:
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)
之后重新make即可。
(4)安装
sudo make install
(5)配置library
在/etc/ld.so.conf.d目录中创建一个名字为opencv.conf的文件,在里面写入libopencv_***.so所在的路径(/usr/local/lib)
然后运行命令
sudo ldconfig
完成。
5. 安装Python环境
去Anaconda官网下载安装包。我下的是Python2.7 version,下载下来是Anaconda2-4.4.0
安装Anaconda:
bash Anaconda-***.sh
基本一路默认或者yes,安装到home/userame/anaconda2下面,最后会询问把anaconda的bin添加到用户的环境变量中,选择yes。
添加Anaconda Library Path:
在~/.bashrc最后添加下边路径
# add library path
LD_LIBRARY_PATH=your_anaconda_path/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
P.S.看到其他帖子中推荐不要在/etc/ld.so.conf.d或是/etc/profile中添加库文件,因为anaconda有几个链接库和系统链接库文件类似,如果添加到这两个文件中,可能会出现电脑重启之后不能进入界面的情况(之前被坑过我就不试了。。)
完成后.bashrc的更新还没有生效,命令行输入:source ~/.bashrc
重启Terminal即可生效。
测试Python环境:
6. 编译caffe!!!!!
(1)下载
去caffe的github上下载caffe源码包
下载后解压得到caffe-master文件夹。
(2)配置
进入caffe-master目录,复制一份Makefile.config.examples
cp Makefile.config.example Makefile.config
打开Makefile.config文件
sudo gedit Makefile.config
修改其中的配置:
修改完之后保存退出。
(3)编译
make all -j8
make test
make runtest
(Ubuntu16.04在make过程中好像会出现关于hdf5有关的问题)
出现如下结果,说明编译caffe成功:
编译Python wrapper:
make pycaffe
到此caffe配置完毕!
(4)MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
将终端定位到Caffe根目录:cd ~/caffe
下载MNIST数据库并解压缩:./data/mnist/get_mnist.sh
将其转换成Lmdb数据库格式:./examples/mnist/create_mnist.sh
训练网络:./examples/mnist/train_lenet.sh
训练完可以看到损失与精度数值:
可以看到最终训练精度是0.9914。
<补充>
1. import caffe提示找不到或者没有此模块:没有配caffe中python的环境变量!!!
解决:
添加到 sudo vim ~/.bashrc
PYTHONPATH=~/caffe-master/python:$PYTHONPATH
export PYTHONPATH
添加完成后记得要
source ~/.bashrc
2. 输入caffe出错:找不到libhdf5_hl.so.10
没有配置caffe路径!caffe编译之后生成的是一个./build_release的隐藏文件,需要在path中添加这个文件中的tools路径才能使用caffe
解决:
vim /etc/p[rofile
在文件末尾添加:
export PATH=$PATH:~/caffe-master/.build_release/tools/
保存退出后记得用source profile 更新。
3. No module named google.protobuf.internal
这说明你没有添加google.protobuf.的位置
sys.path.append('/usr/lib/python2.7/dist-packages/')
解决:安装pip
pip install protobuf
最后验证caffe安装:
输入caffe
(完)