显卡环境:GPU GeForce GTX 1080 Ti, driver使用440.33 。
软件环境: ubuntu18.04+caffe+python3.8+GPU CUDA 10.89 cuDNN 7.6.5
使用caffe 可以有如下多种方法:
1 直接使用caffe的docker, 好处是方便快捷,缺点是如果依赖包出错 ,调试不方便。
2 自己编译caffe,用Anaconda管理python,apt-get下载的编译好的各种dev依赖包,好处是简单,快捷,但如果系统安装的包过于繁杂,容易产生冲突,导致编译不过。
3 自己编译caffe 和 主要的依赖包,好处是避免了系统里各种包版本的冲突,对整个系统的环境依赖心中有数。
我采用方法3搭建了一个环境 。其中通过源码编译过 的软件包有:
python3.8.1 opencv3.4.3 boost1.72 gflags glog hdf5-1.10.6 leveldb-1.20 lmdb OpenBLAS-0.3.7 Protobuf3.11.2 snappy zlib-1.2.11 , icu 等,本人将除python3.8和icu外,所有其他软件包都安装到了/home/xxx/local_install 目录下,便于管理。
一 显卡环境安装:
首先先去除ubuntu 默认的显卡驱动(nouveau), lsmod | grep nouveau 确认下Nouveau是已经被你干掉 。有时需要在安装新驱动之前删除之前安装的Nvida 卡驱动, 打开终端,先删除旧的驱动:sudo apt-get purge nvidia*
接着在图形界面下执行命令: sudo service lightdm stop,表示关闭图像界面(X-Window)。 如果lightdm 服务不存在,则需要先安装,命令sudo apt-get install lightdm, 然后重启linux系统进入图形界面下,开shell 执行 sudo service lightdm stop ,如果成功,则屏幕会完全变黑。然后切换tty1控制台:Ctrl+Alt+F1即可,之后会进入一个新的命令行会话,使用当前的用户名密码登录。 接下来就是最关键的一步了:在纯命令行下安装驱动 sudo ./cuda_10.2.89_440.33.01_linux.run(官网上下载的)开始安装,安装过程比较快,根据提示选择即可最后安装完毕后,重新启动X-Window:sudo service lightdm start,然后Ctrl+Alt+F7进入图形界面,至此驱动安装完毕。按照驱动前我的gcc编译器的版本是7.4.0 ,安装驱动如果gcc版本太低还会安装过程中报错,升级一下gcc即可 。
查看NVIDIA驱动版本:nvidia-smi
$ sudo telinit 3 该命令也可停止可视化桌面进入纯命令行下。
查看CUDA版本
cat /usr/local/cuda/version.txt
或者 nvcc --version(设置并更新环境变量之后才可用)
安装cuDNN 省略。。。
参考资料
https://www.jianshu.com/p/bf37b3ddf355 Ubuntu16.04下cuDNN 的安装
https://blog.csdn.net/NEUdeep/article/details/84545577 install cudnn
https://askubuntu.com/questions/767269/how-can-i-install-cudnn-on-ubuntu-16-04
https://blog.csdn.net/wangyufaling/article/details/82464473
二 依赖软件包安装
1. cmake 安装
下载最新的cmake 源码包,我用了cmake version 3.16.4 ,编译后install , 供后面使用。(使用>=3.14.0 版本的包。)
2. 编译python3.8.1。
./configure --prefix=/usr/local/python3.8 --enable-shared
make
sudo make altinstall
sudo python3.8 setup.py install --prefix=/usr/local/python3.8/
python3 以上编译后会自带 包管理工具pip。在我的机器上所以的python工具包都自动安装在了目录/usr/local/python3.8/lib/python3.8/site-packages 里。
然后安装python的第三方包:
sudo -H python3.8 -m pip install numpy (注意要有 -H 命令段)
sudo -H python3.8 -m pip install --upgrade pip (自带的pip包版本较低,有个包依赖更高版本的pip,故升级一下。
还要按照numpy包的安装方法安装如下python包, scipy matplotlib ipython jupyter pandas sympy nose scipy matplotlib sklearn h5py protobuf leveldb networkx nose pandas gflags ipython scikit-image opencv-python
3. 编译opencv
下面是编译opencv3.4.3 时opencv的依赖项。
sudo apt-get install libbz2-dev
sudo apt-get install libc6-dev
sudo apt-get install libffi-dev
sudo apt-get install libgdbm-dev
sudo apt-get install libgdbm-compat-dev
sudo apt-get install liblzma-dev
sudo apt-get instal libncurses5-dev
sudo apt-get install libncurses5-dev
sudo apt-get install libncursesw5-dev
sudo apt-get install libreadline-gplv2-dev
sudo apt-get install libreadline-gplv2-dev
sudo apt-get install libreadline-dev
sudo apt-get install libsqlite3-dev
sudo apt-get install libssl-dev
sudo apt-get install sqlite3
sudo apt-get install libssl-dev
sudo apt-get install openssl
sudo apt-get install tlc-dev
sudo apt-get install tcl-dev
sudo apt-get install tk-dev
sudo apt-get install uuid-dev
sudo apt-get install zlib1g-dev
sudo apt-get install ruby
sudo apt-get install zlib1g
sudo apt-get install zlib1g.dev
cd opencv-3.4.3
mkdir build
cd build
cmake..
ccmake..
make && make install
4. icu下载并编译(供boost用)
https://github.com/unicode-org/icu
cd ~/mywork/open_source/icu-master/icu4c
ls
cd source/
mkdir icubuild
cd icubuild/
./../runConfigureICU Linux
make -j8
sudo make install
会安装到/usr/local 的include和lib 目录下面
5. 编译boost
$ ./bootstrap.sh --prefix=/home/dongmy/local_install --with-python=python3.8 --with-python-root=/usr/local/python3.8 --with-python-version=3.8 --with-icu
./b2 --clean
./b2 -a 重新编译
./b2 install
boost 需要编译出libboost_python 这个动态库 libboost_python.so
6.编译hdf5
官网链接 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/
cd hdf5-1.10.0/
./configure --prefix=/home/xxx/local_install #安装路径
make
make install
注意事项:
1 boost 和opencv 都要使用python3.8
2 cafe 的Makefile.config 文件要使用python3.8 和opencv3。 PYTHON_LIBRARIES := boost_python3 python3.8, libboost_python3.so库需要创建软链接关联到 libboost_python38.so