寻求适配Python 3.6与TF 1.12.0的AVX、FMA、SSE加速TensorFlow安装包
解决Python 3.6 + TensorFlow 1.12.0 适配AVX/FMA/SSE指令集的安装问题
首先得明确:TensorFlow 1.12.0作为2018年的旧版本,官方预编译包确实没有专门针对AVX、FMA这类高级CPU指令集优化的发行版——当时官方预编译包仅覆盖基础SSE指令集,想要用上AVX/FMA带来的性能提升,从源码编译自定义版本是唯一可行方案。
下面是针对Python 3.6的亲测可行步骤:
1. 准备编译环境
- 优先用虚拟环境安装Python 3.6,避免干扰系统原有Python环境,同时确保对应版本的
pip可用。 - 安装编译依赖(以Ubuntu为例,Windows/Mac可替换为对应系统的包管理命令):
sudo apt-get update && sudo apt-get install build-essential git libcurl3-dev libfreetype6-dev libpng12-dev libzmq3-dev pkg-config python3.6-dev python3.6-numpy python3-pip software-properties-common swig zip zlib1g-dev - 安装指定版本的Bazel:TF 1.12.0必须搭配Bazel 0.15.0(高版本会触发编译报错),执行以下命令安装:
安装后记得把Bazel路径加入环境变量:wget https://github.com/bazelbuild/bazel/releases/download/0.15.0/bazel-0.15.0-installer-linux-x86_64.sh chmod +x bazel-0.15.0-installer-linux-x86_64.sh ./bazel-0.15.0-installer-linux-x86_64.sh --userexport PATH="$PATH:$HOME/bin"
2. 克隆并切换到TF 1.12.0源码分支
git clone https://github.com/tensorflow/tensorflow.git cd tensorflow git checkout v1.12.0
3. 配置编译参数(关键:开启指令集优化)
运行配置脚本:
./configure
过程中会弹出一系列选项,重点关注这几点:
- 输入Python 3.6的完整路径(比如虚拟环境中的
/home/xxx/venv/bin/python3.6) - 若不需要GPU加速,CUDA相关选项直接选
N跳过 - 脚本会自动检测CPU支持的指令集,若你的CPU支持AVX、FMA、SSE,配置过程会自动开启优化;如果未自动检测到,可在后续编译命令中手动指定参数
4. 编译并生成可安装的Wheel包
执行编译命令,手动添加指令集优化参数,确保编译器开启AVX、AVX2、FMA、SSE4.2:
bazel build --config=opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-msse4.2 //tensorflow/tools/pip_package:build_pip_package
编译耗时取决于CPU性能,通常需要几十分钟到数小时。
编译完成后生成Wheel包:
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
最后安装自定义编译的TF包:
pip install /tmp/tensorflow_pkg/tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl
(注:Wheel包文件名会随系统架构略有差异,进入/tmp/tensorflow_pkg目录查看准确名称即可)
验证优化是否生效
安装完成后,运行以下Python代码验证:
import tensorflow as tf print(tf.test.is_built_with_avx()) print(tf.test.is_built_with_avx2()) print(tf.test.is_built_with_fma())
若输出均为True,说明你的TF版本已成功开启目标指令集优化。
内容的提问来源于stack exchange,提问作者Nadja
相关产品推荐
相关产品推荐

