Crea un pacchetto pip TensorFlow dal codice sorgente e installalo su Windows.
Configurazione per Windows
Installa i seguenti strumenti di compilazione per configurare l'ambiente di sviluppo Windows.
Installa Python e le dipendenze del pacchetto TensorFlow
Installa una versione di Python 3.9+ a 64 bit per Windows . Seleziona pip come funzionalità facoltativa e aggiungila alla variabile d'ambiente %PATH%
.
Installa le dipendenze del pacchetto pip di TensorFlow:
pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps
Le dipendenze sono elencate nel file setup.py
in REQUIRED_PACKAGES
.
Installa Bazel
Installa Bazel , lo strumento di compilazione utilizzato per compilare TensorFlow. Per la versione di Bazel, consulta le configurazioni di compilazione testate per Windows. Configura Bazel per compilare C++ .
Aggiungi il percorso dell'eseguibile Bazel alla variabile d'ambiente %PATH%
.
Installa MSYS2
Installare MSYS2 per gli strumenti bin necessari per compilare TensorFlow. Se MSYS2 è installato in C:\msys64
, aggiungere C:\msys64\usr\bin
alla variabile d'ambiente %PATH%
. Quindi, utilizzando cmd.exe
, eseguire:
pacman -Syu (requires a console restart) pacman -S git patch unzip pacman -S git patch unzip rsync
Installa Visual C++ Build Tools 2022
Installa Visual C++ Build Tools 2022. È incluso in Visual Studio Community 2022, ma può essere installato separatamente:
- Vai ai download di Visual Studio ,
- Seleziona Strumenti per Visual Studio o Altri strumenti, Framework e ridistribuibili ,
- Scarica e installa:
- Strumenti di compilazione per Visual Studio 2022
- Microsoft Visual C++ Redistributables per Visual Studio 2022
Installa LLVM
- Vai ai download LLVM ,
- Scarica e installa LLVM compatibile con Windows in C:/Programmi/LLVM, ad esempio LLVM-17.0.6-win64.exe
Installa il supporto GPU (facoltativo)
Consultare la guida al supporto GPU di Windows per installare i driver e il software aggiuntivo necessari per eseguire TensorFlow su una GPU.
Scarica il codice sorgente di TensorFlow
Utilizzare Git per clonare il repository TensorFlow ( git
è installato con MSYS2):
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
Il repository è impostato di default sul ramo di sviluppo master
. Puoi anche effettuare il check-out di un ramo di rilascio per compilare:
git checkout branch_name # r1.9, r1.10, etc.
Facoltativo: impostazione delle variabili ambientali
Eseguire i seguenti comandi prima di eseguire il comando build per evitare problemi con la creazione del pacchetto: (Se i comandi seguenti sono stati impostati durante l'installazione dei pacchetti, ignorarli). Eseguire set
per verificare se tutti i percorsi sono stati impostati correttamente, eseguire echo %Environmental Variable%
ad esempio, echo %BAZEL_VC%
per verificare il percorso impostato per una specifica variabile ambientale
Problema di impostazione del percorso 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 di configurazione del percorso 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)
Facoltativo: configura la build
Le build di TensorFlow sono configurate dal file .bazelrc
nella directory principale del repository. Gli script ./configure
o ./configure.py
possono essere utilizzati per modificare le impostazioni comuni.
Se è necessario modificare la configurazione, eseguire lo script ./configure
dalla directory principale del repository.
python ./configure.py
Questo script richiede la posizione delle dipendenze di TensorFlow e ulteriori opzioni di configurazione della build (ad esempio, flag del compilatore). Di seguito è riportato un esempio di esecuzione di python ./configure.py
(la sessione potrebbe essere diversa):
Compila e installa il pacchetto pip
Il pacchetto pip viene creato in due fasi. Un comando bazel build
crea un programma "package-builder". Quindi si esegue il programma "package-builder" per creare il pacchetto.
Costruisci il package-builder
Il repository tensorflow:master è stato aggiornato di default alla build 2.x. Installa Bazel e usa bazel build
per creare il package builder di TensorFlow.
bazel build //tensorflow/tools/pip_package:wheel
Solo CPU
Utilizzare bazel
per creare il generatore di pacchetti TensorFlow con supporto solo per CPU:
Costruisci con MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Costruisci con CLANG
Utilizzare --config= win_clang
per compilare TenorFlow con il compilatore CLANG:
bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Supporto GPU
Per creare il generatore di pacchetti TensorFlow con supporto GPU:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Comandi per pulire la cache di Bazel per risolvere errori dovuti a dati memorizzati nella cache non validi o obsoleti, Bazel Clean con il flag --expunge rimuove i file in modo permanente
bazel clean bazel clean --expunge
Opzioni di build Bazel
Utilizzare questa opzione durante la compilazione per evitare problemi con la creazione del pacchetto: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
Per le opzioni di compilazione, vedere il riferimento alla riga di comando di Bazel.
Compilare TensorFlow dal codice sorgente può richiedere molta RAM. Se il sistema ha limitazioni di memoria, limita l'utilizzo della RAM di Bazel con: --local_ram_resources=2048
.
Se si esegue la compilazione con supporto GPU, aggiungere --copt=-nvcc_options=disable-warnings
per sopprimere i messaggi di avviso nvcc.
Costruisci il pacchetto
Per creare un pacchetto pip, è necessario specificare il flag --repo_env=WHEEL_NAME. Il pacchetto verrà creato in base al nome fornito. Ad esempio:
Per creare il pacchetto CPU tensorflow:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Per creare un pacchetto notturno, impostare tf_nightly
invece di tensorflow
, ad esempio per creare un pacchetto notturno CPU:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
Di conseguenza, la ruota generata sarà posizionata in
bazel-bin/tensorflow/tools/pip_package/wheel_house/
Installa il pacchetto
Il nome del file .whl
generato dipende dalla versione di TensorFlow e dalla piattaforma. Utilizza pip install
per installare il pacchetto, ad esempio:
pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl
Compilare utilizzando la shell MSYS
TensorFlow può essere compilato anche utilizzando la shell MSYS. Apportare le modifiche elencate di seguito, quindi seguire le istruzioni precedenti per la riga di comando nativa di Windows ( cmd.exe
).
Disabilita la conversione del percorso MSYS
MSYS converte automaticamente gli argomenti che sembrano percorsi Unix in percorsi Windows, e questo non funziona con bazel
. (L'etichetta //path/to:bin
è considerata un percorso assoluto Unix poiché inizia con una barra.)
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
Imposta il tuo PERCORSO
Aggiungi le directory di installazione di Bazel e Python alla variabile d'ambiente $PATH
. Se Bazel è installato in C:\tools\bazel.exe
e Python in C:\Python\python.exe
, imposta il PATH
con:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"
Per il supporto GPU, aggiungi le directory bin CUDA e cuDNN al tuo $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"
Configurazioni di build testate
processore
Versione | Versione Python | Compilatore | Strumenti di costruzione |
---|---|---|---|
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 | Aggiornamento 3 di MSVC 2015 | Bazel 0.19.0-0.21.0 |
tensorflow-1.12.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 |
GPU
Versione | Versione Python | Compilatore | Strumenti di costruzione | 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 | Aggiornamento 3 di MSVC 2015 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Bazel 0.15.0 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3,5-3,6 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | Aggiornamento 3 di MSVC 2015 | Cmake v3.6.3 | 5.1 | 8 |