本文介绍从源代码编译安装 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
总计
本文介绍了在 RedHat 上从源代码编译 tensorflow 的方式。