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

Crea un pacchetto pip TensorFlow dall'origine e installalo su Windows.

Configurazione per Windows

Installa i seguenti strumenti di compilazione per configurare il tuo ambiente di sviluppo Windows.

Installa Python e le dipendenze del pacchetto TensorFlow

Installa una versione Python 3.9+ a 64 bit per Windows . Seleziona pip come funzionalità opzionale e aggiungilo alla variabile ambientale %PATH% .

Installa le dipendenze del pacchetto pip 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 sotto REQUIRED_PACKAGES .

Installa Bazel

Installa Bazel , lo strumento di compilazione utilizzato per compilare TensorFlow. Per la versione Bazel, vedere le configurazioni di build testate per Windows. Configura Bazel per compilare C++ .

Aggiungi la posizione dell'eseguibile Bazel alla variabile di ambiente %PATH% .

Installa MSYS2

Installa MSYS2 per gli strumenti bin necessari per creare TensorFlow. Se MSYS2 è installato su C:\msys64 , aggiungi C:\msys64\usr\bin alla variabile di ambiente %PATH% . Quindi, utilizzando cmd.exe , esegui:

pacman -Syu (requires a console restart)
pacman -S git patch unzip
pacman -S git patch unzip rsync

Installa gli strumenti di creazione di Visual C++ 2022

Installa gli strumenti di compilazione di Visual C++ 2022 . Viene fornito con 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:
    • Crea strumenti per Visual Studio 2022
    • Ridistribuibili di Microsoft Visual C++ per Visual Studio 2022

Installa LLVM

  1. Vai ai download di 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 (opzionale)

Consulta la guida al supporto della GPU di Windows per installare i driver e il software aggiuntivo necessari per eseguire TensorFlow su una GPU.

Scarica il codice sorgente di TensorFlow

Utilizza Git per clonare il repository TensorFlow ( git è installato con MSYS2):

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

Per impostazione predefinita il repository è il ramo di sviluppo master . Puoi anche controllare un ramo di rilascio per creare:

git checkout branch_name  # r1.9, r1.10, etc.

Facoltativo: impostazione della variabile ambientale

Esegui 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, ignorali). Esegui set per verificare se tutti i percorsi sono stati impostati correttamente, esegui echo %Environmental Variable% ad esempio, echo %BAZEL_VC% per verificare il percorso impostato per una variabile ambientale specifica

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: configurare la build

Le build di TensorFlow sono configurate dal file .bazelrc nella directory root del repository. Gli script ./configure o ./configure.py possono essere utilizzati per regolare le impostazioni comuni.

Se è necessario modificare la configurazione, eseguire lo script ./configure dalla directory root del repository.

python ./configure.py

Questo script richiede la posizione delle dipendenze di TensorFlow e richiede ulteriori opzioni di configurazione della build (flag del compilatore, ad esempio). Di seguito viene mostrato un esempio di esecuzione di python ./configure.py (la sessione potrebbe differire):

Compila e installa il pacchetto pip

Il pacchetto pip viene creato in due passaggi. Un comando bazel build crea un programma di "generazione di pacchetti". Quindi esegui il generatore di pacchetti per creare il pacchetto.

Costruisci il generatore di pacchetti

tensorflow:master repo è stato aggiornato alla build 2.x per impostazione predefinita. Installa Bazel e utilizza bazel build per creare il generatore di pacchetti TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

Solo CPU

Utilizza 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

Utilizza --config= win_clang per creare 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 costruzione Bazel

Utilizza questa opzione durante la creazione per evitare problemi con la creazione del pacchetto: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Consulta il riferimento alla riga di comando di Bazel per le opzioni di creazione .

La creazione di TensorFlow dal sorgente può utilizzare molta RAM. Se il tuo sistema ha limiti di memoria, limita l'utilizzo della RAM di Bazel con: --local_ram_resources=2048 .

Se si compila con il supporto GPU, aggiungere --copt=-nvcc_options=disable-warnings per eliminare i messaggi di avviso nvcc.

Costruisci il pacchetto

Per creare un pacchetto pip, è necessario specificare il flag --repo_env=WHEEL_NAME. A seconda del nome fornito, verrà creato il pacchetto. Per 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, imposta tf_nightly invece di tensorflow , ad esempio per creare un pacchetto notturno della CPU:

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu

Di conseguenza, la ruota generata verrà 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 tua piattaforma. Utilizzare pip install per installare il pacchetto, ad esempio:

pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl

Costruisci utilizzando la shell MSYS

TensorFlow può anche essere creato 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 assomigliano a 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 ambientale $PATH . Se Bazel è installato su C:\tools\bazel.exe e Python su 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 pitone Compilatore Costruisci strumenti
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 pitone Compilatore Costruisci strumenti 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