Kompiluj ze źródła w systemie Windows

Zbuduj pakiet pip TensorFlow ze źródła i zainstaluj go w systemie Windows.

Konfiguracja dla systemu Windows

Zainstaluj następujące narzędzia do kompilacji, aby skonfigurować środowisko programistyczne systemu Windows.

Zainstaluj zależności Pythona i pakietu TensorFlow

Zainstaluj wersję Pythona 3.9 lub nowszą w wersji 64-bitowej dla systemu Windows . Wybierz pip jako funkcję opcjonalną i dodaj ją do zmiennej środowiskowej %PATH% .

Zainstaluj zależności pakietu pip TensorFlow:

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

Zależności są wymienione w pliku setup.py w sekcji REQUIRED_PACKAGES .

Zainstaluj Bazela

Zainstaluj Bazel , narzędzie do kompilacji używane do kompilacji TensorFlow. W przypadku wersji Bazel zobacz przetestowane konfiguracje kompilacji dla systemu Windows. Skonfiguruj Bazela do zbudowania C++ .

Dodaj lokalizację pliku wykonywalnego Bazel do zmiennej środowiskowej %PATH% .

Zainstaluj MSYS2

Zainstaluj MSYS2, aby uzyskać narzędzia bin potrzebne do zbudowania TensorFlow. Jeśli MSYS2 jest zainstalowany w C:\msys64 , dodaj C:\msys64\usr\bin do zmiennej środowiskowej %PATH% . Następnie za pomocą cmd.exe uruchom:

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

Zainstaluj narzędzia do budowania Visual C++ 2022

Zainstaluj narzędzia do kompilacji Visual C++ 2022 . Jest dostarczany z programem Visual Studio Community 2022, ale można go zainstalować osobno:

  1. Przejdź do plików do pobrania Visual Studio ,
  2. Wybierz Narzędzia dla Visual Studio lub Inne narzędzia, Framework i składniki redystrybucyjne ,
  3. Pobierz i zainstaluj:
    • Narzędzia do kompilacji dla programu Visual Studio 2022
    • Składniki redystrybucyjne Microsoft Visual C++ dla Visual Studio 2022

Zainstaluj LLVM

  1. Przejdź do plików do pobrania LLVM ,
  2. Pobierz i zainstaluj LLVM zgodny z Windows w C:/Program Files/LLVM, np. LLVM-17.0.6-win64.exe

Zainstaluj obsługę GPU (opcjonalnie)

Zobacz przewodnik obsługi procesora graficznego systemu Windows, aby zainstalować sterowniki i dodatkowe oprogramowanie wymagane do uruchomienia TensorFlow na procesorze graficznym.

Pobierz kod źródłowy TensorFlow

Użyj Git , aby sklonować repozytorium TensorFlow ( git jest zainstalowany z MSYS2):

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

Domyślnie repozytorium znajduje się w master gałęzi rozwojowej. Możesz także sprawdzić gałąź wydania do zbudowania:

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

Opcjonalnie: konfiguracja zmiennej środowiskowej

Uruchom następujące polecenia przed uruchomieniem polecenia kompilacji, aby uniknąć problemów z tworzeniem pakietu: (Jeśli podczas instalowania pakietów skonfigurowano poniższe polecenia, zignoruj ​​je). Uruchom set , aby sprawdzić, czy wszystkie ścieżki zostały ustawione poprawnie, uruchom echo %Environmental Variable% np. echo %BAZEL_VC% aby sprawdzić ścieżkę skonfigurowaną dla określonej zmiennej środowiskowej

Problem z konfiguracją ścieżki Pythona tensorflow:issue#59943 , tensorflow:issue#9436 , tensorflow: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 

Konfiguracja ścieżki Bazel/MSVC/CLANG problem 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)

Opcjonalnie: Skonfiguruj kompilację

Kompilacje TensorFlow są konfigurowane przez plik .bazelrc w katalogu głównym repozytorium. Do dostosowania typowych ustawień można użyć skryptów ./configure lub ./configure.py .

Jeśli chcesz zmienić konfigurację, uruchom skrypt ./configure z katalogu głównego repozytorium.

python ./configure.py

Ten skrypt monituje o lokalizację zależności TensorFlow i prosi o dodatkowe opcje konfiguracji kompilacji (na przykład flagi kompilatora). Poniżej przedstawiono przykładowe uruchomienie python ./configure.py (Twoja sesja może się różnić):

Zbuduj i zainstaluj pakiet pip

Pakiet pip jest budowany w dwóch krokach. Polecenie bazel build tworzy program „konstruujący pakiety”. Następnie uruchamiasz kreatora pakietów, aby utworzyć pakiet.

Zbuduj narzędzie do tworzenia pakietów

repozytorium tensorflow:master zostało domyślnie zaktualizowane do wersji 2.x. Zainstaluj Bazel i użyj bazel build , aby utworzyć narzędzie do tworzenia pakietów TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

Tylko procesor

Użyj bazel , aby stworzyć konstruktor pakietów TensorFlow z obsługą tylko procesora:

Kompiluj za pomocą MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Buduj z CLANG

Użyj --config= win_clang , aby zbudować TenorFlow za pomocą kompilatora CLANG:

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

Wsparcie GPU

Aby stworzyć narzędzie do tworzenia pakietów TensorFlow z obsługą GPU:

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

Polecenia do czyszczenia pamięci podręcznej Bazel w celu usunięcia błędów spowodowanych nieprawidłowymi lub nieaktualnymi danymi w pamięci podręcznej, Bazel clean z flagą --expunge usuwa pliki trwale

bazel clean 
bazel clean --expunge  

