Google is committed to advancing racial equity for Black communities. See how.

Compila con el código fuente en Windows

Compila un paquete pip de TensorFlow con el código fuente. Luego, instálalo en Windows.

Configuración para Windows

Instala las siguientes herramientas de compilación para configurar tu entorno de desarrollo en Windows.

Instala Python y las dependencias del paquete de TensorFlow

Instala una actualización de Python 3.5.x o Python 3.6.x de 64 bits para Windows. Selecciona pip como una función opcional y agrégala a tu variable de entorno %PATH%.

Instala las dependencias del paquete pip de TensorFlow:

pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps

Las dependencias se muestran en el archivo setup.py, en REQUIRED_PACKAGES.

Instala Bazel

Instala Bazel, la herramienta de compilación que se usa para compilar TensorFlow. Para la versión de Bazel, consulta las configuraciones de compilación probadas para Windows. Configura Bazel para compilar C++.

Agrega la ubicación del archivo ejecutable de Bazel a tu variable de entorno %PATH%.

Instala MSYS2

Instala MSYS2 y obtén las herramientas bin necesarias para compilar TensorFlow. Si MSYS2 está instalado en C:\msys64, agrega C:\msys64\usr\bin a tu variable de entorno %PATH%. Luego, con cmd.exe, ejecuta lo siguiente:

pacman -S git patch unzip

Instala las herramientas de compilación de Visual C++ 2019

Instala las herramientas de compilación de Visual C++ 2019. Están incluidas en Visual Studio 2019, pero se pueden instalar por separado:

  1. Ve a las descargas de Visual Studio,
  2. Selecciona Paquetes redistribuibles y herramientas de compilación.
  3. Descarga e instala:
    • Paquete redistribuible de Microsoft Visual C++ 2019
    • Herramientas de compilación de Microsoft 2019

Instala la compatibilidad con GPU (opcional)

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

Descarga el código fuente de TensorFlow

Usa Git para clonar el repositorio de TensorFlow (git está instalado con MSYS2):

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

La configuración predeterminada del repositorio es la rama de desarrollo master. También puedes adquirir una rama de la actualización para compilar:

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

Configura la compilación

Para configurar la compilación de tu sistema, ejecuta lo siguiente en la raíz del árbol de fuentes de TensorFlow:

python ./configure.py

Esta secuencia de comandos te solicita la ubicación de las dependencias de TensorFlow y requiere opciones de configuración de compilación adicionales (por ejemplo, marcas del compilador). A continuación, se muestra un ejemplo de ejecución de python ./configure.py (tu sesión puede ser diferente):

Opciones de configuración

Para conseguir la compatibilidad con GPU, especifica las versiones de CUDA y cuDNN. Si tu sistema tiene varias versiones de CUDA o cuDNN, establece la versión de forma explícita en lugar de mantener la configuración predeterminada. ./configure.py crea vínculos simbólicos a las bibliotecas CUDA de tu sistema; por lo tanto, si actualizas las rutas de tu biblioteca CUDA, este paso de la configuración debe ejecutarse nuevamente antes de la compilación.

Compila el paquete pip

TensorFlow 2.x

Se actualizó el repositorio tensorflow:master a la compilación 2.x de forma predeterminada. Instala Bazel y usa bazel build para crear el paquete de TensorFlow.

bazel build //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

Para compilar la versión 1.x de TensorFlow desde la instancia principal, usa bazel build --config=v1 a fin de crear un paquete de TensorFlow 1.x.

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

Solo para CPU

Usa bazel para que el compilador de paquetes de TensorFlow sea compatible solo con CPU:

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

Compatibilidad con GPU

Para que el compilador de paquetes de TensorFlow tenga compatibilidad con GPU:

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

Opciones de compilación de Bazel

Cuando compiles, usa esta opción para evitar problemas con la creación del paquete: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Consulta la referencia de líneas de comandos de Bazel para ver las opciones de compilación.

Es posible que la compilación de TensorFlow con el código fuente consuma mucha memoria RAM. Si tu sistema tiene restricciones de memoria, limita el uso de la memoria RAM de Bazel con: --local_ram_resources=2048.

Si compilas con compatibilidad para GPU, agrega --copt=-nvcc_options=disable-warnings para suprimir los mensajes de advertencia nvcc.

Compila el paquete

El comando bazel build crea un archivo ejecutable llamado build_pip_package, que es el programa que compila el paquete pip. Por ejemplo, el siguiente comando compila 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 compilar configuraciones CUDA y no CUDA en el mismo árbol de fuentes, recomendamos ejecutar bazel clean cuando se alterna entre estas dos configuraciones en el mismo árbol de fuentes.

Instala el paquete

El nombre del archivo .whl que se generó depende de la versión de TensorFlow y de tu plataforma. Para instalar el paquete, usa pip3 install, por ejemplo:

pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl

Compila con la shell de MSYS

TensorFlow también se puede compilar con la shell de MSYS. Realiza los cambios indicados a continuación y, luego, sigue las instrucciones anteriores para la línea de comandos nativa de Windows (cmd.exe).

Inhabilita la conversión de la ruta de acceso de MSYS

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

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Establece tu ruta de acceso

Agrega los directorios de instalación de Bazel y Python a tu variable de entorno $PATH. Si Bazel está instalado en C:\tools\bazel.exe y Python en C:\Python36\python.exe, configura tu PATH de la siguiente manera:

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

Para obtener compatibilidad con GPU, agrega los directorios bin de CUDA y cuDNN a tu $PATH:

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

Configuraciones de compilación probadas

CPU

VersiónVersión de PythonCompiladorHerramientas de compilación
tensorflow-2.0.03.5 a 3.7MSVC 2017Bazel 0.26.1
tensorflow-1.14.03.5 a 3.7MSVC 2017Bazel 0.24.1 a 0.25.2
tensorflow-1.13.03.5 a 3.7Actualización 3 de MSVC 2015Bazel 0.19.0 a 0.21.0
tensorflow-1.12.03.5 a 3.6Actualización 3 de MSVC 2015Bazel 0.15.0
tensorflow-1.11.03.5 a 3.6Actualización 3 de MSVC 2015Bazel 0.15.0
tensorflow-1.10.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.9.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.8.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.7.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.6.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.5.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.4.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.3.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.2.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.1.03.5Actualización 3 de MSVC 2015Cmake v3.6.3
tensorflow-1.0.03.5Actualización 3 de MSVC 2015Cmake v3.6.3

GPU

VersiónVersión de PythonCompiladorHerramientas de compilacióncuDNNCUDA
tensorflow_gpu-2.0.03.5 a 3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.14.03.5 a 3.7MSVC 2017Bazel 0.24.1 a 0.25.27.410
tensorflow_gpu-1.13.03.5 a 3.7Actualización 3 de MSVC 2015Bazel 0.19.0 a 0.21.07.410
tensorflow_gpu-1.12.03.5 a 3.6Actualización 3 de MSVC 2015Bazel 0.15.079
tensorflow_gpu-1.11.03.5 a 3.6Actualización 3 de MSVC 2015Bazel 0.15.079
tensorflow_gpu-1.10.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.9.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.8.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.7.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.6.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.5.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.379
tensorflow_gpu-1.4.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.368
tensorflow_gpu-1.3.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.368
tensorflow_gpu-1.2.03.5 a 3.6Actualización 3 de MSVC 2015Cmake v3.6.35.18
tensorflow_gpu-1.1.03.5Actualización 3 de MSVC 2015Cmake v3.6.35.18
tensorflow_gpu-1.0.03.5Actualización 3 de MSVC 2015Cmake v3.6.35.18