本文介紹從原始碼編譯安裝 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:

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