折腾了将近一周时间, caffe 终于安装成功. 中间遇到很多坑, 系统也重装好几次, 一步步终于把 caffe 环境搭建成功了.
一, 说明
系统环境是 Ubuntu16.04_x64
二, 安装显卡驱动
1, 在 NVIDIA 官网根据条件选择下载最新的驱动即可 http://www.geforce.cn/drivers
驱动下载完成后最好使用将驱动复制到 Home 目录下, 方便后面的操作
终端进入驱动所在的路径 (也可以手动复制)
sudo cp NVIDIA-Linux-x86_64-384.69.run / 路径名 / 复制后的名字 #
(将驱动复制到路径 / home / 下, 并且重新命名为 a.run, 重新命名是方便在非图形化界面安装时的命令输入)
2, 禁用自带的 nouveau nvidia 驱动 (important!)
参考链接 http://blog.csdn.net/u012581999/article/details/52433609
sudo apt-get purge nvidia*// 卸载原有的 nvidia 驱动, 新系统不需要
创建一个文件通过命令
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
并添加如下内容:
blacklist nouveau
options nouveau modeset=0
用下面命令, 更新一下文件
sudo update-initramfs -u
修改后需要重启系统. 确认下 Nouveau 是已经被你干掉,
使用命令:
lsmod | grep nouveau
如果 nouveau 禁用成功该命令执行后没有显示, 否则该命令后会显示 nouveau 的相关信息 (可以禁用之前用该命令查看 nouveau 的相关信息).
3. 开始安装
先按 Ctrl + Alt + F1 到控制台, 首先输入用户名和密码登录, 然后关闭当前图形环境, 通过下面的命令.
sudo service lightdm stop
查看显卡驱动的全名 (如果显卡驱动名字很长, 没记住的话)
cd 目录名 // 进入到显卡驱动所在目录
ls // 列出 / home 下的所有文件和文件夹
再安装驱动程序
sudo sh NVIDIA-Linux-x86_64-xxx.run //sh-- 是显示安装过程
然后根据提示完成驱动安装.
安装完成后, 重新启动图形环境
sudo service lightdm start
重启系统后, 执行下面的命令查看驱动的安装状态
sudo nvidia-smi
sudo nvidia-settings
出现下图所示内容, 表示安装成功
或者下面的命令查看显卡驱动
cat /proc/driver/nvidia/version
如下图
4, 有可能出现的问题
(1) ,Ubuntu 系统循环登录问题, 可能原因是驱动安装失败.
解决办法: 重新进入到控制台界面, 关闭图形显示后卸载刚才安装的驱动程序
命令:
sudo sh NVIDIA-Linux-x86_64-xxx.run --uninstall
(2) , 显卡驱动安装成功, 各个测试命令都没问题, 但是, Ubuntu 显示不正常.
原因是显卡使用了转接头 (自己因为这个问题折腾了两天 (我是显卡用 DVI 转 VGA 后连接的显示器)), 显卡驱动反复重装, 通过命令显示安装成功, 但是就是显示有问题!!! 这是坑啊), 连接显示器的视频线用直连线就可以.
三, 配置安装 cuda8.0##
在英伟达官网 https://developer.nvidia.com/cuda-downloads , 根据自己的机器下载最新版的 cuda, 如下图
以前版本地址: https://developer.nvidia.com/cuda-toolkit-archive
注意这里下载的是 cuda8.0 的 runfile(local) 文件.
这里是 nvidia 给出的官方安装指南 (遇到问题时可以查阅):
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/#axzz4HIBXnwyt
参考链接:
http://www.52nlp.cn/深度学习主机环境配置-ubuntu-16-04-nvidia-gtx-1080-cuda-8
1,gcc/g++ 版本
cuda8.0 安装前要进行 gcc 版本降级, 参考我写的另一篇文章, 链接
http://blog.csdn.net/ytusdc/article/details/77980915
注意: 我在安装过程中, 没有进行降级, caffe 环境配置成功, 可能是最新版本的 cuda 能够支持高版本的 gcc/g++
2, 安装 cuda8.0
(跟安装显卡驱动过程类似, 把文件复制到 / home 目录下)
1, 在你的用户登录界面按 ctrl+alt+F1 进入 tty 模式
关闭图形界面
sudo service lightdm stop
cd 切换到下载的文件目录下进行安装:
sudo sh cuda_8.0.44_linux.run
启动安装程序, 一直按空格到最后
注意: 执行后会有一系列提示让你确认, 但是注意, 有个让你选择是否安装 nvidia 驱动时, 一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
此处一定选择否
因为前面我们已经安装了更加新的 nvidia367, 所以这里不要选择安装. 其余的都直接默认或者选择是即可.
大概有以下选项
输入 accept 接受条款
输入 n 不安装 nvidia 图像驱动, 之前已经安装过了
输入 y 安装 cuda 8.0 工具
回车确认 cuda 默认安装路径:/usr/local/cuda-8.0
输入 y 安装 CUDA 8.0 Samples, 以便后面测试
回车确认 CUDA 8.0 Samples 默认安装路径, 该安装路径测试完可以删除
安装成功后会出现如下界面:
- ===========
- = Summary =
- ===========
- Driver: Not Selected
- Toolkit: Installed in /usr/local/cuda-8.0
- Samples: Installed in /home/textminer
Please make sure that
- PATH includes /usr/local/cuda-8.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
- ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
- To install the driver using this installer, run the following command, replacing with the name of this run file:
- sudo .run -silent -driver
- Logfile is /opt/temp//cuda_install_6583.log
3,cuda 安装后配置
安装完毕后, 再声明一下环境变量, 并将其写入到 ~/.bashrc 的尾部:
打开~/.bashrc 文件
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc 尾部:
- export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
- export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
4, 测试 cuda 的 Samples
- cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
- sudo make // 该命令首次执行即可
sudo ./deviceQuery
执行完之后出现下图
如果显示的是一些关于 GPU 的信息, 则说明安装成功了.
四, 安装 cudnn-v6
参考链接: http://www.h3399.cn/201705/86033.html
参考链接: http://blog.csdn.net/qq_25073253/article/details/72571714
下载 cudnn 相应版本.
cd 到下载的文件目录下, 解压:
tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
解压后, 在当前目录下产生一个 cuda 目录
- cd cuda/include/
- sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
- cd ../lib64 #打开 lib64 目录
- sudo cp lib*/usr/local/cuda/lib64/ #复制库文件
- sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn* #给所有用户增加这些文件的读权限
建立软连接
在终端输入
- cd /usr/local/cuda/lib64/ #进入到 lib64 目录进行操做
- sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件
- sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接
- sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接
注意此处的 libcudnn.so.6.0.21,libcudnn.so.6 都是根据 cudnn 解压之后的文件定的, 我用的是 cudnn-8.0-linux-x64-v6 的所以此处是 libcudnn.so.6.0.21,libcudnn.so.6
安装完成后可用 nvcc -V 命令验证是否安装成功, 若出现以下信息则表示安装成功
五, 安装 opencv2.4.13
参考链接: http://blog.csdn.net/sinat_17196995/article/details/53466524
预安装一些软件和库等
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
opencv 可以通过下面两个链接下载
- https://github.com/Itseez/opencv/archive/2.4.13.zip
- http://opencv.org/releases.html
解压压缩包, 然后放到 / home/ - 普通用户的默认目录, 在该目录下, 每个用户拥有一个以用户名命名的文件夹的目录下
- cd opencv-2.4.13 #进入 opencv 文件夹
- mkdir build #新建一个文件夹用于存放临时文件
- cd build #切换到该临时文件夹
- cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. #开始编译
- make -j4 #编译, 开启线程 按照自己的配置
- sudo make install #编译成功后安装, 此处用 sudo, 因为要在 / usr/local 路
- # 径下创建相关文件, 必须 root 权限
安装完成后通过查看 opencv 版本验证是否安装成功:
pkg-config --modversion opencv
命令执行后显示 opencv 版本号
六, 安装高级语言接口
1, 安装其他依赖项
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
上面依赖项不全, 在执行上述命令后可能有一些依赖库没法安装, 则通过以下的命令逐个安装
安装各种更新包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
sudo apt-get install -y libopencv-dev
2, 下载 caffe 源码
首先在你要安装的路径下 (一般下载到 Home 下) clone :
- cd #进入 Home 目录
- git clone https://github.com/BVLC/caffe.git
3, 修改配置文件 Makefile.config
进入 caffe 文件夹下, 将 Makefile.config.example 文件复制一份并更名为 Makefile.config, 也可以在 caffe 目录下直接调用以下命令完成复制操作 :
- cd caffe // 进入 caffe 目录
- cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件, 而 Makefile.config.example 只是 caffe 给出的配置文件例子, 不能用来编译 caffe.
然后修改 Makefile.config 文件, 在 caffe 目录下打开该文件:
gedit Makefile.config
修改 Makefile.config 文件内容:
(1) , 应用 cudnn
如果使用 GPU 的话, 将 #USE_CUDNN := 1 修改成:
USE_CUDNN :=1
(2) , 应用 opencv 版本
如果使用的是 opencv 3 的版本, 将 #OPENCV_VERSION := 3 修改为:
OPENCV_VERSION :=3
(3) , 使用 python 接口
将 #WITH_PYTHON_LAYER := 1 修改为
WITH_PYTHON_LAYER :=1
(4) , 修改 python 路径
- // 重要的一项将
- #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 的位置, 所以需要更改这一路径
(5), 然后修改 caffe 目录下的 Makefile 文件:(Makefile 本人没有配置)
- // 将
- NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
- // 替换
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
然后修改 /usr/local/cuda/include/host_config.h 文件 :(因为我的 gcc 没有降版本所以此处没有修改)
- // 将
- #error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
- // 改为
- //#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
(6),pycaffe 相关依赖库安装
然后进入 caffe 目录下的 python 文件夹
执行
for req in $(cat requirements.txt); do sudo pip install $req; done
等待执行完毕可以编译 caffe 了
如果 pip 命令找不到, 需要安装
sudo apt-get install python-pip
(7), 编译 caffe
在 caffe 目录下执行 :
- cd .. // 此时位置应该处于 caffe 文件夹下
- make all -j4 //j8 代表计算机 cpu 有 8 个核, 因此可以多线程一起 make, 这样 make 的速度会快很多. 一般常用的还有 j4
- make test -j4
- make runtest -j4 // 如果此处不使用 sudo 编译不过, 可能前面一些步骤安装命令用 sudo, 以后安装注意, sudo 导致后面的脚本文件必须用 root 权限运行, 很不方便调试
- make pycaffe // 如果以后用 python 来开发的话必须执行这一句, 一般不管你是否用 python, 都会执行这一句
- make runtest -j4 // 测试成功会如下图所示
测试成功出现下图
如果编译过程出现错误, 用下列命令清楚刚才的编译, 然后解决问题后, 重新进行编译
make clean
错误集锦
可能遇到的错误, 请移步 http://blog.csdn.net/ytusdc/article/details/79229369
来源: https://blog.csdn.net/ytusdc/article/details/77978511?locationNum=8&fps=1