在 Windows 上從原始碼開始建構

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

Windows 設定

請安裝下列建構工具來設定 Windows 開發環境。

安裝 Python 和 TensorFlow 套件依附元件

請安裝適用於 Windows 的 Python 3.6.x (64 位元版本)。 選取 pip 做為選用功能,並加入 %PATH% 環境變數。

接著安裝 TensorFlow pip 套件依附元件:

pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --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 -S git patch unzip

安裝 Visual C++ Build Tools 2019

請安裝 Visual C++ Build Tools 2019。此為 Visual Studio 2019 的隨附工具,但您也可以選擇單獨安裝,步驟如下:

  1. 前往 Visual Studio 下載頁面
  2. 選取可轉散發套件和建構工具
  3. 下載並安裝:
    • Microsoft Visual C ++ 2019 可轉散發套件
    • Microsoft Build Tools 2019

安裝 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.

設定版本

請在 TensorFlow 來源樹狀結構的根層級執行下列指令碼,以設定系統版本:

python ./configure.py

這個指令碼會提示您輸入 TensorFlow 依附元件的位置,並要求其他的建構設定選項 (例如編譯器旗標)。下方是 python ./configure.py 的執行範例 (實際階段可能會有所不同):

設定選項

如需 GPU 支援,請指定 CUDA 和 cuDNN 的版本。如果您的系統安裝了多個版本的 CUDA 或 cuDNN,請明確設定版本,不要使用預設值。./configure.py 會建立系統 CUDA 程式庫的符號連結。因此,如果您更新了 CUDA 程式庫的路徑,必須再次執行這個設定步驟才能進行建構。

建構 pip 套件

TensorFlow 2.x

tensorflow:master 存放區經過更新,預設會建構 2.x 版本。請安裝 Bazel,並使用 bazel build 建立 TensorFlow 套件。

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

如要從主要版本建構 TensorFlow 1.x 版本,請使用 bazel build --config=v1 建立 TensorFlow 1.x 套件。

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package

僅支援 CPU

使用 bazel 建立僅支援 CPU 的 TensorFlow 套件建構工具:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPU 支援

如要建立支援 GPU 的 TensorFlow 套件建構工具:

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

Bazel 建構選項

建構時請使用這個選項,避免建立套件時發生問題:tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

如需瞭解建構選項,請參閱 Bazel 指令列參考資料

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

如要建構支援 GPU 的 TensorFlow,請加入 --copt=-nvcc_options=disable-warnings 以略過 nvcc 警告訊息。

建構套件

bazel build 指令會建立名為 build_pip_package 的執行檔,這是建構 pip 套件的程式。舉例來說,下列指令碼會在 C:/tmp/tensorflow_pkg 目錄中建構 .whl 套件:

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

雖然您可以在同一個來源樹狀結構下建構 CUDA 和非 CUDA 設定,但在相同來源樹狀結構中切換使用這兩項設定時,我們仍然建議您執行 bazel clean

安裝套件

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

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

使用 MSYS 殼層建構

您也可以使用 MSYS 殼層來建構 TensorFlow。請執行下列變更,然後依照 Windows 原生指令列 (cmd.exe) 先前的指示操作。

停用 MSYS 路徑轉換

MSYS 會自動將形似 Unix 路徑的引數轉換為 Windows 路徑,這個功能不適用於 bazel。(標籤 //path/to:bin 以斜線開頭,因此 MSYS 會視其為 Unix 絕對路徑。)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

設定 PATH 環境變數

請將 Bazel 和 Python 安裝目錄加入 $PATH 環境變數。如果 Bazel 是安裝至 C:\tools\bazel.exe,而 Python 安裝至 C:\Python36\python.exe,請將 PATH 設為:

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/Python36:$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.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.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