Crie um pacote TensorFlow PIP a partir da fonte e instale-o no Windows.
Configuração para Windows
Instale as seguintes ferramentas de build para configurar seu ambiente para desenvolvedores do Windows.
Instalar o Python e as dependências de pacote do TensorFlow
Instale uma
versão Python 3.6.x de 64 bits para Windows.
Selecione PIP como um recurso opcional e adicione-o à variável
de ambiente %PATH%
.
Instale as dependências do pacote TensorFlow PIP:
pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps
As dependências são listadas no
arquivo setup.py
em REQUIRED_PACKAGES
.
Instalar o Bazel
Instale o Bazel, a ferramenta de build usada para compilar o TensorFlow. Para a versão do Bazel, consulte as configurações de compilação testadas para Windows. Configure o Bazel para compilar C++.
Adicione o local do executável Bazel à sua variável de ambiente %PATH%
.
Instalar MSYS2
Instale o MSYS2 para as ferramentas bin necessárias para
criar o TensorFlow. Se o MSYS2 estiver instalado em C:\msys64
, adicione
C:\msys64\usr\bin
à variável de ambiente %PATH%
. Em seguida, usando cmd.exe
,
execute:
pacman -S git patch unzip
Instalar Ferramentas de Build do Visual C++ 2019
Instale as ferramentas de build do Visual C++ 2019. Elas vêm com o Visual Studio 2019, mas podem ser instaladas separadamente:
- Acesse os downloads do Visual Studio.
- Selecione Redistribuíveis e ferramentas de build.
- Faça download e instale:
- Redistribuíveis do Microsoft Visual C++ 2019
- Ferramentas de Build Microsoft 2019
Instalar o suporte a GPUs (opcional)
Consulte o guia de suporte a GPUs do Windows para instalar os drivers e softwares adicionais necessários para executar o TensorFlow em uma GPU.
Fazer o download do código-fonte do TensorFlow
Use Git para clonar o
repositório do TensorFlow
(git
está instalado com MSYS2):
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
O repositório tem como padrão a ramificação de desenvolvimento master
. Você também pode conferir um
branch de lançamento
para criar:
git checkout branch_name # r1.9, r1.10, etc.
Configurar a criação
Configure a criação do sistema executando o seguinte comando na raiz da árvore de origem do TensorFlow:
python ./configure.py
Esse script solicita a localização das dependências do TensorFlow e solicita
outras opções de configuração de compilação (sinalizações do compilador, por exemplo). Veja
a seguir um exemplo de python ./configure.py
(sua sessão pode
ser diferente):
Opções de configuração
Para suporte a GPUs, especifique as versões da CUDA e da cuDNN. Se o
sistema tiver várias versões da CUDA ou da cuDNN instaladas, defina explicitamente a
versão em vez de confiar no padrão. ./configure.py
cria links simbólicos
para as bibliotecas CUDA do sistema. Portanto, se você atualizar os caminhos da biblioteca CUDA,
essa etapa de configuração precisará ser executada novamente antes da criação.
Criar o pacote PIP
TensorFlow 2.x
O repositório tensorflow:master foi atualizado para o build 2.x por padrão.
Instale o Bazel e use
bazel build
para criar o pacote do TensorFlow.
bazel build //tensorflow/tools/pip_package:build_pip_package
TensorFlow 1.x
Para criar a versão 1.x do TensorFlow a partir do mestre, use
bazel build --config=v1
para criar um pacote do TensorFlow 1.x.
bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package
Somente CPU
Use bazel
para criar o construtor de pacotes TensorFlow com suporte apenas para CPU:
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
Suporte a GPUs
Para criar o construtor de pacotes TensorFlow com suporte a GPUs:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Opções de criação do Bazel
Use esta opção ao criar para evitar problemas com a criação do pacote: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Veja a referência de linha de comando do Bazel para opções de build.
Criar o TensorFlow a partir da fonte pode usar muita memória RAM. Se o sistema tem
restrições de memória, limite o uso de RAM do Bazel com: --local_ram_resources=2048
.
Se a criação for compatível com GPU, adicione
--copt=-nvcc_options=disable-warnings
para suprimir mensagens de aviso nvcc.
Criar o pacote
O comando bazel build
cria um executável chamado build_pip_package
. Esse
é o programa que cria o pacote pip
. Por exemplo, o seguinte cria
um pacote .whl
no diretório C:/tmp/tensorflow_pkg
:
bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg
Embora seja possível criar configurações CUDA e não CUDA na
mesma árvore de origem, recomendamos executar bazel clean
ao alternar entre
essas duas configurações na mesma árvore de origem.
Instale o pacote
O nome do arquivo .whl
gerado depende da versão do TensorFlow e
da sua plataforma. Use pip3 install
para instalar o pacote, por exemplo:
pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl
Criar usando o shell MSYS
O TensorFlow também pode ser criado usando o shell MSYS. Faça as alterações listadas
abaixo e 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 parecem caminhos do Unix em caminhos
do Windows, e isso não funciona com bazel
. O rótulo //path/to:bin
é
considerado um caminho absoluto do Unix, já que começa com uma barra.
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
Definir seu PATH
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:\Python36\python.exe
, defina seu PATH
com:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/Python36:$PATH"
Para suporte a GPUs, adicione os diretórios bin do CUDA e do cuDNN ao $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 da compilação testadas
CPU
Versão | Versão do Python | Compilador | Ferramentas de criação |
---|---|---|---|
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 | 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 do Python | Compilador | Ferramentas de criação | cuDNN | CUDA |
---|---|---|---|---|---|
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 |