Compile um pacote pip do TensorFlow a partir do código-fonte e instale-o no Windows.
Configuração para Windows
Instale as seguintes ferramentas de compilação para configurar seu ambiente de desenvolvimento Windows.
Instale o Python e as dependências do pacote TensorFlow.
Instale o Python 3.9 ou superior de 64 bits para Windows . Selecione o pip como um recurso opcional e adicione-o à sua variável de ambiente %PATH% .
Instale as dependências do pacote TensorFlow via pip :
pip3 install -U pippip3 install -U six numpy wheel packagingpip3 install -U keras_preprocessing --no-deps
As dependências estão listadas no arquivo setup.py em REQUIRED_PACKAGES .
Instalar Bazel
Instale o Bazel , a ferramenta de compilação usada para compilar o TensorFlow. Para obter informações sobre a versão do Bazel, consulte as configurações de compilação testadas para Windows. Configure o Bazel para compilar em C++ .
Adicione o caminho do executável do Bazel à sua variável de ambiente %PATH% .
Instale o MSYS2
Instale o MSYS2 para obter as ferramentas binárias necessárias para compilar o TensorFlow. Se o MSYS2 estiver instalado em C:\msys64 , adicione C:\msys64\usr\bin à sua variável de ambiente %PATH% . Em seguida, usando cmd.exe , execute:
pacman -Syu (requires a console restart) pacman -S git patch unzip pacman -S git patch unzip rsync
Instalar as Ferramentas de Compilação do Visual C++ 2022
Instale as ferramentas de compilação do Visual C++ 2022. Elas vêm com o Visual Studio Community 2022 , mas podem ser instaladas separadamente:
- Acesse a página de downloads do Visual Studio .
- Selecione Ferramentas para Visual Studio ou Outras Ferramentas, Frameworks e Redistribuíveis .
- Baixe e instale:
- Ferramentas de compilação para Visual Studio 2022
- Pacotes redistribuíveis do Microsoft Visual C++ para Visual Studio 2022
Instale o LLVM
- Acesse a página de downloads do LLVM .
- Baixe e instale o LLVM compatível com Windows em C:/Program Files/LLVM, por exemplo, LLVM-17.0.6-win64.exe.
Instalar suporte para GPU (opcional)
Consulte o guia de suporte a GPUs do Windows para instalar os drivers e o software adicional necessário para executar o TensorFlow em uma GPU.
Baixe o código-fonte do TensorFlow.
Utilize o Git para clonar o repositório do TensorFlow ( git já está instalado com o MSYS2):
git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow
O repositório usa por padrão a branch de desenvolvimento master . Você também pode selecionar uma branch de lançamento para compilar:
git checkout branch_name # r1.9, r1.10, etc.
Opcional: Configuração de variáveis de ambiente
Execute os seguintes comandos antes de executar o comando de compilação para evitar problemas com a criação do pacote: (Se os comandos abaixo foram configurados durante a instalação dos pacotes, ignore-os). Execute set para verificar se todos os caminhos foram configurados corretamente e execute echo %Environmental Variable% , por exemplo, echo %BAZEL_VC% para verificar o caminho configurado para uma variável de ambiente específica.
Problema de configuração do caminho do 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 configuração do caminho 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: Configure a compilação
As compilações do TensorFlow são configuradas pelo arquivo .bazelrc no diretório raiz do repositório. Os scripts ./configure ou ./configure.py podem ser usados para ajustar configurações comuns.
Se precisar alterar a configuração, execute o script ./configure a partir do diretório raiz do repositório.
python ./configure.py
Este script solicita a localização das dependências do TensorFlow e pede opções adicionais de configuração de compilação (como flags do compilador). A seguir, um exemplo de execução do python ./configure.py (sua sessão pode ser diferente):
Compile e instale o pacote pip.
O pacote pip é construído em duas etapas. Um comando bazel build cria um programa "package-builder". Em seguida, você executa o package-builder para criar o pacote.
Construa o construtor de pacotes
O repositório tensorflow:master foi atualizado para compilar a versão 2.x por padrão. Instale o Bazel e use bazel build para criar o pacote do TensorFlow.
bazel build //tensorflow/tools/pip_package:wheel
somente CPU
Use bazel para criar o pacote TensorFlow com suporte apenas para CPU:
Compile com MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Construa com CLANG
Use --config= win_clang para compilar o TenorFlow com o 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
suporte a GPU
Para criar o construtor de pacotes do TensorFlow com suporte a GPU:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Comandos para limpar o cache do Bazel e resolver erros causados por dados em cache inválidos ou desatualizados. O comando `bazel clean` com a flag `--expunge` remove arquivos permanentemente.
bazel clean bazel clean --expunge
Opções de compilação do Bazel
Use esta opção ao compilar para evitar problemas com a criação do pacote: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Consulte a referência da linha de comando do Bazel para obter opções de compilação .
Compilar o TensorFlow a partir do código-fonte pode usar muita RAM. Se o seu sistema tiver memória limitada, limite o uso de RAM do Bazel com: --local_ram_resources=2048 .
Se estiver compilando com suporte a GPU, adicione --copt=-nvcc_options=disable-warnings para suprimir as mensagens de aviso do nvcc.
Construa o pacote
Para criar um pacote pip, você precisa especificar a flag `--repo_env=WHEEL_NAME`. Dependendo do nome fornecido, o pacote será criado. Por exemplo:
Para compilar o pacote TensorFlow para CPU:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Para criar o pacote nightly, defina tf_nightly em vez de tensorflow , por exemplo, para criar o pacote nightly para CPU:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
Como resultado, a roda gerada estará localizada em
bazel-bin/tensorflow/tools/pip_package/wheel_house/
Instale o pacote
O nome do arquivo .whl gerado depende da versão do TensorFlow e da sua plataforma. Use pip install para instalar o pacote, por exemplo:
pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl
Compile usando o shell MSYS
O TensorFlow também pode ser compilado usando o shell MSYS. Faça as alterações listadas abaixo e, em seguida, siga as instruções anteriores para a linha de comando nativa do Windows ( cmd.exe ).
Desativar conversão de caminho MSYS
O MSYS converte automaticamente argumentos que se parecem com caminhos Unix em caminhos do Windows, e isso não funciona com bazel . (O rótulo //path/to:bin é considerado um caminho absoluto Unix, pois começa com uma barra.)
export MSYS_NO_PATHCONV=1export MSYS2_ARG_CONV_EXCL="*"
Defina seu CAMINHO
Adicione os diretórios de instalação do Bazel e do Python à sua variável de ambiente $PATH . Se o Bazel estiver instalado em C:\tools\bazel.exe e o Python em C:\Python\python.exe , defina seu PATH com:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"export PATH="/c/path/to/Python:$PATH"
Para suporte a GPU, adicione os diretórios binários do CUDA e do cuDNN ao seu $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"
Configurações de compilação testadas
CPU
| Versão | Versão em Python | Compilador | Ferramentas de construção |
|---|---|---|---|
| tensorflow-2.21.0 | 3.10-3.13 | CLANG 18.1.4 | Bazel 7.4.1 |
| tensorflow-2.20.0 | 3,9-3,13 | CLANG 18.1.4 | Bazel 7.4.1 |
| tensorflow-2.19.0 | 3,9-3,12 | CLANG 18.1.4 | Bazel 6.5.0 |
| tensorflow-2.18.0 | 3,9-3,12 | CLANG 17.0.6 | Bazel 6.5.0 |
| tensorflow-2.17.0 | 3,9-3,12 | CLANG 17.0.6 | Bazel 6.5.0 |
| tensorflow-2.16.1 | 3,9-3,12 | CLANG 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 | Atualização 3 do MSVC 2015 | Bazel 0.19.0-0.21.0 |
| tensorflow-1.12.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | Bazel 0.15.0 |
| tensorflow-1.11.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | Bazel 0.15.0 |
| tensorflow-1.10.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.9.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.8.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.7.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.6.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.5.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.4.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.3.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.2.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.1.0 | 3,5 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
| tensorflow-1.0.0 | 3,5 | Atualização 3 do MSVC 2015 | CMake v3.6.3 |
GPU
| Versão | Versão em Python | Compilador | Ferramentas de construção | 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 | Atualização 3 do MSVC 2015 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
| tensorflow_gpu-1.12.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | Bazel 0.15.0 | 7.2 | 9.0 |
| tensorflow_gpu-1.11.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | Bazel 0.15.0 | 7 | 9 |
| tensorflow_gpu-1.10.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.9.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.8.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.7.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.6.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.5.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 7 | 9 |
| tensorflow_gpu-1.4.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.3.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 6 | 8 |
| tensorflow_gpu-1.2.0 | 3,5-3,6 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.1.0 | 3,5 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 5.1 | 8 |
| tensorflow_gpu-1.0.0 | 3,5 | Atualização 3 do MSVC 2015 | CMake v3.6.3 | 5.1 | 8 |