Сборка из исходного кода в Windows

Создайте пакет 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, но его можно установить отдельно:

  1. Перейдите к загрузкам Visual Studio ,
  2. Выберите «Инструменты для Visual Studio» или «Другие инструменты, платформа и распространяемые файлы» .
  3. Загрузите и установите:
    • Инструменты сборки для Visual Studio 2022
    • Распространяемые файлы Microsoft Visual C++ для Visual Studio 2022

Установить ЛЛВМ

  1. Перейдите к загрузкам LLVM ,
  2. Загрузите и установите 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 separator
export 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