tensorflow 编译部署

介绍

tensorflow是由google开源的一个用于机器学习和神经网络研究的library。官网地址为https://www.tensorflow.org/,可以去了解下。

TensorFlow Python API 依赖 Python 2.7 版本. 所以你需要提前安装好Python2.7版本,直接使用yum安装即可。

最简单的安装办法是使用python-pip进行安装

$ pip install tensorflow
$ pip install tensorflow-gpu 开启GPU支持的版本
如果你是一个比较爱折腾或者无法联网的玩家,推荐下载源码进行部署和安装。好了,废话不多说,咱们进入今天的主题。

首先前往下载tensorflow

由于我已经提前安装好了git,所以为直接从github上clone了代码:https://github.com/tensorflow/tensorflow (什么?在这么纯真的年代你还没安装git,那直接download zip解压吧)

执行目录下./configure ,此过程中会要求安装多个依赖库,根据提示使用yum安装即可(如果无法使用yum可搜索相应rpm进行安装,教程还是比较多的)。

这里主要记录下cmake和clang的安装。最新版tensorflow1.0要求clang3.6以上,所以cmake最好也安装最新版!

安装cmake

1、首先检查是否有可安装的cmake,运行命令 yum list cmake。

2.8版本已经比较旧了,最新版本已经出到了3.8。所以不考虑yum安装了~~~~

2、下载 cmake https://cmake.org/download/

3、安装cmake

tar -zxvf cmake-3.7.2.tar.gz /usr/lib/
cd /usr/lib/cmake-3.7.2.tar.gz
./bootstrap
gmake
make install
ln -s /usr/lib/cmake-3.7.2/bin/cmake
4、检查安装

安装clang

1、下载 clang

http://releases.llvm.org/download.html 由于安装tensorflow要求3.6版本以上的clang,所以直接下载了最新版本3.9.1。需要下载如下包。

LLVM source code(.sig)
Clang source code(.sig)
compiler-rt source code(.sig)
clang-tools-extra source code(.sig)
2、解压并安装

下面的过程比较多,安装的时候需要细心点。

tar xf llvm-3.9.1.src.tar.xz
cd llvm-3.9.1.src/tools
tar xf ../../cfe-3.9.1.src.tar.xz
mv cfe-3.9.1.src clang
cd clang/tools
tar xf ../../../../clang-tools-extra-3.9.1.src.tar.xz
mv clang-tools-extra-3.9.1.src extra
cd ../../../projects
tar xf ../../compiler-rt-3.9.1.src.tar.xz
mv compiler-rt-3.9.1.src compiler-rt
cd ../..
mkdir llvm-build
cd llvm-build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/lib/clang3.9.1 -DLLVM_OPTIMIZED_TABLEGEN=1 ../llvm-3.9.1.src
make
make install

ln -sf /usr/lib/clang3.9.1/bin/clang /bin/clang
检查版本 clang++ --version,如果版本不对可根据clang建立软连接
上面的安装过程比较长,因为要下载很多的执行文件,所以一定要耐心。
安装tensorflow

1、执行./configure

安装tensoflow的过程中需要几项设置,备注:安装tensorflow需要java环境。请提前安装好并设置好环境变量。如果使用root安装,需要激活环境变量 执行命令 sudo su - 别忘记后面的"-"号

Please specify the location of python. [Default is /bin/python]:
设置python执行文件,可以通过which python命令查看默认路径是否正确,如果不正确需要指定到正确的路径上。如果正确直接回车即可~~~~

Do you wish to build TensorFlow with Google Cloud Platform support? [y/N]
我这里选择了N,如果想使用Google Cloud请选择y

Do you wish to build TensorFlow with Hadoop File System support? [y/N]
由于我是使用个人电脑进行的安装,本地没有Hadoop环境,所以选择了N

Please input the desired Python library path to use. Default is [/usr/lib/python2.7/site-packages]
检查python home路径是否正确,如果正确直接回车即可

Do you wish to build TensorFlow with OpenCL support? [y/N]
OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成(来自百度百科)。说白了,OpenCL是一个标准,因为一台计算机是由N多产品合作产生的,每个厂家技术不同,所以需要一个通用的标准来规范大家,让大家都在一个规范的环境中玩,否则大家各行其是,对上层软件厂商和沟通合作上来说是一个非常大的问题。这里如果选择了y后面需要安装computecpp,我在这里选择n

Do you wish to build TensorFlow with CUDA support? [y/N]
紧接着就出现了这个选项,CUDA是NVIDIA独家支持的,它跟OpenCL诞生的目标基本相同,都是为了通用并行计算。大家感兴趣可以去看看和OpenCL的区别。这里我直接使用n,因为穷买不起显卡~~~~~选择y下面会出现
Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to use system default]:

Please specify which gcc should be used by nvcc as the host compiler. [Default is /bin/gcc]:
使用GCC,没有的需要安装。检查路径如果相同直接回车。

Please specify which C++ compiler should be used as the host C++ compiler. [Default is ]: /bin/clang++
which: no clang-3.6 in (/sbin:/bin:/usr/sbin:/usr/bin)
Please specify which C compiler should be used as the host C compiler. [Default is ]: /bin/clang
将编译环境指向前面安装的clang

Configuration finished
./configure:行25: bazel: 未找到命令
bazel 下载地址 https://github.com/bazelbuild/bazel/releases 安装该文件需要提前安装好JDK。
下载好之后更改权限 chmod 777 bazel-0.4.4-installer-linux-x86_64.sh
root执行安装 ./bazel-0.4.4-installer-linux-x86_64.sh
2、执行以下命令进行安装

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ pip install /tmp/tensorflow/tensorflow-0.12.1-cp27-none-linux_x86_64.whl (如果没有pip命令,进入python目录执行easy_install pip进行安装)

尝试我们的第一个tensorflow程序
$ python

import tensorflow as tf

执行这里的时候出现了一个提示
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:95] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
大体意思是没有获得SSE4.2和AVX的支持,但是tensorflow依然可以使用。如果想要使用这两个功能需要重新build。
解决办法参照:http://stackoverflow.com/questions/41293077/how-to-compile-tensorflow-with-sse4-2-and-avx-instructions
我很懒,不想再重新弄一次了,果断放弃。

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)
Hello, TensorFlow!
a = tf.constant(10)
b = tf.constant(32)
print sess.run(a+b)
42

总结

好了,到此tensorflow就算初步安装完成了。是不是已经迫不及待的想要进入神经网络的世界了呢?

吐槽以下:tensorflow自发布以来,虽然目前还有很多的不完美,但其火热程度可见一般。归根结底是由于现在的计算机硬件已经进入了能够运行多层神经网络模型的阶段,加上AlphaGo的推波助澜,目前人工智能已经在全世界掀起了一波研究浪潮。作为人工智能中比较前沿的一个研究机构,google自然不能落后了,tensorflow的开源,正是适应了时代浪潮的行为。可以预见,今后的时代,谁掌握了算法资源谁就是领导者。那么反问:你甘心被超越么?

你可能感兴趣的:(tensorflow 编译部署)