在 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 的隨附工具,但您也可以選擇單獨安裝,步驟如下:
- 前往 Visual Studio 下載頁面。
- 選取可轉散發套件和建構工具。
- 下載並安裝:
- 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
從原始碼開始建構 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 separatorexport 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.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 |
tensorflow-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
tensorflow-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 |
tensorflow-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 |
tensorflow-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
GPU
版本 | Python 版本 | 編譯器 | 建構工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |