从源代码编译安装tensorflow

从源代码编译安装tensorflow,安装cuda/cudnn/tensorrt相关包,解决bazel build过程中联网下载的问题。 Modified: 2023-07-11 16:37:48 Created: 2023-07-06 15:52:25 Tags: #linux #tensorflow #redhat #bazel #cuda #cudnn #tensorrt #nvidia

本文介绍从源代码编译安装 tensorflow 的过程,解决下面三个问题:

  1. nvidia 相关工具的安装
  2. 配置代理下载 bazel 构建过程中的依赖包
  3. 编译结束后的配置

1. nvidia 相关工具的安装

编译之前需要配置 nvidia 相关工具,请参考在 linux 上安装 nvidia driver/cuda/cudnn/tensorrt 工具

2. 配置代理

在编译过程中,可能要到某些不存在的地方拿到一些东西: qing_dynasty

使用 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 的方式。