Construir desde fuente en Windows

Cree un paquete pip de TensorFlow desde el código fuente e instálelo en Windows.

Configuración para Windows

Instale las siguientes herramientas de compilación para configurar su entorno de desarrollo de Windows.

Instale Python y las dependencias del paquete TensorFlow

Instale una versión Python 3.9+ de 64 bits para Windows . Seleccione pip como característica opcional y agréguelo a su variable ambiental %PATH% .

Instale las dependencias del paquete pip de TensorFlow:

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

Las dependencias se enumeran en el archivo setup.py en REQUIRED_PACKAGES .

Instalar Bazel

Instale Bazel , la herramienta de compilación utilizada para compilar TensorFlow. Para la versión de Bazel, consulte las configuraciones de compilación probadas para Windows. Configure Bazel para compilar C++ .

Agregue la ubicación del ejecutable de Bazel a su variable de entorno %PATH% .

Instalar MSYS2

Instale MSYS2 para las herramientas bin necesarias para construir TensorFlow. Si MSYS2 está instalado en C:\msys64 , agregue C:\msys64\usr\bin a su variable de entorno %PATH% . Luego, usando cmd.exe , ejecute:

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

Instalar herramientas de compilación de Visual C++ 2022

Instale las herramientas de compilación de Visual C++ 2022 . Viene con Visual Studio Community 2022 pero se puede instalar por separado:

  1. Vaya a las descargas de Visual Studio ,
  2. Seleccione Herramientas para Visual Studio u otras herramientas, marco y redistribuibles ,
  3. Descargue e instale:
    • Herramientas de compilación para Visual Studio 2022
    • Redistribuibles de Microsoft Visual C++ para Visual Studio 2022

Instalar LLVM

  1. Vaya a las descargas de LLVM ,
  2. Descargue e instale LLVM compatible con Windows en C:/Program Files/LLVM, por ejemplo, LLVM-17.0.6-win64.exe

Instalar soporte para GPU (opcional)

Consulte la guía de compatibilidad con GPU de Windows para instalar los controladores y el software adicional necesarios para ejecutar TensorFlow en una GPU.

Descargue el código fuente de TensorFlow

Utilice Git para clonar el repositorio de TensorFlow ( git se instala con MSYS2):

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

El repositorio tiene como valor predeterminado la rama de desarrollo master . También puede consultar una rama de lanzamiento para compilar:

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

Opcional: Configuración de variables ambientales

Ejecute los siguientes comandos antes de ejecutar el comando de compilación para evitar problemas con la creación del paquete: (Si los siguientes comandos se configuraron durante la instalación de los paquetes, ignórelos). Ejecute set para verificar si todas las rutas se configuraron correctamente, ejecute echo %Environmental Variable% por ejemplo, echo %BAZEL_VC% para verificar la ruta configurada para una variable ambiental específica.

Problema de configuración de la ruta de 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 

Problema de configuración de ruta de Bazel/MSVC/CLANG tensorflow: problema#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)

Opcional: configurar la compilación

Las compilaciones de TensorFlow se configuran mediante el archivo .bazelrc en el directorio raíz del repositorio. Los scripts ./configure o ./configure.py se pueden utilizar para ajustar configuraciones comunes.

Si necesita cambiar la configuración, ejecute el script ./configure desde el directorio raíz del repositorio.

python ./configure.py

Este script le solicita la ubicación de las dependencias de TensorFlow y solicita opciones de configuración de compilación adicionales (indicadores del compilador, por ejemplo). A continuación se muestra una ejecución de muestra de python ./configure.py (su sesión puede diferir):

Construya e instale el paquete pip

El paquete pip se construye en dos pasos. Un comando bazel build crea un programa de "construcción de paquetes". Luego ejecuta el generador de paquetes para crear el paquete.

Construya el generador de paquetes

tensorflow:master repo se ha actualizado para compilar 2.x de forma predeterminada. Instale Bazel y use bazel build para crear el generador de paquetes TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

