Compila dal codice sorgente su Windows, Compila dal codice sorgente su Windows

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:

  1. Vai ai download di Visual Studio ,
  2. Seleziona Strumenti per Visual Studio o Altri strumenti, Framework e ridistribuibili ,
  3. Scarica e installa:
    • Strumenti di compilazione per Visual Studio 2022
    • Microsoft Visual C++ Redistributables per Visual Studio 2022

Installa LLVM

  1. Vai ai download LLVM ,
  2. 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 separator
export 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