Rapp从今天起推出【深度学习】系列,主要记录自己在学习深度学习技术的过程中遇到的问题和心得。在深度学习领域,Rapp还是一只小菜鸟,文章中难免会出现错误,望有经验的读者多多赐教!
在开始修炼深度学习之前,必须要有件趁手的兵器。现在比较流行的深度学习框架有很多,网上也有很多关于选择哪种框架的讨论。既然我们没有时间把它们都学会,那就挑一件出自名门(Google)的TensorFlow(TF)来练吧。根据我以往学习Web开发框架的经验,各种框架之间都有一定的联系,只要学好一个,再学其他的也很容易。
本文将记录我安装TF的过程。基于CPU的TF安装很简单(用pip就搞定),我将重点介绍难度较大的基于GPU计算的TF安装(从如何选择GPU到如何从source code安装TF)。
安装基于CPU计算的TF
- 创建virtualenv环境
$ sudo apt-get install python-pip python-dev python-virtualenv
$ virtualenv tensorflow_cpu
- 激活virtualenv环境
$ source tensorflow_cpu/bin/activate
- 安装TensorFlow和其他相关的python包
(tensorflow_cpu)$ pip install tensorflow
(tensorflow_cpu)$ pip install ipython
(tensorflow_cpu)$ pip install matplotlib
(tensorflow_cpu)$ pip install jupyter
对Python virtualenv不熟悉的读者可以参考这里。
如何选择用于深度学习的GPU
如果说大数据是深度学习的“燃料”,那么GPU就是深度学习的“引擎”。为了让模型训练得足够快,我们必须考虑使用GPU。究竟如何选择合适的GPU呢?知乎上有相关的讨论,但是我觉得写的比较凌乱。我推荐一个老外写的blog:Which GPU(s) to Get for Deep Learning。文章有点长,为了节省时间,我把最精华的部分列在下面:
建议大家结合实际需求和价格选择适合自己的GPU(如果您是“土豪”就随意啦)。我的需求是cost efficient & I do Kaggle for deep learning competitions & I am a researcher,那就选择GTX 1080 Ti吧。我在京东上买的1080Ti(¥5999),还买了一根DisplayPort连接线(¥45),用来连接显示器。
安装基于GPU计算的TF
- 准备工作:安装依赖的python包
$ sudo apt-get install python-pip python-dev python-virtualenv python-numpy python-wheel python-imaging swig
- 安装Google软件构建工具Bazel,build TF的时候需要用
首先要安装Java Development Kit (JDK) 8,以及一些依赖的软件
$ sudo apt-get install default-jdk
$ sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
在github上下载Bazel的installer:bazel-0.4.5-installer-linux-x86_64.sh
运行installer的时候,加--user参数可以将bazel安装在用户home目录下的bin目录,修改PATH变量后,可以运行bazel version查看是否安装成功。
$ chmod +x bazel-0.4.5-installer-linux-x86_64.sh
$ ./bazel-0.4.5-installer-linux-x86_64.sh --user
$ printf '\nexport PATH=$PATH:$HOME/bin\n' >> ~/.bashrc
$ source ~/.bashrc
$ bazel version
- 安装CUDA
为了确保显卡与CUDA兼容,在NVIDA官网上查找CUDA-capable GPU
gtx1080ti.png
GTX 1080 Ti 的Compute Capability (6.1) 需要记下来,稍后会用到。
下载CUDA的installer:
cuda.png
注意要选择正确的Ubuntu版本号,如果不清楚,可以参考下面的命令:
ubuntu.png
下载完毕后,按照网页上的installation instructions进行安装。CUDA安装在/usr/local/cude目录下。 - 安装cuDNN
下载安装cuDNN (下载前要先注册一下,按照提示一步步做即可)
cudnn_1.png
cuDNN下载页面,注意我们之前安装的是CUDA8.0
cudnn_2.png
安装cuDNN的命令:
$ tar xvzf cudnn-8.0-linux-x64-v6.0.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 /usr/local/cuda/lib64/libcudnn*
- 从源代码安装TensorFlow
首先下载source code,做build前的准备工作(这里会用到前面记录下来的Compute Capability,详细配置见下图):
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
$ cd tensorflow
$ ./configure
configure.png
然后用bazel来build TF源代码(需要比较长的时间)
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
接下来创建Python .whl 文件(输出到~/tensorflow/bin/目录下)
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/tensorflow/bin
最后用pip来安装(和前面的基于CPU的方法类似)
$ virtualenv tensorflow_gpu
$ source tensorflow_gpu/bin/activate
(tensorflow_gpu)$ pip install ~/tensorflow/bin/tensorflow-1.1.0rc2-cp27-cp27mu-linux_x86_64.whl
(tensorflow_gpu)$ pip install ipython
(tensorflow_gpu)$ pip install matplotlib
(tensorflow_gpu)$ pip install jupyter
至此,我们已经安装好了CPU和GPU支持的TensorFlow,在使用之前记得要先激活虚拟环境source tensorflow_gpu/bin/activate
。强大的兵器已经入手,接下来就是通过简单的招式来一步步修炼“神经网络大法”的时候了!预知后事如何,且听下回分解!
网友评论