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