由于需要在Ubuntu 16.04安装多个深度学习框架所以通过博客记录一下安装过程中的坑以及一些关键步骤。这个时候我们需要安装自己需要包装。下面我们通过一步一步开始安装自己数据。记录安装了如下软件和支持: * Cuda 9.1 * cuDnn 9.0 * OpenCV 3.4 Support Python2.7 Python3.4 Cuda OpenGL OpenBLAS * Mxnet Pytorch Tensorflow
我们先来安装cuda,首先通过官网下载你所需要安装的版本。在安装之前先把自己的数据先把需要升级一下稳定版本和第三方支持编译的类库及包。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake gfortran git pkg-config
sudo apt-get install -y python-dev software-properties-common wget vim
sudo apt-get autoremove
下载你需要的cuda(官网),然后按照如下命令或者NVIDIA提供的官网指令去安装即可。
sudo dpkg -i cuda-repo-ubuntu1604-9-1-local-xxxx_amd64.deb
sudo apt-get update
sudo apt-get install -y cuda-9.1
安装完成之后通过nvidia-smi验证是否GPU驱动是否成功。
如果你安装CUDA的版本是9.1,那么cuDNN的版本是7.1。所以查找你对应的cuDNN版本通过如下指令安装即可,可能需要注册。
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
然后将cuda和cuDNN的参数设置为环境变量,以便于系统级别直接访问。
echo 'export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64"' >> ~/.bashrc
echo 'export CUDA_HOME=/usr/local/cuda' >> ~/.bashrc
echo 'export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
sudo apt-get update
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libopencv-dev
由于opencv3.4为了生成python2.7和python3.5的动态链接库,所以我们这边还需要安装Python2和Python3的开发库以及一些第三方库。
sudo apt-get install -y --no-install-recommends libboost-all-dev doxygen
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libblas-dev
sudo apt-get install -y libatlas-base-dev libopenblas-dev libgphoto2-dev libeigen3-dev libhdf5-dev
sudo apt-get install -y python-dev python-pip python-nose python-numpy python-scipy
sudo apt-get install -y python3-dev python3-pip python3-nose python3-numpy python3-scipy
我们为了解决我们的Python环境冲突和版本问题,我们需要安装一些虚拟化环境,对Python环境的包装和隔离。virtualenv,virtualenvwrapper和conda。我比较喜欢的是conda,所以我们需要可以下载miniconda来管理我们python环境。
bash Miniconda3-latest-Linux-x86_64.sh
创建虚拟化独立环境 anaconda可选,表示创建完虚拟化独立环境后,然后安装anconda。
conda create -n py35 [anaconda] python=3.5
#同样可以创建py27
pip install numpy scipy matplotlib scikit-image scikit-learn ipython protobuf jupyter
pip install keras
pip install dlib
pip install mxnet-cu91
pip install tensorflow-gpu
pip install graphviz
pip install http://download.pytorch.org/whl/cu91/torch-0.3.1-cp35-cp35m-linux_x86_64.whl
pip install torchvision
deactivate
我们需要在github上直接下载opencv3.4.0的source code,然后通过make编译安装,下载zip或者tgz都可以。
tar xzvf opencv.tgz
tar xzvf opencv_contrib.tgz
cd opencv
mkdir build
然后通过cmake进行生成编译make文件,我们来看一下下面的命令;
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D WITH_CUDA=ON \
-D WITH_OPENGL=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D CUDA_GENERATION=Auto \
-D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
-D ENABLE_FAST_MATH=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules \
-D BUILD_EXAMPLES=ON ..
然后根据你cmake的配置来看一下结果,如果结果为如下图所示,可以执行make进行编译。
nproc
make -j32
sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
然后你可以通过软连接或者pth连接到你的虚拟化独立环境里面,然后验证。
ippicv:下载过慢阻碍编译,我们可以在github的opencv第三方库里面找到对应下载的版本copy到你的.cache(opencv-3.4.0/.cache/ippicv)目录里面。值得注意的是你下载的ippicv文件名是不带md5的校验和,需要将文件名增加校验和。
mv ippicv_2017u3_lnx_intel64_general_20170822.tgz 4e0352ce96473837b1d671ce87f17359-ippicv_2017u3_lnx_intel64_general_20170822.tgz
然后重新编译。 cuda:很多opencv3.4新增了一些新特性,比如dnn等。需要支持cuda编译的,这个时候会有一些冲突问题。所以在cmake时要指定CUDA_GENERATION=Auto和CUDA_NVCC_FLAGS=”-D_FORCE_INLINES”。
安装过程还算胜利,如果需要在你ubuntu集群里面支持并行计算和任务调度,需要安装一些spark,MPI,mesos或者k8s。这个根据自己的需要进行安装和设计。