本文介绍从源码编译安装 TensorFlow 的过程,解决下面三个问题:NVIDIA 相关工具的安装、配置代理下载 bazel 构建过程中的依赖包,以及编译结束后的配置。
1. NVIDIA 相关工具的安装
编译之前需要配置 NVIDIA 相关工具,请参考在 Linux 上安装 NVIDIA driver/CUDA/cuDNN/TensorRT 工具。
2. 配置代理
在编译过程中,可能要到某些不存在的地方拿到一些东西:

使用 squid 代理,关于 squid 代理的安装和配置,请参考在服务器上配置 squid 服务器端。
在本地的话,需要配置 http 和 https 代理:
export http_proxy=http://user_name:password@server_ip:squid_port
export https_proxy=$http_proxy
3. bazel 安装
在 GitHub 上下载 bazel,这里选择 bazel-6.2.1-installer-linux-x86_64.sh:
wget https://github.com/bazelbuild/bazel/releases/download/6.2.1/bazel-6.2.1-installer-linux-x86_64.sh
chmod +x ./bazel-6.2.1-installer-linux-x86_64.sh
sudo ./bazel-6.2.1-installer-linux-x86_64.sh
安装完成之后,可以查看安装情况:
bazel --version
bazel 6.2.1
4. TensorFlow 代码获取和编译
4.1 代码获取
从 GitHub 上获取 TensorFlow 代码:
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout v2.13.0
4.2 config
执行 config:
此时基本配置完成。需要创建临时文件夹:
mkdir -p ~/tmp
export TMP=~/tmp
4.3 修改 bazelversion
修改 .bazel_version:
6.2.1
# 这是来自 bazel --version 的结果
4.4 开始编译
最后进行编译:
bazel build //tensorflow/tools/pip_package:build_pip_package
(此时可以去睡觉了。)
4.5 生成 whl 包并安装
TensorFlow 编译完成之后,还需要专门生成 whl 包:
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
在上面的 /tmp/tensorflow_pkg 文件夹中获取 whl 包,用 pip 安装。
cd /tmp/tensorflow_package
python3 -m pip install ./tensorflow-2.13.0-cp39-cp39-linux_x86_64.whl
4.6 测试安装
安装完成之后,就可以进行测试了:
import tensorflow as tf
print(tf.test.is_built_with_cuda())
True
5. 小结
本文介绍了在 RedHat 上从源码编译 TensorFlow 的方式。