在 Windows 上從原始碼建構

從原始碼建構 TensorFlow pip 套件,並在 Windows 上安裝。

Windows 設定

安裝下列建構工具,以設定您的 Windows 開發環境。

安裝 Python 和 TensorFlow 套件相依性

安裝 適用於 Windows 的 Python 3.9+ 64 位元版本。選取 pip 作為選用功能,並將其新增至 %PATH% 環境變數。

安裝 TensorFlow pip 套件相依性

pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps

相依性列在 setup.py 檔案的 REQUIRED_PACKAGES 下。

安裝 Bazel

安裝 Bazel,這是用於編譯 TensorFlow 的建構工具。如需 Bazel 版本,請參閱 Windows 的已測試建構設定。設定 Bazel 以建構 C++

將 Bazel 可執行檔的位置新增至 %PATH% 環境變數。

安裝 MSYS2

安裝 MSYS2 以取得建構 TensorFlow 所需的 bin 工具。如果 MSYS2 安裝在 C:\msys64,請將 C:\msys64\usr\bin 新增至 %PATH% 環境變數。然後,使用 cmd.exe 執行

pacman -Syu (requires a console restart)
pacman -S git patch unzip
pacman -S git patch unzip rsync

安裝 Visual C++ Build Tools 2022

安裝 Visual C++ Build Tools 2022。這隨附於 Visual Studio Community 2022,但可個別安裝

  1. 前往 Visual Studio 下載
  2. 選取 Visual Studio 的工具或其他工具、架構和可轉散發元件
  3. 下載並安裝
    • Visual Studio 2022 的 Build Tools
    • Microsoft Visual C++ 可轉散發套件 (適用於 Visual Studio 2022)

安裝 LLVM

  1. 前往 LLVM 下載
  2. 在 C:/Program Files/LLVM 中下載並安裝與 Windows 相容的 LLVM,例如 LLVM-17.0.6-win64.exe

安裝 GPU 支援 (選用)

請參閱 Windows GPU 支援指南,以安裝在 GPU 上執行 TensorFlow 所需的驅動程式和其他軟體。

下載 TensorFlow 原始碼

使用 Git 複製 TensorFlow 儲存庫 (git 隨 MSYS2 一起安裝)

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

儲存庫預設為 master 開發分支。您也可以查看 發布分支以進行建構

git checkout branch_name  # r1.9, r1.10, etc.

選用:環境變數設定

在執行建構命令之前,請執行下列命令,以避免套件建立發生問題:(如果在安裝套件時已設定下列命令,請忽略這些命令)。執行 set 以檢查是否已正確設定所有路徑,執行 echo %Environmental Variable%,例如 echo %BAZEL_VC% 以檢查特定環境變數的路徑設定

Python 路徑設定問題 tensorflow:issue#59943tensorflow:issue#9436tensorflow:issue#60083

set PATH=path/to/python;%PATH% # [e.g. (C:/Python311)]
set PATH=path/to/python/Scripts;%PATH% # [e.g. (C:/Python311/Scripts)] 
set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe 
set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages 
set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts 

Bazel/MSVC/CLANG 路徑設定問題 tensorflow:issue#54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files/Microsoft Visual Studio/2022/BuildTools 
set BAZEL_VC=C:/Program Files/Microsoft Visual Studio/2022/BuildTools/VC 
set Bazel_LLVM=C:/Program Files/LLVM (explicitly tell Bazel where LLVM is installed by BAZEL_LLVM, needed while using CLANG)
set PATH=C:/Program Files/LLVM/bin;%PATH% (Optional, needed while using CLANG as Compiler)

選用:設定建構

TensorFlow 建構是由儲存庫根目錄中的 .bazelrc 檔案設定。 ./configure./configure.py 指令碼可用於調整常見設定。

如果您需要變更設定,請從儲存庫的根目錄執行 ./configure 指令碼。

python ./configure.py

此指令碼會提示您輸入 TensorFlow 相依性的位置,並詢問其他建構設定選項 (例如,編譯器旗標)。以下顯示 python ./configure.py 的範例執行 (您的工作階段可能會有所不同)

建構並安裝 pip 套件

pip 套件分兩個步驟建構。bazel build 命令會建立「套件建構器」程式。然後,您執行套件建構器以建立套件。

建構套件建構器

tensorflow:master 儲存庫已更新為預設建構 2.x。安裝 Bazel 並使用 bazel build 建立 TensorFlow 套件建構器。

bazel build //tensorflow/tools/pip_package:wheel

僅限 CPU

使用 bazel 製作僅限 CPU 支援的 TensorFlow 套件建構器

使用 MSVC 建構
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
使用 CLANG 建構

使用 --config=win_clang 以 CLANG 編譯器建構 TenorFlow

bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

GPU 支援

若要製作具備 GPU 支援的 TensorFlow 套件建構器

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

清除 bazel 快取的命令,以解決因快取資料無效或過時而造成的錯誤,含 --expunge 旗標的 bazel clean 會永久移除檔案

bazel clean 
bazel clean --expunge  

Bazel 建構選項

在建構時使用此選項,以避免套件建立發生問題:tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

請參閱 Bazel 命令列參考資料,以取得建構選項

從原始碼建構 TensorFlow 可能會使用大量 RAM。如果您的系統記憶體受限,請使用 --local_ram_resources=2048 限制 Bazel 的 RAM 使用量。

