Mac OS X 10.12.6 16G29
Python 3.6.2 (Anaconda 4.3.23)
Intel Core i7-4770HQ @ 2.20GHz
前言
如果直接通过pip install tensorflow
安装Tensorflow的话,在运行时可能会有这种警告
W tensorflow/core/platform/cpu_feature_guard.cc:45] 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:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
主要是因为你的CPU支持AVX2,SSE等指令集,而pip安装的库没有使用它们。启用这些指令集会提升运算速度,而且每次打印一大坨看着有点烦人,所以这里我们从源码编译安装Tensorflow。
编译&安装
- 先安装一些依赖
$ brew install bazel swig
- 克隆代码仓库
$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow
- master分支代码一般很新,鬼知道有什么问题,这里用
v1.2.1
版本
$ git checkout v1.2.1
- 这里先configure,过程中会问一些编译过程中要用到的参数,比如Python的目录,是否开启OpenCL,CUDA支持,我这里直接全否了。
$ ./configure
Please specify the location of python. [Default is /usr/local/anaconda3/bin/python]:
Found possible Python library paths:
/usr/local/anaconda3/lib/python3.6/site-packages
Please input the desired Python library path to use. Default is [/usr/local/anaconda3/lib/python3.6/site-packages]
Using python library path: /usr/local/anaconda3/lib/python3.6/site-packages
Do you wish to build TensorFlow with MKL support? [y/N] n
No MKL support will be enabled for TensorFlow
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: n
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] n
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with Hadoop File System support? [y/N] n
No Hadoop File System support will be enabled for TensorFlow
Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N] n
No XLA JIT support will be enabled for TensorFlow
Do you wish to build TensorFlow with VERBS support? [y/N] n
No VERBS support will be enabled for TensorFlow
Do you wish to build TensorFlow with OpenCL support? [y/N] n
No OpenCL support will be enabled for TensorFlow
Do you wish to build TensorFlow with CUDA support? [y/N] n
No CUDA support will be enabled for TensorFlow
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
Configuration finished
- 编译步骤,在
--copt=-m
后面添加你需要的指令集,之前警告有什么你就在这加什么就可以,我这里添加了avx avx2 fma sse4.1 sse4.2
。编译过程时间很长,我的4770hq跑了快25min
$ bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.1 --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package
- 打包成whl
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
- 安装这个whl,如果之前安装过Tensorflow的话先卸载,再安装
$ pip uninstall -y tensorflow
$ pip install /tmp/tensorflow_pkg/tensorflow-1.2.1-cp36-cp36m-macosx_10_7_x86_64.whl
完事,这样再调用Session就不会有提示了
结尾
最后丢一个我编译好的版本,1.2.1版本,Python 3.6,开启avx avx2 fma sse4.1 sse4.2指令集,度盘,GD。
参考文章
Installing TensorFlow from Sources
Python: Keras/TensorFlow の学習を CPU の拡張命令で高速化する (Mac OS X) - CUBE SUGAR CONTAINER