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:
- Vaya a las descargas de Visual Studio ,
- Seleccionar herramientas para Visual Studio u otras herramientas, marcos y redistribuibles ,
- Descargar e instalar:
- Herramientas de compilación para Visual Studio 2022
- Redistribuibles de Microsoft Visual C++ para Visual Studio 2022
Instalar LLVM
- Vaya a las descargas de LLVM ,
- 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 separatorexport 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 |