Ubuntu1604的深度学习工具安装教程
2017-09-26
Ubuntu上安装CUDA+cuDNN+TensorFlow+Keras+Caffe的艰辛历程。
原创文章,转载请注明:转自Luozm's Blog这里记录了我的安装过程,供大家参考。
1. 安装准备
首先你需要确认自己的显卡是否可以支持CUDA。如果你的显卡是N卡,而且在这个列表中:CUDA GPUs,那么恭喜你可以使用GPU加速。
如果不知道自己的显卡型号,可以在终端输入$ lspci | grep -i nvidia
查看。
我的笔记本显卡是NVIDIA Quadro K2000m,勉强可以带的动GPU加速。如果你的显卡不支持CUDA,请跳过1.1、1.2章节,在TensorFlow的安装中选择CPU-only版本。
1.1 CUDA(显卡驱动)
在NVIDIA官网下载CUDA 8.0:CUDA 8.0 Downloads
如果下载太慢,可以先在这里下载(8.0.44):cuda8.0 百度云盘分享
17/9/26更新:目前最新的CUDA版本是CUDA9.0和cuDNN7,但是tensorflow暂时还没有正式支持,如果不想折腾可以从Legacy Releases里面找到CUDA8.0。想提前使用最新版请看后面tensorflow安装说明的更新部分。
Deb版本安装(自动安装,默认安装新版本Nvidia显卡驱动,如果不想安装驱动请使用runfile安装,见下文)
之后打开终端输入(请根据自己下载的版本更换代码):
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt update
sudo apt install cuda
自动配置成功就好。
Runfile版本安装
打开终端输入(请根据自己下载的版本更换代码):
sudo sh cuda_8.0.61_375.26_linux.run
然后按照命令行指令进行选择,可选择不安装显卡驱动,不下载CUDA samples,其他都选是。
将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
测试,在终端输入:
nvcc -V
或者
nvcc --version
会得到相应的nvcc编译器相应的信息,那么CUDA配置成功了,记得重启系统。
1.2 cuDNN
下一步就是安装cuDNN,需要在官网注册一下,回答几个问题,然后就可以下载了。 cuDNN Download
解压文件然后复制到相应的文件夹:
cd ~/下载/
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*
1.3 Python
Python已经集成在Ubuntu系统里了,但我们还需要下载一些依赖包用于后续的使用。
在终端输入:sudo apt-get install python-pip
然后输入下载依赖包:
sudo apt-get update && sudo apt-get install -y python-numpy python-scipy python-nose \
python-h5py python-skimage python-matplotlib \
python-pandas python-sklearn python-sympy
sudo apt-get clean && sudo apt-get autoremove
sudo rm -rf /var/lib/apt/lists/*
17/9/26更新:增加Python3备注
如果想再Python3中运行下面的深度学习库,请先安装Python3的pip3:
sudo apt install python3-pip
如果找不到对应的包,请尝试:
sudo apt update
然后在Python3中下载依赖包:
pip3 install numpy scipy nose h5py scikit-image matplotlib pandas sklearn sympy
1.4 openCV(用于caffe)
安装依赖包:
sudo apt-get 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
sudo apt-get install libatlas-base-dev libopenblas-dev
2. 安装Deep Learning工具
2.1 TensorFlow
官方安装教程在这里:Installing TensorFlow on Ubuntu
17/9/26更新:安装前首先安装依赖包:
sudo dpkg -i libcudnn7_7.0.2.43-1+cuda9.0_amd64.deb
sudo apt-get update
备注:如果想在CUDA9和cuDNN7下使用tensorflow,请参考深度学习服务器环境配置: Ubuntu17.04+Nvidia GTX 1080+CUDA 9.0+cuDNN 7.0+TensorFlow 1.3
在终端使用下列命令安装对应版本的TensorFlow:
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
(Optional) 如果上一步请求失败,通过下列形式的命令来安装最新版本的TensorFlow:
sudo pip install --upgrade TF_BINARY_URL # Python 2.7
sudo pip3 install --upgrade TF_BINARY_URL # Python 3.N
TF_BINARY_URL
表示TensorFlow Python包的URL。正确的TF_BINARY_URL
取决于操作系统、Python版本和GPU。举例来说,如果你想把TensorFlow安装在Linux、Python 3.4、CPU-only版本,那么正确的地址如下:
sudo pip3 install --upgrade \
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-py3-none-any.whl
运行TensorFlow小程序测试一下:
在Python
中运行如下程序:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
如果返回Hello, TensorFlow!
,则安装成功~
17/9/29更新:如果想提升tensorflow的运行速度请通过sources的方式安装,如下
Installing TensorFlow from Sources
-
Clone the TensorFlow repository 克隆最新版tensorflow:
git clone https://github.com/tensorflow/tensorflow
-
Prepare environment for Linux Install Bazel
Install TensorFlow Python dependencies(如果装过就不用装了):
sudo apt-get install python3-dev python3-wheel
-
Configure the installation 首先运行tensorflow根目录下的脚本文件:
cd tensorflow # cd to the top-level directory created ./configure
然后生成pip包:
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
bazel
生成一个脚本文件build_pip_package
. 运行该文件会生成一个.whl
文件在/tmp/tensorflow_pkg
目录下:bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
安装pip包:
sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-py2-none-any.whl
2.2 Keras
参考自Keras中文文档及Keras Documentation
在终端pip安装Keras:
sudo pip install -U --pre keras
安装完毕后,输入python
,然后输入:
import keras
如果没有任何提示,则表明安装已经成功。
Keras中mnist数据集测试
下载Keras开发包:
cd GitProjects
git clone https://github.com/fchollet/keras.git
cd keras/examples/
python mnist_mlp.py
程序无错进行,至此,Keras安装完成。
17/9/29更新:可通过sources方式安装最新版keras
首先卸载原有的keras:
sudo pip3 uninstall keras
安装:
sudo pip3 install git+https://github.com/fchollet/keras.git
2.3 Caffe
2.3.1 克隆Caffe
从Github克隆Caffe源码:
cd GitProjects
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, 在Makefile中把BLAS
的值修改为open
:
sed -i 's/BLAS := atlas/BLAS := open/' Makefile.config
2.3.2 安装,编译及测试caffe
安装所有要求的包,编译Caffe,编译tests,运行tests,确保通过所有的测试。注意这需要一定的时间:
sudo pip install -r python/requirements.txt
make all -j $(($(nproc) + 1))
make test -j $(($(nproc) + 1))
make runtest -j $(($(nproc) + 1))
make all出错解决方法 参考自ubuntu配置caffe遇到的问题
如果出现以下错误
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
解决方法如下:
在Makefile.config文件的第94行(行数可能会变),添加 /usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
在Makefile文件的第181行(行数可能会变),把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
2.3.3 编译PyCaffe
PyCaffe是Caffe的Python接口,命令如下:
make pycaffe -j $(($(nproc) + 1))
更新:如果想在python3下安装,请在Makefile.config
中:
- 去掉第78、79行中关于python3的注释:
PYTHON_LIBRARIES
和PYTHON_INCLUDE
- 在第78行把
boost_python3
改成boost_python-py35
添加Caffe到你的环境变量:
echo 'export CAFFE_ROOT=$(pwd)' >> ~/.bashrc
echo 'export PYTHONPATH=$CAFFE_ROOT/python:$PYTHONPATH' >> ~/.bashrc
source ~/.bashrc
测试你的Caffe,如果下列代码运行中没有报错说明安装成功了:
ipython
import caffe
exit()
更新:如果出现如下错误:
raise ValueError, "Can't create weekday with n == 0"
这说明你的matplotlib版本过低,请更新:
sudo pip3 install matplotlib --upgrade
2.4 Pytorch
根据自己的配置情况在官网选择对应的选项,执行对应代码,我选择的代码如下:
pip3 install http://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp35-cp35m-manylinux1_x86_64.whl
pip3 install torchvision
请注意,如果执行第二句时报错,请不要惊慌,见Issue #566。这时选择不按照依赖即可:
pip3 install no-deps torchvision
2.5 Caffe2
请注意,目前Caffe2只支持Python2.7,不支持Python3。(据我所知,如果有后续更新请通知我)
2.5.1 安装依赖包
由于之前我们的包都安装在了Python3里面,现在还需要重新在Python2里再安装一遍:
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
libgoogle-glog-dev \
libprotobuf-dev \
protobuf-compiler \
python-dev \
python-pip
sudo pip install numpy protobuf
由于之前已经安装过了配置好了CUDA和cuDNN,这里我们直接跳过就好。
继续安装其他依赖包(针对Ubuntu 16.04):
sudo apt-get install -y --no-install-recommends libgflags-dev
更多依赖包:
# for both Ubuntu 14.04 and 16.04
sudo apt-get install -y --no-install-recommends \
libgtest-dev \
libiomp-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libopenmpi-dev \
libsnappy-dev \
openmpi-bin \
openmpi-doc \
python-pydot
sudo pip install \
flask \
future \
graphviz \
hypothesis \
jupyter \
matplotlib \
pydot python-nvd3 \
pyyaml \
requests \
scikit-image \
scipy \
setuptools \
six \
tornado
2.5.2 Clone & Build
克隆并编译:
git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
make && cd build && sudo make install
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
显示Success
表明前面的安装已经成功了!不要高兴得太早,还要检查一下GPU是否工作正常:
python -m caffe2.python.operator_test.relu_op_test
这里我就安装成功了,如果有各种奇怪问题请参考troubleshooting
备注
- 如果在Ubuntu中使用apt-get的时候,始终显示“E:无法定位软件包”:可能的一个原因是因为安装过后没有更新软件源,试试用
sudo apt-get update
命令更新一下软件源。 - 如果下载速度太慢,请在系统设置
软件和更新
里的下载自
中自动选择速度最快的源,然后用上述命令更新软件源 - E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
更多深度学习工具安装教程参考: