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 la versión de Python 3.6.x de 64 bits para Windows.
Selecciona pip como 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:
- Ve a las descargas de Visual Studio.
- Selecciona Paquetes redistribuibles y herramientas de compilación.
- 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 a fin de 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 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 sea compatible 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 la línea 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 separatorexport 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/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
CPU
Versión | Versión de Python | Compilador | Herramientas de compilación |
---|---|---|---|
tensorflow-2.6.0 | 3.6 a 3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.5.0 | 3.6 a 3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.4.0 | 3.6 a 3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5 a 3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5 a 3.8 | MSVC 2019 | Bazel 2.0.0 |
tensorflow-2.1.0 | 3.5 a 3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
tensorflow-2.0.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.15.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.14.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.24.1 a 0.25.2 |
tensorflow-1.13.0 | 3.5 a 3.7 | Actualización 3 de MSVC 2015 | Bazel 0.19.0 a 0.21.0 |
tensorflow-1.12.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5 a 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 compilación | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.6.0 | 3.6 a 3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.5.0 | 3.6 a 3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.4.0 | 3.6 a 3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5 a 3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5 a 3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5 a 3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5 a 3.7 | MSVC 2017 | Bazel 0.24.1 a 0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5 a 3.7 | Actualización 3 de MSVC 2015 | Bazel 0.19.0 a 0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Bazel 0.15.0 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5 a 3.6 | Actualización 3 de MSVC 2015 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5 a 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 |