TensorFlow 1.0.0rc1 入坑记 ——转自 慢慢学TensorFlow 微信公众号

来源:互联网 发布:java 开源电商 编辑:程序博客网 时间:2024/04/28 10:58

TensorFlow 从开源到现在已经过去一年多时间,版本号从 0.5.0、0.6.0、0.7.0、0.7.1、0.8.0(开始支持分布式)、0.9.0、0.10.0、0.11.0、0.12.0(开始支持 Windows)以小步快跑的方式不断更新,这也给我们这些初学者带来了不少烦恼,刚刚部署好的环境,最新版本需求又变了,还要折腾一遍……


在 2017 年 1 月 9 号(伴随本公众号的呱呱坠地)1.0-alpha 终于发布了。很快,在春节之前又发布了 1.0.0-rc0,前两天发布了 1.0.0-rc1(跟上我的节奏,呦~呦~),忍不住手贱将之前机器上的旧版本丢弃,跳入新坑。


先从官方下载源码https://github.com/tensorflow/tensorflow/releases/tag/v1.0.0-rc1

在机器上编译时首先遇到了第一个坑就是 bazel 版本太低。

$ wget https://github.com/tensorflow/tensorflow/archive/v1.0.0-rc1.tar.gz

$ tar zxvf v1.0.0-rc1.tar.gz

$ cd tensorflow-1.0.0-rc1/

$ ./configure

……


查了下官方 issue(https://github.com/tensorflow/tensorflow/issues/6436),需要升级 bazel 版本到 0.4.2。继续折腾。

$ wget https://github.com/bazelbuild/bazel/archive/0.4.2.tar.gz

$ tar zxvf 0.4.2.tar.gz

$ cd bazel-0.4.2/

$ ./compile.sh

这时又遇到问题。


每次遇到"bootstrap"相关问题,总是类似"鸡生蛋蛋生鸡"的场景。

按照错误提示,运行如下命令得以解决:

$ bazel build //src:bazel


编译过程需要几十秒钟。编译完成如下图:


编译成功!这时需要将新生成的 bazel 替换原来旧的(如果你不确定旧的 bazel 路径,先用 $ which bazel 命令查看下):

$ sudo mv /usr/local/bin/bazel /usr/local/bin/bazel-old

$ sudo cp bazel-bin/src/bazel /usr/local/bin/


回到 TensorFlow 1.0.0rc1 源码目录。用新版本 bazel 编译。


发现 configure 过程中,问答题相比前一个版本多了 XLA just-in-time compiler,这也是 1.0.0 的 feature 之一,为了方便后面研究,将这一项设为 yes。


configure 之后就开始了漫长的依赖包获取过程,视网速,快的话几分钟,慢的可能几个小时,偶尔还会出现断线情况……注意断线后,千万别重新运行 ./configure,因为会清掉之前的缓存(说多了都是泪……),稳妥的方法是运行:

$ bazel fetch "//tensorflow/... -//tensorflow/examples/android/..."

多试几次,直到出现下图才算成功:


接下来就是官方标准的三步走:

$ bazel build -c opt --config=cuda \

    //tensorflow/tools/pip_package:build_pip_package

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package \

    /tmp/tensorflow_pkg/

$ sudo pip install --upgrade /tmp/tensorflow_pkg/


编译成功的标志如下:


生成 whl 文件成功的标志如下:


安装成功的标志如下:


验证一下是否安装成功。

$ cd ~

$ python

>>> import tensorflow

>>> help(tensorflow)

查看 help 信息最后一行的版本:


可见确实安装了 TensorFlow 1.0.0-rc1。

后面坑还很多,下篇继续。


微信扫描下面二维码关注此公众号!


0 0