如果使用 GPU 支援建構,請新增 --copt=-nvcc_options=disable-warnings 以隱藏 nvcc 警告訊息。

建構套件

若要建構 pip 套件,您需要指定 --repo_env=WHEEL_NAME 旗標。套件將根據提供的名稱建立。例如

若要建構 tensorflow CPU 套件

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

若要建構 nightly 套件,請設定 tf_nightly 而不是 tensorflow,例如,若要建構 CPU nightly 套件

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu

因此,產生的 wheel 將位於

bazel-bin/tensorflow/tools/pip_package/wheel_house/

安裝套件

產生的 .whl 檔案名稱取決於 TensorFlow 版本和您的平台。使用 pip install 安裝套件,例如

pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl

使用 MSYS Shell 建構

TensorFlow 也可以使用 MSYS Shell 建構。進行下列列出的變更,然後按照先前適用於 Windows 原生命令列 (cmd.exe) 的指示操作。

停用 MSYS 路徑轉換

MSYS 會自動將看起來像 Unix 路徑的引數轉換為 Windows 路徑,而這不適用於 bazel。(標籤 //path/to:bin 會被視為 Unix 絕對路徑,因為它以斜線開頭。)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

設定您的 PATH

將 Bazel 和 Python 安裝目錄新增至 $PATH 環境變數。如果 Bazel 安裝在 C:\tools\bazel.exe,而 Python 安裝在 C:\Python\python.exe,請使用下列命令設定您的 PATH

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"

如需 GPU 支援,請將 CUDA 和 cuDNN bin 目錄新增至 $PATH

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

已測試建構設定

CPU

版本Python 版本編譯器建構工具
tensorflow-2.16.13.9-3.12CLANG 17.0.6Bazel 6.5.0
tensorflow-2.15.03.9-3.11MSVC 2019Bazel 6.1.0
tensorflow-2.14.03.9-3.11MSVC 2019Bazel 6.1.0
tensorflow-2.12.03.8-3.11MSVC 2019Bazel 5.3.0
tensorflow-2.11.03.7-3.10MSVC 2019Bazel 5.3.0
tensorflow-2.10.03.7-3.10MSVC 2019Bazel 5.1.1
tensorflow-2.9.03.7-3.10MSVC 2019Bazel 5.0.0
tensorflow-2.8.03.7-3.10MSVC 2019Bazel 4.2.1
tensorflow-2.7.03.7-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.6.03.6-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.5.03.6-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.4.03.6-3.8MSVC 2019Bazel 3.1.0
tensorflow-2.3.03.5-3.8MSVC 2019Bazel 3.1.0
tensorflow-2.2.03.5-3.8MSVC 2019Bazel 2.0.0
tensorflow-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.1
tensorflow-2.0.03.5-3.7MSVC 2017Bazel 0.26.1
tensorflow-1.15.03.5-3.7MSVC 2017Bazel 0.26.1
tensorflow-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.2
tensorflow-1.13.03.5-3.7MSVC 2015 update 3Bazel 0.19.0-0.21.0
tensorflow-1.12.03.5-3.6MSVC 2015 update 3Bazel 0.15.0
tensorflow-1.11.03.5-3.6MSVC 2015 update 3Bazel 0.15.0
tensorflow-1.10.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.9.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.8.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.7.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.6.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.5.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.4.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.3.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.2.03.5-3.6MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.1.03.5MSVC 2015 update 3Cmake v3.6.3
tensorflow-1.0.03.5MSVC 2015 update 3Cmake v3.6.3

GPU

版本Python 版本編譯器建構工具cuDNNCUDA
tensorflow_gpu-2.10.03.7-3.10MSVC 2019Bazel 5.1.18.111.2
tensorflow_gpu-2.9.03.7-3.10MSVC 2019Bazel 5.0.08.111.2
tensorflow_gpu-2.8.03.7-3.10MSVC 2019Bazel 4.2.18.111.2
tensorflow_gpu-2.7.03.7-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.6.03.6-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.5.03.6-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.4.03.6-3.8MSVC 2019Bazel 3.1.08.011.0
tensorflow_gpu-2.3.03.5-3.8MSVC 2019Bazel 3.1.07.610.1
tensorflow_gpu-2.2.03.5-3.8MSVC 2019Bazel 2.0.07.610.1
tensorflow_gpu-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.17.610.1
tensorflow_gpu-2.0.03.5-3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.15.03.5-3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.27.410
tensorflow_gpu-1.13.03.5-3.7MSVC 2015 update 3Bazel 0.19.0-0.21.07.410
tensorflow_gpu-1.12.03.5-3.6MSVC 2015 update 3Bazel 0.15.07.29.0
tensorflow_gpu-1.11.03.5-3.6MSVC 2015 update 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.9.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.8.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.7.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.6.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.5.03.5-3.6MSVC 2015 update 3Cmake v3.6.379
tensorflow_gpu-1.4.03.5-3.6MSVC 2015 update 3Cmake v3.6.368
tensorflow_gpu-1.3.03.5-3.6MSVC 2015 update 3Cmake v3.6.368
tensorflow_gpu-1.2.03.5-3.6MSVC 2015 update 3Cmake v3.6.35.18
tensorflow_gpu-1.1.03.5MSVC 2015 update 3Cmake v3.6.35.18
tensorflow_gpu-1.0.03.5MSVC 2015 update 3Cmake v3.6.35.18