Zbuduj pakiet pip TensorFlow ze źródła i zainstaluj go w systemie Windows.
Instalacja dla systemu Windows
Zainstaluj następujące narzędzia do kompilacji, aby skonfigurować środowisko programistyczne systemu Windows.
Zainstaluj Pythona i zależności pakietu TensorFlow
Zainstaluj wersję Pythona 3.9+ 64-bit 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 pippip3 install -U six numpy wheel packagingpip3 install -U keras_preprocessing --no-deps
Zależności są wymienione w pliku setup.py w sekcji REQUIRED_PACKAGES .
Zainstaluj Bazel
Zainstaluj Bazel , narzędzie do kompilacji TensorFlow. Aby sprawdzić wersję Bazel, zapoznaj się z przetestowanymi konfiguracjami kompilacji dla systemu Windows. Skonfiguruj Bazel do kompilacji w C++ .
Dodaj lokalizację pliku wykonywalnego Bazel do zmiennej środowiskowej %PATH% .
Zainstaluj MSYS2
Zainstaluj MSYS2 , aby uzyskać narzędzia bin potrzebne do kompilacji 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 Visual C++ Build Tools 2022
Zainstaluj narzędzia Visual C++ Build Tools 2022. Są one dołączone do pakietu Visual Studio Community 2022, ale można je zainstalować osobno:
- Przejdź do pobierania programu Visual Studio ,
- Wybierz narzędzia dla programu Visual Studio lub innych narzędzi, frameworka i pakietów redystrybucyjnych ,
- Pobierz i zainstaluj:
- Narzędzia do kompilacji dla programu Visual Studio 2022
- Pakiety redystrybucyjne Microsoft Visual C++ dla programu Visual Studio 2022
Zainstaluj LLVM
- Przejdź do pobierania LLVM ,
- Pobierz i zainstaluj LLVM zgodny z systemem Windows w C:/Program Files/LLVM, np. LLVM-17.0.6-win64.exe
Zainstaluj obsługę GPU (opcjonalnie)
Aby zainstalować sterowniki i dodatkowe oprogramowanie niezbędne do uruchomienia TensorFlow na procesorze GPU, zapoznaj się z podręcznikiem obsługi procesorów GPU w systemie Windows.
Pobierz kod źródłowy TensorFlow
Użyj Gita do sklonowania repozytorium TensorFlow ( git jest instalowany z MSYS2):
git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow
Repozytorium domyślnie znajduje się w master gałęzi rozwojowej. Możesz również sprawdzić gałąź wydania , aby skompilować:
git checkout branch_name # r1.9, r1.10, etc.
Opcjonalnie: Konfiguracja zmiennej środowiskowej
Uruchom poniższe polecenia przed uruchomieniem polecenia kompilacji, aby uniknąć problemów z tworzeniem pakietów: (Jeśli poniższe polecenia zostały skonfigurowane podczas instalacji pakietów, zignoruj je). Uruchom polecenie set , aby sprawdzić, czy wszystkie ścieżki zostały poprawnie skonfigurowane, lub polecenie echo %Environmental Variable% np. echo %BAZEL_VC% aby sprawdzić ścieżkę skonfigurowaną dla konkretnej 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
Problem z konfiguracją ścieżki 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)
Opcjonalnie: Skonfiguruj kompilację
Kompilacje TensorFlow są konfigurowane za pomocą pliku .bazelrc w katalogu głównym repozytorium. Skrypty ./configure lub ./configure.py służą do dostosowywania typowych ustawień.
Jeśli musisz zmienić konfigurację, uruchom skrypt ./configure z katalogu głównego repozytorium.
python ./configure.py
Ten skrypt wyświetla monit o podanie lokalizacji zależności TensorFlow i prosi o dodatkowe opcje konfiguracji kompilacji (na przykład flagi kompilatora). Poniżej przedstawiono przykładowe uruchomienie skryptu 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 „package-builder”. Następnie uruchamiasz program package-builder, aby utworzyć pakiet.
Zbuduj program do tworzenia pakietów
Repozytorium tensorflow:master zostało zaktualizowane do domyślnej wersji kompilacji 2.x. Zainstaluj Bazel i użyj bazel build , aby utworzyć program do tworzenia pakietów TensorFlow.
bazel build //tensorflow/tools/pip_package:wheel
Tylko procesor
Użyj bazel , aby utworzyć program do tworzenia pakietów TensorFlow obsługujący wyłącznie procesor:
Kompilacja z 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 skompilować 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
Obsługa GPU
Aby utworzyć program do tworzenia pakietów TensorFlow ze wsparciem GPU:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Polecenia czyszczenia pamięci podręcznej Bazel w celu rozwiązania błędów spowodowanych nieprawidłowymi lub nieaktualnymi danymi w pamięci podręcznej. Bazel clean z flagą --expunge usuwa pliki na stałe.
bazel clean bazel clean --expunge
Opcje kompilacji Bazel
Użyj tej opcji podczas kompilacji, aby uniknąć problemów z tworzeniem pakietów: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Aby zapoznać się z opcjami kompilacji, zobacz dokumentację wiersza poleceń Bazel.
Kompilacja TensorFlow ze źródeł może zużywać dużo pamięci RAM. Jeśli Twój system ma ograniczenia pamięci, ogranicz użycie pamięci RAM przez Bazel za pomocą: --local_ram_resources=2048 .
Jeśli kompilacja ma obsługiwać obsługę GPU, należy dodać --copt=-nvcc_options=disable-warnings , aby wyłączyć komunikaty ostrzegawcze nvcc.
Zbuduj pakiet
Aby zbudować pakiet pip, należy określić flagę --repo_env=WHEEL_NAME. W zależności od podanej nazwy, pakiet zostanie utworzony. Na przykład:
Aby zbudować pakiet CPU 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 dla 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 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
Kompilacja przy użyciu powłoki MSYS
TensorFlow można również skompilować za pomocą powłoki MSYS. Wprowadź zmiany wymienione poniżej, a następnie postępuj zgodnie z poprzednimi instrukcjami dla natywnego wiersza poleceń systemu Windows ( cmd.exe ).
Wyłącz konwersję ścieżki MSYS
MSYS automatycznie konwertuje argumenty wyglądające jak ścieżki Unix na ścieżki Windows, a to nie działa z bazel . (Etykieta //path/to:bin jest uważana za ścieżkę bezwzględną Unix, ponieważ zaczyna się od ukośnika).
export MSYS_NO_PATHCONV=1export 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 zmienną PATH w następujący sposób:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"export PATH="/c/path/to/Python:$PATH"
Aby uzyskać obsługę GPU, dodaj katalogi bin CUDA i cuDNN do zmiennej $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 | Narzędzia do kompilacji |
|---|---|---|---|
| tensorflow-2.20.0 | 3.9-3.13 | BRZĘK 18.1.4 | Bazel 7.4.1 |
| tensorflow-2.19.0 | 3.9-3.12 | BRZĘK 18.1.4 | Bazel 6.5.0 |
| tensorflow-2.18.0 | 3.9-3.12 | BRZĘK 17.0.6 | Bazel 6.5.0 |
| tensorflow-2.17.0 | 3.9-3.12 | BRZĘK 17.0.6 | Bazel 6.5.0 |
| tensorflow-2.16.1 | 3.9-3.12 | BRZĘK 17.0.6 | Bazel 6.5.0 |
| tensorflow-2.15.0 | 3.9-3.11 | MSVC 2019 | Bazel 6.1.0 |
| tensorflow-2.14.0 | 3.9-3.11 | MSVC 2019 | Bazel 6.1.0 |
| tensorflow-2.12.0 | 3.8-3.11 | MSVC 2019 | Bazel 5.3.0 |
| tensorflow-2.11.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.3.0 |
| tensorflow-2.10.0 | 3.7-3.10 | MSVC 2019 | Bazel 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 | Bazel 4.2.1 |
| tensorflow-2.7.0 | 3.7-3.9 | MSVC 2019 | Bazel 3.7.2 |
| 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 | 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 |
Procesor graficzny
| Wersja | Wersja Pythona | Kompilator | Narzędzia do kompilacji | cuDNN | CUDA |
|---|---|---|---|---|---|
| tensorflow_gpu-2.10.0 | 3.7-3.10 | MSVC 2019 | Bazel 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 | Bazel 4.2.1 | 8.1 | 11.2 |
| tensorflow_gpu-2.7.0 | 3.7-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
| 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 | 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 |