Создайте 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++ Build Tools 2022
Установите инструменты сборки Visual C++ 2022. Они входят в состав Visual Studio Community 2022, но их можно установить отдельно:
- Перейдите в раздел загрузок Visual Studio ,
- Выберите «Инструменты для Visual Studio» или «Другие инструменты, фреймворк и распространяемые компоненты» .
- Загрузите и установите:
- Инструменты сборки для Visual Studio 2022
- Распространяемые компоненты Microsoft Visual C++ для Visual Studio 2022
Установить LLVM
- Перейти к загрузкам LLVM ,
- Загрузите и установите совместимый с Windows LLVM в C:/Program Files/LLVM, например, LLVM-17.0.6-win64.exe
Установить поддержку графического процессора (необязательно)
Инструкции по установке драйверов и дополнительного программного обеспечения, необходимых для запуска TensorFlow на графическом процессоре, см. в руководстве по поддержке графических процессоров Windows.
Загрузите исходный код 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.
Дополнительно: настройка переменных окружающей среды
Выполните следующие команды перед запуском команды build, чтобы избежать проблем с созданием пакета: (Если указанные ниже команды были настроены при установке пакетов, проигнорируйте их). Выполните 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
создаёт программу «package-builder». Затем вы запускаете package-builder для создания пакета.
Сборка сборщика пакетов
Репозиторий tensorflow:master обновлён до версии 2.x по умолчанию. Установите Bazel и используйте bazel build
для создания сборщика пакетов TensorFlow.
bazel build //tensorflow/tools/pip_package:wheel
только ЦП
Используйте bazel
для создания компоновщика пакетов TensorFlow с поддержкой только CPU:
Сборка с помощью 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 с поддержкой GPU:
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
Варианты сборки Bazel
Используйте эту опцию при сборке, чтобы избежать проблем с созданием пакета: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Параметры сборки см. в справочнике командной строки Bazel.
Сборка TensorFlow из исходного кода может потребовать много оперативной памяти. Если ваша система ограничена памятью, ограничьте использование оперативной памяти Bazel с помощью параметра --local_ram_resources=2048
.
При сборке с поддержкой GPU добавьте --copt=-nvcc_options=disable-warnings
для подавления предупреждающих сообщений nvcc.
Собрать пакет
Для сборки pip-пакета необходимо указать флаг --repo_env=WHEEL_NAME. Пакет будет создан в зависимости от указанного имени. Например:
Чтобы собрать пакет TensorFlow CPU:
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"
Для поддержки 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"
Протестированные конфигурации сборки
Процессор
Версия | версия Python | Компилятор | Инструменты для сборки |
---|---|---|---|
тензорный поток-2.20.0 | 3.9-3.13 | КЛАНГ 18.1.4 | Базель 7.4.1 |
тензорный поток-2.19.0 | 3.9-3.12 | КЛАНГ 18.1.4 | Базель 6.5.0 |
тензорный поток-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 | MSVC 2019 | Базель 6.1.0 |
тензорный поток-2.14.0 | 3.9-3.11 | MSVC 2019 | Базель 6.1.0 |
тензорный поток-2.12.0 | 3.8-3.11 | MSVC 2019 | Базель 5.3.0 |
тензорный поток-2.11.0 | 3.7-3.10 | MSVC 2019 | Базель 5.3.0 |
тензорный поток-2.10.0 | 3.7-3.10 | MSVC 2019 | Базель 5.1.1 |
тензорный поток-2.9.0 | 3.7-3.10 | MSVC 2019 | Базель 5.0.0 |
тензорный поток-2.8.0 | 3.7-3.10 | MSVC 2019 | Базель 4.2.1 |
тензорный поток-2.7.0 | 3.7-3.9 | MSVC 2019 | Базель 3.7.2 |
тензорный поток-2.6.0 | 3.6-3.9 | MSVC 2019 | Базель 3.7.2 |
тензорный поток-2.5.0 | 3.6-3.9 | MSVC 2019 | Базель 3.7.2 |
тензорный поток-2.4.0 | 3.6-3.8 | MSVC 2019 | Базель 3.1.0 |
тензорный поток-2.3.0 | 3,5-3,8 | MSVC 2019 | Базель 3.1.0 |
тензорный поток-2.2.0 | 3,5-3,8 | MSVC 2019 | Базель 2.0.0 |
тензорный поток-2.1.0 | 3,5-3,7 | MSVC 2019 | Базель 0,27,1-0,29,1 |
тензорный поток-2.0.0 | 3,5-3,7 | MSVC 2017 | Базель 0.26.1 |
тензорный поток-1.15.0 | 3,5-3,7 | MSVC 2017 | Базель 0.26.1 |
тензорный поток-1.14.0 | 3,5-3,7 | MSVC 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 | CUDA |
---|---|---|---|---|---|
тензорный_gpu-2.10.0 | 3.7-3.10 | MSVC 2019 | Базель 5.1.1 | 8.1 | 11.2 |
тензорный_gpu-2.9.0 | 3.7-3.10 | MSVC 2019 | Базель 5.0.0 | 8.1 | 11.2 |
тензорный_gpu-2.8.0 | 3.7-3.10 | MSVC 2019 | Базель 4.2.1 | 8.1 | 11.2 |
тензорный_gpu-2.7.0 | 3.7-3.9 | MSVC 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный_gpu-2.6.0 | 3.6-3.9 | MSVC 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный_gpu-2.5.0 | 3.6-3.9 | MSVC 2019 | Базель 3.7.2 | 8.1 | 11.2 |
тензорный_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Базель 3.1.0 | 8.0 | 11.0 |
тензорный_gpu-2.3.0 | 3,5-3,8 | MSVC 2019 | Базель 3.1.0 | 7.6 | 10.1 |
тензорный_gpu-2.2.0 | 3,5-3,8 | MSVC 2019 | Базель 2.0.0 | 7.6 | 10.1 |
тензорный_gpu-2.1.0 | 3,5-3,7 | MSVC 2019 | Базель 0,27,1-0,29,1 | 7.6 | 10.1 |
тензорный_gpu-2.0.0 | 3,5-3,7 | MSVC 2017 | Базель 0.26.1 | 7.4 | 10 |
тензорный_gpu-1.15.0 | 3,5-3,7 | MSVC 2017 | Базель 0.26.1 | 7.4 | 10 |
тензорный_gpu-1.14.0 | 3,5-3,7 | MSVC 2017 | Базель 0,24,1-0,25,2 | 7.4 | 10 |
тензорный_gpu-1.13.0 | 3,5-3,7 | MSVC 2015 обновление 3 | Базель 0,19,0-0,21,0 | 7.4 | 10 |
тензорный_gpu-1.12.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Базель 0.15.0 | 7.2 | 9.0 |
тензорный_gpu-1.11.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Базель 0.15.0 | 7 | 9 |
тензорный_gpu-1.10.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.9.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.8.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.7.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.6.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.5.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 7 | 9 |
тензорный_gpu-1.4.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 6 | 8 |
тензорный_gpu-1.3.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 6 | 8 |
тензорный_gpu-1.2.0 | 3,5-3,6 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 5.1 | 8 |
тензорный_gpu-1.1.0 | 3.5 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 5.1 | 8 |
тензорный_gpu-1.0.0 | 3.5 | MSVC 2015 обновление 3 | Cmake v3.6.3 | 5.1 | 8 |