Opcje kompilacji Bazela

Użyj tej opcji podczas budowania, aby uniknąć problemów z tworzeniem pakietu: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Aby zapoznać się z opcjami kompilacji , zobacz opis wiersza poleceń Bazel.

Budowanie TensorFlow ze źródła może wymagać dużej ilości pamięci RAM. Jeśli twój system ma ograniczoną pamięć, ogranicz użycie RAMu Bazela za pomocą: --local_ram_resources=2048 .

Jeśli budujesz z obsługą GPU, dodaj --copt=-nvcc_options=disable-warnings aby ukryć komunikaty ostrzegawcze nvcc.

Zbuduj pakiet

Aby zbudować pakiet pip, musisz określić flagę --repo_env=WHEEL_NAME. W zależności od podanej nazwy pakiet zostanie utworzony. Na przykład:

Aby zbudować pakiet procesora tensorflow:

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

Aby zbudować pakiet nocny, ustaw tf_nightly zamiast tensorflow , np. aby zbudować pakiet nocny procesora:

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

W rezultacie wygenerowane koło będzie zlokalizowane w

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

Zainstaluj pakiet

Nazwa wygenerowanego pliku .whl zależy od wersji TensorFlow i Twojej platformy. Użyj pip install , aby zainstalować pakiet, na przykład:

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

Kompiluj przy użyciu powłoki MSYS

TensorFlow można również zbudować przy użyciu powłoki MSYS. Wprowadź zmiany wymienione poniżej, a następnie postępuj zgodnie z poprzednimi instrukcjami dotyczącymi natywnego wiersza poleceń systemu Windows ( cmd.exe ).

Wyłącz konwersję ścieżki MSYS

MSYS automatycznie konwertuje argumenty wyglądające jak ścieżki uniksowe na ścieżki Windows, co nie działa w przypadku bazel . (Etykieta //path/to:bin jest uważana za ścieżkę bezwzględną w systemie Unix, ponieważ zaczyna się od ukośnika.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Ustaw swoją ŚCIEŻKĘ

Dodaj katalogi instalacyjne Bazel i Python do zmiennej środowiskowej $PATH . Jeśli Bazel jest zainstalowany w C:\tools\bazel.exe , a Python w C:\Python\python.exe , ustaw PATH za pomocą:

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

Aby uzyskać obsługę GPU, dodaj katalogi bin CUDA i cuDNN do $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"

Przetestowane konfiguracje kompilacji

Procesor

Wersja Wersja Pythona Kompilator Buduj narzędzia
tensorflow-2.18.0 3,9-3,12 KLANG 17.0.6 Bazela 6.5.0
tensorflow-2.17.0 3,9-3,12 KLANG 17.0.6 Bazela 6.5.0
tensorflow-2.16.1 3,9-3,12 KLANG 17.0.6 Bazela 6.5.0
tensorflow-2.15.0 3,9-3,11 MSVC 2019 Bazela 6.1.0
tensorflow-2.14.0 3,9-3,11 MSVC 2019 Bazela 6.1.0
tensorflow-2.12.0 3.8-3.11 MSVC 2019 Bazela 5.3.0
tensorflow-2.11.0 3,7-3,10 MSVC 2019 Bazela 5.3.0
tensorflow-2.10.0 3,7-3,10 MSVC 2019 Bazela 5.1.1
tensorflow-2.9.0 3,7-3,10 MSVC 2019 Bazel 5.0.0
tensorflow-2.8.0 3,7-3,10 MSVC 2019 Bazela 4.2.1
tensorflow-2.7.0 3,7-3,9 MSVC 2019 Bazela 3.7.2
tensorflow-2.6.0 3,6-3,9 MSVC 2019 Bazela 3.7.2
tensorflow-2.5.0 3,6-3,9 MSVC 2019 Bazela 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 Aktualizacja MSVC 2015 3 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3,5-3,6 Aktualizacja MSVC 2015 3 Bazel 0.15.0
tensorflow-1.11.0 3,5-3,6 Aktualizacja MSVC 2015 3 Bazel 0.15.0
tensorflow-1.10.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.9.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.8.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.7.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.6.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.5.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.4.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.3.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.2.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.1.0 3.5 Aktualizacja MSVC 2015 3 Cmake v3.6.3
tensorflow-1.0.0 3.5 Aktualizacja MSVC 2015 3 Cmake v3.6.3

GPU

Wersja Wersja Pythona Kompilator Buduj narzędzia cuDNN CUDA
tensorflow_gpu-2.10.0 3,7-3,10 MSVC 2019 Bazela 5.1.1 8.1 11.2
tensorflow_gpu-2.9.0 3,7-3,10 MSVC 2019 Bazel 5.0.0 8.1 11.2
tensorflow_gpu-2.8.0 3,7-3,10 MSVC 2019 Bazela 4.2.1 8.1 11.2
tensorflow_gpu-2.7.0 3,7-3,9 MSVC 2019 Bazela 3.7.2 8.1 11.2
tensorflow_gpu-2.6.0 3,6-3,9 MSVC 2019 Bazela 3.7.2 8.1 11.2
tensorflow_gpu-2.5.0 3,6-3,9 MSVC 2019 Bazela 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 Aktualizacja MSVC 2015 3 Bazel 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3,5-3,6 Aktualizacja MSVC 2015 3 Bazel 0.15.0 7.2 9,0
tensorflow_gpu-1.11.0 3,5-3,6 Aktualizacja MSVC 2015 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3,5-3,6 Aktualizacja MSVC 2015 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 Aktualizacja MSVC 2015 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 Aktualizacja MSVC 2015 3 Cmake v3.6.3 5.1 8