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 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 -S git patch unzip

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

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

  1. Vaya a las descargas de Visual Studio ,
  2. Seleccione Redistribuibles y Herramientas de compilación ,
  3. Descargar e instalar:
    • Microsoft Visual C++ 2019 Redistribuible
    • Herramientas de compilación de Microsoft 2019

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 # [e.g. (C:/Python310)]
set PATH=path/to/python/Scripts # [e.g. (C:/Python310/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 tensorflow: problema n.º 54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files(x86)/Microsoft Visual Studio/2019/BuildTools 
set BAZEL_VC=C:/Program Files(x86)/Microsoft Visual Studio/2019/BuildTools/VC 

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. Los comandos bazel build crean 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:build_pip_package

solo CPU

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

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

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 construcció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

El comando bazel build crea un ejecutable llamado build_pip_package : este es el programa que compila el paquete pip . Por ejemplo, lo siguiente crea un paquete .whl en el directorio C:/tmp/tensorflow_pkg :

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

Aunque es posible crear configuraciones CUDA y no CUDA en el mismo árbol de origen, recomendamos ejecutar bazel clean al cambiar entre estas dos configuraciones en el mismo árbol de origen.

Instalar el paquete

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

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-tags.whl

e.g. pip3 install C:/tmp/tensorflow_pkg/tensorflow-2.12.0-cp310-cp310-win_amd64.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.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