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:
- Vaya a las descargas de Visual Studio ,
- Seleccione Redistribuibles y Herramientas de compilación ,
- 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 separatorexport 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 |