solo CPU

Utilice bazel para crear el generador de paquetes TensorFlow con soporte solo para CPU:

Construir con MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Construir con CLANG

Utilice --config= win_clang para compilar TenorFlow con el compilador CLANG:

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

Soporte de GPU

Para crear el generador de paquetes TensorFlow con soporte para GPU:

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

Comandos para limpiar el caché de Bazel para resolver errores debido a datos almacenados en caché no válidos o desactualizados, bazel clean con el indicador --expunge elimina archivos permanentemente

bazel clean 
bazel clean --expunge  

Opciones de compilación de Bazel

Utilice esta opción al compilar para evitar problemas con la creación del paquete: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Consulte la referencia de la línea de comandos de Bazel para conocer las opciones de compilación .

Construir TensorFlow desde el código fuente puede consumir mucha RAM. Si su sistema tiene limitaciones de memoria, limite el uso de RAM de Bazel con: --local_ram_resources=2048 .

Si compila con soporte para GPU, agregue --copt=-nvcc_options=disable-warnings para suprimir los mensajes de advertencia de nvcc.

Construye el paquete

Para crear un paquete pip, debe especificar el indicador --repo_env=WHEEL_NAME. Dependiendo del nombre proporcionado, se creará el paquete. Por ejemplo:

Para construir el paquete de CPU tensorflow:

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

Para crear un paquete nocturno, configure tf_nightly en lugar de tensorflow , por ejemplo, para crear un paquete nocturno de CPU:

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

Como resultado, la rueda generada se ubicará en

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

Instalar el paquete

El nombre del archivo .whl generado depende de la versión de TensorFlow y de su plataforma. Utilice pip install para instalar el paquete, por ejemplo:

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

Construir usando el shell MSYS

TensorFlow también se puede construir usando el shell MSYS. Realice los cambios que se enumeran a continuación y luego siga las instrucciones anteriores para la línea de comando nativa de Windows ( cmd.exe ).

Deshabilitar la conversión de ruta MSYS

MSYS convierte automáticamente argumentos que parecen rutas de Unix a rutas de Windows, y esto no funciona con bazel . (La etiqueta //path/to:bin se considera una ruta absoluta de Unix ya que comienza con una barra diagonal).

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Establece tu RUTA

Agregue los directorios de instalación de Bazel y Python a su variable ambiental $PATH . Si Bazel está instalado en C:\tools\bazel.exe y Python en C:\Python\python.exe , configure su PATH con:

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

Para compatibilidad con GPU, agregue los directorios bin CUDA y cuDNN a su $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"

Configuraciones de compilación probadas

UPC

Versión Versión de Python Compilador herramientas de construcción
tensorflow-2.18.0 3.9-3.12 Sonido metálico 17.0.6 Bazel 6.5.0
tensorflow-2.17.0 3.9-3.12 Sonido metálico 17.0.6 Bazel 6.5.0
tensorflow-2.16.1 3.9-3.12 Sonido metálico 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 Actualización 3 de MSVC 2015 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3.5-3.6 Actualización 3 de MSVC 2015 Bazel 0.15.0
tensorflow-1.11.0 3.5-3.6 Actualización 3 de MSVC 2015 Bazel 0.15.0
tensorflow-1.10.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.9.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.8.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.7.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.6.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.5.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.4.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.3.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.2.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.1.0 3.5 Actualización 3 de MSVC 2015 cmake v3.6.3
tensorflow-1.0.0 3.5 Actualización 3 de MSVC 2015 cmake v3.6.3

GPU

Versión Versión de Python Compilador herramientas de construcción 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 Actualización 3 de MSVC 2015 Bazel 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 Actualización 3 de MSVC 2015 Bazel 0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3.5-3.6 Actualización 3 de MSVC 2015 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 Actualización 3 de MSVC 2015 cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 Actualización 3 de MSVC 2015 cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 Actualización 3 de MSVC 2015 cmake v3.6.3 5.1 8