Создайте пакет pip TensorFlow из исходного кода и установите его в Windows.
Настройка для Windows
Установите следующие инструменты сборки, чтобы настроить среду разработки Windows.
Установите Python и зависимости пакета TensorFlow.
Установите 64-разрядную версию Python 3.9+ для Windows . Выберите pip в качестве дополнительной функции и добавьте ее в переменную среды %PATH%
.
Установите зависимости пакета pip TensorFlow:
pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps
Зависимости перечислены в файле setup.py
в разделе REQUIRED_PACKAGES
.
Установить Базель
Установите Bazel , инструмент сборки, используемый для компиляции TensorFlow. Для версии Bazel см. протестированные конфигурации сборки для Windows. Настройте Bazel для сборки C++ .
Добавьте расположение исполняемого файла Bazel в переменную среды %PATH%
.
Установить MSYS2
Установите MSYS2 для инструментов bin, необходимых для сборки TensorFlow. Если 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++ 2022.
Установите инструменты сборки Visual C++ 2022 . Он входит в состав Visual Studio Community 2022, но его можно установить отдельно:
- Перейдите к загрузкам Visual Studio ,
- Выберите «Инструменты для Visual Studio» или «Другие инструменты, платформа и распространяемые файлы» .
- Загрузите и установите:
- Инструменты сборки для Visual Studio 2022
- Распространяемые файлы Microsoft Visual C++ для Visual Studio 2022
Установить ЛЛВМ
- Перейдите к загрузкам LLVM ,
- Загрузите и установите Windows-совместимый LLVM в C:/Program Files/LLVM, например, LLVM-17.0.6-win64.exe.
Установите поддержку графического процессора (необязательно)
См. руководство по поддержке графического процессора Windows, чтобы установить драйверы и дополнительное программное обеспечение, необходимое для запуска 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#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
Проблема с настройкой пути 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
только для процессора
Используйте bazel
, чтобы создать сборщик пакетов 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
для сборки TenorFlow с помощью компилятора CLANG:
bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Поддержка графического процессора
Чтобы создать сборщик пакетов TensorFlow с поддержкой графического процессора:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Команды очистки кэша bazel для устранения ошибок из-за недействительных или устаревших кэшированных данных, bazel clean с флагом --expunge удаляет файлы без возможности восстановления.
bazel clean bazel clean --expunge
Варианты сборки Базеля
Используйте эту опцию при сборке, чтобы избежать проблем с созданием пакета: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Параметры сборки см. в справочнике по командной строке Bazel.
Сборка TensorFlow из исходного кода может использовать много оперативной памяти. Если ваша система ограничена в объеме памяти, ограничьте использование оперативной памяти Bazel с помощью: --local_ram_resources=2048
.
При сборке с поддержкой графического процессора добавьте --copt=-nvcc_options=disable-warnings
чтобы подавить предупреждающие сообщения nvcc.
Сборка пакета
Чтобы собрать пакет pip, вам необходимо указать флаг --repo_env=WHEEL_NAME. В зависимости от указанного имени будет создан пакет. Например:
Чтобы собрать пакет ЦП с тензорным потоком:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Чтобы собрать ночной пакет, установите tf_nightly
вместо tensorflow
, например, для сборки ночного пакета CPU:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
В результате сгенерированное колесо будет находиться в
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
TensorFlow также можно собрать с использованием оболочки MSYS. Внесите изменения, перечисленные ниже, а затем следуйте предыдущим инструкциям для собственной командной строки Windows ( cmd.exe
).
Отключить преобразование пути MSYS
MSYS автоматически преобразует аргументы, которые выглядят как пути Unix, в пути Windows, и это не работает с bazel
. (Метка //path/to:bin
считается абсолютным путем Unix, поскольку она начинается с косой черты.)
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
Установите свой ПУТЬ
Добавьте каталоги установки Bazel и Python в переменную среды $PATH
. Если Bazel установлен в C:\tools\bazel.exe
, а Python — в C:\Python\python.exe
, установите PATH
с помощью:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"
Для поддержки графического процессора добавьте каталоги bin CUDA и cuDNN в $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"
Протестированные конфигурации сборки
Процессор
Версия | Версия Python | Компилятор | Инструменты сборки |
---|---|---|---|
тензорный поток-2.18.0 | 3,9-3,12 | КЛАНГ 17.0.6 | Базель 6.5.0 |
тензорный поток-2.17.0 | 3,9-3,12 | КЛАНГ 17.0.6 | Базель 6.5.0 |
тензорный поток-2.16.1 | 3,9-3,12 | КЛАНГ 17.0.6 | Базель 6.5.0 |
тензорный поток-2.15.0 | 3,9-3,11 | МСВК 2019 | Базель 6.1.0 |
тензорный поток-2.14.0 | 3,9-3,11 | МСВК 2019 | Базель 6.1.0 |
тензорный поток-2.12.0 | 3,8-3,11 | МСВК 2019 | Базель 5.3.0 |
тензорный поток-2.11.0 | 3,7-3,10 | МСВК 2019 | Базель 5.3.0 |
тензорный поток-2.10.0 | 3,7-3,10 | МСВК 2019 | Базель 5.1.1 |
тензорный поток-2.9.0 | 3,7-3,10 | МСВК 2019 | Базель 5.0.0 |
тензорный поток-2.8.0 | 3,7-3,10 | МСВК 2019 | Базель 4.2.1 |
тензорный поток-2.7.0 | 3,7-3,9 | МСВК 2019 | Базель 3.7.2 |
тензорный поток-2.6.0 | 3,6-3,9 | МСВК 2019 | Базель 3.7.2 |
тензорный поток-2.5.0 | 3,6-3,9 | МСВК 2019 | Базель 3.7.2 |
тензорный поток-2.4.0 | 3,6-3,8 | МСВК 2019 | Базель 3.1.0 |
тензорный поток-2.3.0 | 3,5-3,8 | МСВК 2019 | Базель 3.1.0 |
тензорный поток-2.2.0 | 3,5-3,8 | МСВК 2019 | Базель 2.0.0 |
тензорный поток-2.1.0 | 3,5-3,7 | МСВК 2019 | Базель 0,27,1-0,29,1 |
тензорный поток-2.0.0 | 3,5-3,7 | МСВК 2017 | Базель 0.26.1 |
тензорный поток-1.15.0 | 3,5-3,7 | МСВК 2017 | Базель 0.26.1 |
тензорный поток-1.14.0 | 3,5-3,7 | МСВК 2017 | Базель 0,24,1-0,25,2 |
тензорный поток-1.13.0 | 3,5-3,7 | MSVC 2015, обновление 3 | Базель 0.19.0-0.21.0 |
тензорный поток-1.12.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Базель 0.15.0 |
тензорный поток-1.11.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Базель 0.15.0 |
тензорный поток-1.10.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.9.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.8.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.7.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.6.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.5.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.4.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.3.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.2.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.1.0 | 3,5 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
тензорный поток-1.0.0 | 3,5 | MSVC 2015, обновление 3 | Cmake v3.6.3 |
графический процессор
Версия | Версия Python | Компилятор | Инструменты сборки | cuDNN | КУДА |
---|---|---|---|---|---|
тензорный поток_гпу-2.10.0 | 3,7-3,10 | МСВК 2019 | Базель 5.1.1 | 8.1 | 11.2 |
тензорный поток_гпу-2.9.0 | 3,7-3,10 | МСВК 2019 | Базель 5.0.0 | 8.1 | 11.2 |
тензорный поток_гпу-2.8.0 | 3,7-3,10 | МСВК 2019 | Базель 4.2.1 | 8.1 | 11.2 |
тензорный поток_гпу-2.7.0 | 3,7-3,9 | МСВК 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный поток_гпу-2.6.0 | 3,6-3,9 | МСВК 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный поток_гпу-2.5.0 | 3,6-3,9 | МСВК 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный поток_гпу-2.4.0 | 3,6-3,8 | МСВК 2019 | Базель 3.1.0 | 8.0 | 11,0 |
тензорный поток_гпу-2.3.0 | 3,5-3,8 | МСВК 2019 | Базель 3.1.0 | 7,6 | 10.1 |
тензорный поток_гпу-2.2.0 | 3,5-3,8 | МСВК 2019 | Базель 2.0.0 | 7,6 | 10.1 |
тензорный поток_гпу-2.1.0 | 3,5-3,7 | МСВК 2019 | Базель 0.27.1-0.29.1 | 7,6 | 10.1 |
тензорный поток_гпу-2.0.0 | 3,5-3,7 | МСВК 2017 | Базель 0.26.1 | 7.4 | 10 |
тензорный поток_гпу-1.15.0 | 3,5-3,7 | МСВК 2017 | Базель 0.26.1 | 7.4 | 10 |
тензорный поток_гпу-1.14.0 | 3,5-3,7 | МСВК 2017 | Базель 0,24,1-0,25,2 | 7.4 | 10 |
тензорный поток_гпу-1.13.0 | 3,5-3,7 | MSVC 2015, обновление 3 | Базель 0.19.0-0.21.0 | 7.4 | 10 |
тензорный поток_гпу-1.12.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Базель 0.15.0 | 7.2 | 9,0 |
тензорный поток_гпу-1.11.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Базель 0.15.0 | 7 | 9 |
тензорный поток_гпу-1.10.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный поток_гпу-1.8.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный поток_гпу-1.7.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный поток_гпу-1.6.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный поток_гпу-1.5.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный поток_гпу-1.4.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 6 | 8 |
тензорный поток_гпу-1.3.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 6 | 8 |
тензорный поток_гпу-1.2.0 | 3,5-3,6 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3,5 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3,5 | MSVC 2015, обновление 3 | Cmake v3.6.3 | 5.1 | 8 |