Tensorflow手动编译

系统:MacOS sierra 10.12.6
tf版本:1.2.1

前言

​ 最近在安装tensorflow的时候,遇到了下面的问题:

这里写图片描述

​ 实际上就是因为我们直接用官方编译好的,并不能完美的与本地的指令集兼容,有点强迫症,所以决定从源码进行编译。

1、环境准备

​ 基本的环境主要包括这几步:

  1. 安装bazel

  2. 安装python依赖

  3. NVIDIA 的包(如果有显卡)

    mac并没有NVIDIA显卡,所以这一步省略。

    基本的科学环境使用的是anaconda,如果不太熟的话,参见参考文献中的anaconda博客,网上也有很多相关教程。

1.1 安装brew

​ brew是一个非常好用的mac的包管理器,能够自动的帮助我们解决依赖问题,安装卸载都非常方便。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

​ 如果还没有git的话,建议使用brew安装git。

brew install git

1.2 代理设置

​ 经常能到大家抱怨使用git或者brew的时候,速度很慢,实际上可以使用代理来加快速度,如果已经使用shadowsocks搭建了代理服务器,那就好了,只需要简单的配置即可。

​ 需要说明的是,在mac下,新版本的系统开启了SIP(System Integrity Protection),所以proxychains不好用,除非关闭,不过这样还是有点麻烦,简单的来说,直接用下面的配置简单快捷。

​ 在环境变量中导出下面的变量:

export ALL_PROXY=socks5://127.0.0.1:1086

​ 这样的话,在命令行中就可以使用代理了,经过测试,git最高速度差不多到4MB左右。

1.3 安装bazel

​ 使用brew安装bazel很简单:

brew install bazel
➜  ~ bazel version
Build label: 0.5.3-homebrew
Build target: bazel-out/darwin_x86_64-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Sun Aug 6 12:54:10 2017 (1502024050)
Build timestamp: 1502024050
Build timestamp as int: 1502024050

​ 请参考参考文献中的bazel官方文档。

1.4 安装python依赖

​ 首先确认我们已经准备好了anaconda的环境,然后创建一个环境,我的环境是python3.6.2版本,环境名为py36,首先使用下面的命令激活环境:

source activate py36

​ 然后使用conda命令安装相关依赖:

conda install six numpy wheel

​ 在编译的时候,需要调用这些包,所以,建议是先激活环境,防止出错。

1.5 tensorflow源码下载

​ 使用git下载tensorflow的源码:

git clone https://github.com/tensorflow/tensorflow 
cd tensorflow
ls
ACKNOWLEDGMENTS   AUTHORS           CONTRIBUTING.md   LICENSE           RELEASE.md        bazel-bin         bazel-out         bazel-testlogs    configure         tensorflow        tools
ADOPTERS.md       BUILD             ISSUE_TEMPLATE.md README.md         WORKSPACE         bazel-genfiles    bazel-tensorflow  bower.BUILD       models.BUILD      third_party       util

​ 然后看一下tag:

git tag
0.12.0-rc0
0.12.0-rc1
0.12.1
0.5.0
0.6.0
v0.10.0
v0.10.0rc0
v0.11.0
v0.11.0rc0
v0.11.0rc1
v0.11.0rc2
v0.12.0
v0.6.0
v0.7.0
v0.7.1
v0.8.0
v0.8.0rc0
v0.9.0
v0.9.0rc0
v1.0.0
v1.0.0-alpha
v1.0.0-rc0
v1.0.0-rc1
v1.0.0-rc2
v1.0.1
v1.1.0
v1.1.0-rc0
v1.1.0-rc1
v1.1.0-rc2
v1.2.0
v1.2.0-rc0
v1.2.0-rc1
v1.2.0-rc2
v1.2.1
v1.3.0
v1.3.0-rc0
v1.3.0-rc1
v1.3.0-rc2

​ 选择我们想要的版本,切换过去:

git checkout v1.2.1

​ 这样我们就把环境准备好了。

2、编译

2.1 配置

​ 在tensorflow的目录中,运行下面的命令:

./configure

​ 会出现一些提示,包括python的库的位置,根据实际情况填写,参考参考文献中的官方文档。

2.2 编译

​ 编译,创建pip包:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

​ 这个是cpu的版本,没有GPU。

​ 大约20多分钟以后,终于编译完成。

​ 接下来打包成wheel包,以便安装:

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

​ 然后,我们在/tmp/tensorflow_pkg目录下就能看到这样的文件:

tensorflow-1.2.1-cp36-cp36m-macosx_10_7_x86_64.whl

​ 然后使用下面的命令,安装到当前的anaconda的环境:

pip install /tmp/tensorflow_pkg/tensorflow-1.2.1-cp36-cp36m-macosx_10_7_x86_64.whl

​ 然后,再也不会有烦人的提示了!

3、参考文献

[官方文档]:https://www.tensorflow.org/install/install_sources

[anaconda博客]:http://www.jianshu.com/p/2f3be7781451

[brew官网]:https://brew.sh/index_zh-cn.html

[homebrew替换中科大的源]:https://lug.ustc.edu.cn/wiki/mirrors/help/brew.git

[中科大homebrew源]:https://lug.ustc.edu.cn/wiki/mirrors/help/homebrew-bottles

[bazel官方文档]:https://docs.bazel.build/versions/master/install-os-x.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值