Construir desde fuente en Windows

Cree un paquete pip de TensorFlow desde la 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.

Instalar Python y las dependencias del paquete TensorFlow

Instale una versión de Python 3.9+ de 64 bits para Windows . Seleccione pip como función opcional y agréguela a la variable de entorno %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 que se usa 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 compilar TensorFlow. Si MSYS2 está instalado en C:\msys64 , agregue C:\msys64\usr\bin a la variable de entorno %PATH% . Luego, con cmd.exe , ejecute:

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

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

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

  1. Vaya a las descargas de Visual Studio ,
  2. Seleccionar herramientas para Visual Studio u otras herramientas, marcos y redistribuibles ,
  3. Descargar e instalar:
    • 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:/Archivos de programa/LLVM, por ejemplo, LLVM-17.0.6-win64.exe

Instalar compatibilidad con GPU (opcional)

Consulta la guía de compatibilidad de 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 predeterminado es la rama de desarrollo master . También puedes 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 de paquetes: (Si los siguientes comandos se configuraron durante la instalación de los paquetes, ignórelos). Ejecute set para comprobar si todas las rutas se configuraron correctamente. Ejecute echo %Environmental Variable% , por ejemplo, echo %BAZEL_VC% ​​para comprobar la ruta configurada para una variable de entorno específica.

Problema de configuración de 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: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)

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 permiten ajustar la configuración común.

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

python ./configure.py

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

Construya e instale el paquete pip

El paquete pip se compila en dos pasos. El comando " bazel build crea un programa "builder". A continuación, se ejecuta el programa para crear el paquete.

Construir el paquete-builder

El repositorio tensorflow:master se ha actualizado a la compilación 2.x por defecto. Instale Bazel y use bazel build para crear el generador de paquetes de 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
Construye 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

Compatibilidad con 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 en caché no válidos u obsoletos, Bazel Clean con el indicador --expunge elimina los archivos de forma permanente

bazel clean 
bazel clean --expunge  

Opciones de compilación de Bazel

Utilice esta opción al compilar para evitar problemas con la creación de paquetes: 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 .

Desarrollar 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 de GPU, agregue --copt=-nvcc_options=disable-warnings para suprimir los mensajes de advertencia de nvcc.

Construir el paquete

Para crear un paquete pip, debe especificar el indicador --repo_env=WHEEL_NAME. El paquete se creará según el nombre proporcionado. Por ejemplo:

Para crear el paquete de CPU de 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 la plataforma. Use 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 compilar con el shell MSYS. Realice los cambios que se indican a continuación y luego siga las instrucciones anteriores para la línea de comandos nativa de Windows ( cmd.exe ).

Deshabilitar la conversión de ruta MSYS

MSYS convierte automáticamente los argumentos que parecen rutas de Unix a rutas de Windows, lo cual no funciona con bazel . (La etiqueta //path/to:bin se considera una ruta absoluta de Unix, ya que empieza 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 la variable de entorno $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 de 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.20.0 3.9-3.13 Sonido metálico 18.1.4 Bazel 7.4.1
tensorflow-2.19.0 3.9-3.12 Sonido metálico 18.1.4 Bazel 6.5.0
tensorflow-2.18.0 3.9-3.12 Sonido 17.0.6 Bazel 6.5.0
tensorflow-2.17.0 3.9-3.12 Sonido 17.0.6 Bazel 6.5.0
tensorflow-2.16.1 3.9-3.12 Sonido 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