原文:@L_502_0@
记录自己安装时的一些问题和解决方法
基础
首先,打开终端,运行以下命令确保你的操作系统是最新的
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get autoremove
安装git
sudo apt-get install git
显卡驱动不要安装,cuda安装时会安装驱动,否则冲突
CUDA
- 从Nvidia上下载CUDA8.0。然后到下载目录下安装CUDA
sudo dpkg -i cuda-repo-ubuntu1404*amd64.deb
sudo apt-get update
sudo apt-get install cuda
- 添加CUDA到环境变量
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
- 检查以确保安装了正确版本的CUDA
nvcc -V
- 重启系统
sudo shutdown -r now
检查CUDA安装(可选)
- 在CUDA安装目录安装样例。编译它们(需要几分钟):
/usr/local/cuda8.0/bin/cuda-install-samples-8.0.sh ~/cuda-samples
cd ~/cuda-samples/NVIDIA*Samples
make -j $(($(nproc) + 1))
注意:(-j
- 运行deviceQuery,确保它能检测到显卡并测试通过
bin/x86_64/linux/release/deviceQuery
cuDNN
cuDNN是为DNN设计的cpu加速库。它能在多种情况下帮助提升执行速度。为了下载cuDNN库,你需要到Nvidia网站https://developer.nvidia.com/cudnn上进行注册。几小时到几个工作日就能够批准。一旦注册批准,下载Linux版本的cuDNN v5,最新版本不是所有的工具都支持。
- 解压并复制文件
cd ~/Downloads/
tar xvf cudnn*.tgz
cd cuda
sudo cp */*.h /usr/local/cuda/include/
sudo cp */libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
- 检查你可以使用
nvidia-smi
命令检查目前所有操作都正确。这应该会输出GPU的一些统计数据
Tensorflow
- 安装v0.8版本与GPU兼容。
sudo apt-get install python-pip python-dev
- install TensorFlow by invoking one of the following commands:
$ sudo pip install tensorflow # Python 2.7; cpu support (no GPU support)
$ sudo pip3 install tensorflow # Python 3.n; cpu support (no GPU support)
$ sudo pip install tensorflow-gpu # Python 2.7; GPU support
$ sudo pip3 install tensorflow-gpu # Python 3.n; GPU support
运行一个测试程序确保Tensorflow成功安装。当你执行import命令的时候,应该不会有警告/错误。
python
>>> import tensorflow as tf
>>> exit()
OpenBLAS
OpenBLAS是一个线性代数库,比Atlas更快。这一步是可选的,但要注意,下面的一些步骤假定你已经安装了OpenBLAS。
- 需要安装gfortran来编译它
sudo apt-get install gfortran
- 命令
gfortran -v
可以查看gfortran是否安装成功。
- 安装OpenBLAS
mkdir ~/git
cd ~/git
git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make FC=gfortran -j $(($(nproc) + 1))
sudo make PREFIX=/usr/local install
- 将路径添加到LD_LIBRARY_PATH 变量中
echo 'export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
常用工具
安装pip
sudo apt-get install python-pip
apt-get install python-pip
为Scipy安装一些常用工具
sudo apt-get install -y libfreetype6-dev libpng12-dev
sudo pip install -U matplotlib ipython[all] jupyter pandas scikit-image
Caffe
- 第一步是安装所必须的文件
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
结果提示:下载
http://cn.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libopencv-legacy2.4v5_2.4.9.1+dfsg-1.5ubuntu1_amd64.deb Hash 校验和不符 失败
有几个软件包无法下载
修改命令为:
sudo apt-get --fix-missing 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 libgflags-dev libgoogle-glog-dev liblmdb-dev
- 克隆Caffe资源库
cd ~/git
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
- 如果你安装了cuDNN,取消Makefile中USE_CUDNN := 1 这一行的注释
sed -i 's/# USE_CUDNN := 1/USE_CUDNN := 1/' Makefile.config
- 如果你安装了OpenBLAS,修改BLAS参数值为open
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
- 安装需要的文件,构建Caffe和测试,运行测试确保所有测试都通过。注意,这都需要一段时间。
sudo pip install -r python/requirements.txt
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
出现编译错误,提示:src/caffe/layers/hdf5_data_layer.cpp:13:18: fatal error: hdf5.h: No such file or directory
解决方法:
在Makefile.config中:
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/hdf5/serial/
重新执行出错的命令
- 构建PyCaffe,Caffe的Python接口
make pycaffe -j $(($(nproc) + 1))
提示:numpy/arrayobject.h: 没有那个文件或目录
解决:
sudo apt-get install python-numpy
make pycaffe -j $(($(nproc) + 1))
- 将Caffe添加到环境变量中
echo 'export CAFFE_ROOT=$(pwd)' >> ~/.bashrc
echo 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc
- 测试确保Caffe安装成功。当执行import命令的时候应该不会有警告/错误。
python
>>> import caffe
>>> exit()
我的环境变量添加出错
cd ~
gedit .bashrc
然后将’ export CAFFE_ROOT=$(pwd) ‘中的pwd改为caffe根目录:
export CAFFE_ROOT=/home/xiaxzhou/git/caffe
Theano
安装所必须的文件,然后安装Theano。这些指令来自于这里
sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ python-pygments python-sphinx python-nose
sudo pip install Theano
测试Theano安装。当执行import命令的时候应该不会有警告/错误。
python
>>> import theano
>>> exit()
Keras
Keras是围绕Theano和Tensorflow设计的一个有用的封装。默认情况下,它使用Theano作为后端。查看这里的指令以了解如何变更为Tensorflow。
sudo pip install keras
Torch
安装会花一些时间
git clone https://github.com/torch/distro.git ~/git/torch --recursive
cd torch; bash install-deps;
./install.sh
X2Go
如果你的深度学习机器不是主要工作机器,X2Go可以帮助你远程访问。X2Go是一个了不起的远程访问解决方案。你可以使用下面的命令在Ubuntu机器上安装X2Go服务。
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
X2Go不支持统一桌面环境(Ubuntu的默认环境)。我发现XFCE效果不错。更多支持的环境在这里
sudo apt-get update
sudo apt-get install -y xfce4 xfce4-goodies xubuntu-desktop
使用下面的命令查看机器的IP
hostname -I
你可以使用上面的IP在你主要使用的机器上安装一个客户端来连接到深度学习服务器上。根据你的客户端系统,这里有更多的指令。
opencv
准备环境
直接编译安装opencv一般是会报错的,有很多依赖工具需要先安装。主要是:cmake,build-essential,pkg-config,python-dev,python-numpy等,视自己情况而定。
$ sudo apt-get install build-essential cmake libopencv-dev libgtk2.0-dev pkg-config python-dev python-numpy
下载opencv3.0源码
直接去opencv.org(github) 上下载linux源码包:
$ wget https://github.com/Itseez/opencv/archive/3.0.0-beta.zip
复制代码
$ unzip opencv-3.0.0-beta.zip
$ cd opencv-3.0.0-beta
$ mkdir release
$ cd release
$ 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 WITH_QT=ON -D WITH_OPENGL=ON .. //注意CMakeList.txt在上一层文件夹
$ sudo make -j $(nproc) // make -j 多核处理器进行编译(默认的make只用一核,很慢),$(nproc)返回自己机器的核数
$ sudo make install //把编译结果安装到 /usr/local的 lib/ 和 include/下面
中途出错:home/usrname/opencv-3.0.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared typedef NppStatus (init_func_t)(NppiSize oSize,NppiGraphcutState* ppStat
解决方法:opencv-3.0.0/modules/cudalegacy/src/graphcuts.cpp :将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
参考:http://www.jb51.cc/article/p-emszomcy-w.html
配置环境变量
此过程非常重要!!!此过程非常重要!!!此过程非常重要!!!
sudo gedit /etc/ld.so.conf.d/opencv.conf
在opencv.conf(打开之后是空哒!但是是正确的)里加入如下语句:
/usr/local/lib
sudo ldconfig
出错:*.so不是符号连接:
解决:http://www.jb51.cc/article/p-bhzvqbvm-bpu.html
sudo ln -sf /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5.0.5 /usr/local/cuda-8.0/targets/x86_64-linux/lib/libcudnn.so.5
sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1
打开另外一个文件:
sudo gedit /etc/bash.bashrc
在文档最下方(fi之后)添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
之后重启虚拟机,,或者注销再登陆。