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。
后面坑还很多,下篇继续。
微信扫描下面二维码关注此公众号!