centos7 编译tensorflow cpu优化版本
pip 直接安装默认不带cpu指令集优化,需要本地编译pip安装包
系统环境
vmware centos7 gcc-4.8.5
4核CPU 4G内存 100GB硬盘 联网
安装准备
-
安装python3.5 保留python2调用
- 安装依赖
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
- 下载python3.5源码并解压,A B对应版本号,如3.5.1
wget https://www.python.org/ftp/python/3.A.B/Python-3.A.B.tgz tar -zxvf Python-3.A.B.tgz
- 执行配置,编译安装python3.5
cd Python-3.A.B ./configure --prefix=/usr/local/python3 make && make install
- 创建python3 pip3的软链接gcc
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
- 测试命令 python3 和 pip3
python3 pip3
- ps yum 被锁定
解决:另外一个程序锁定了 yum;等待它退出…… 另一个应用程序是:PackageKit 内存:135M RSS ( 64 MB VSZ)
#rm -f /var/run/yum.pid
- 安装依赖
-
安装Bazel
-
官网经过测试的构建配置
https://tensorflow.google.cn/install/source#linux
版本 Python 版本 编译器 构建工具 tensorflow-1.12.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 -
下载对应版本的bazel、tensorflow版本,少坑
这里我下载bazel版本0.15.0,地址https://github.com/bazelbuild/bazel/tags
,bazel-0.15.0-installer-linux-x86_64.sh -
执行安装
./bazel-0.19.1-installer-linux-x86_64.sh
-
-
编译tensorflow源码
- 这里下载tensorflow 1.12版
https://github.com/tensorflow/tensorflow
- 配置编译
编译选项一般都选N,如需选择GPU,选择CUDAcd tensorflow/ ./configure
- 编译,构建whl安装包
编译之前,安装编译依赖:
开始编译生成pyton扩展安装包,过程有点漫长pip3 install numpy six wheel mock pip3 install keras_applications==1.0.5 --no-deps pip3 install keras_preprocessing==1.0.3 --no-deps
构建whl软件包bazel build --config=opt --config=mkl //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
- 一旦编译出错,最好
bazel clean
清除一下
- 这里下载tensorflow 1.12版
-
pip 安装whl
卸载之前的tensorflowpip uninstall tensorflow pip install /tmp/tensorflow_pkg/tensorflow-1.12.0rc0-cp27-cp27mu-linux_x86_64.whl
-
测试
进入python3,运行tensorflow代码,没有优化提示,表明正常python3 import tensorflow as tf hello = tf.constant('hello, tensorflow!') sess = tf.Session() print sess.run(hello) a = tf.constant(10) b = tf.constant(32) print sess.run(a+b) exit()
-
tensorflow issue
很多tensorflow问题都能在这里找到解决办法
hdf5.h yum install hdf5-devel
import pip._internal
print(pip._internal.pep425tags.get_supported())
import pip
print(pip.pep425tags.get_supported())
pip3使用异常? No module named pip?
python -m ensurepip
指令集 | cpu 核数 | 主频 | 耗时 |
---|---|---|---|
manylinux | 4 | 2.5G | 35s |
manylinux | 8 | 2.5G | 24s |
manylinux | 16 | 2.5G | 20s |
mkl avx | 4 | 2.5G | 20s |
mkl avx | 8 | 2.5G | 12.69s 15.42s |
mkl avx | 16 | 2.5G | 11.45s 13.55s |
参考
https://tensorflow.google.cn/install/source#linux
https://www.cnblogs.com/pengyunjing/p/9119372.html
https://www.cnblogs.com/harrymore/p/10028489.html
http://zhaoxuhui.top/blog/2018/01/09/CentOS源码编译安装TensorFlow.html