[Aggiornamento 1] Come costruire e installare GPU / CPU TensorFlow per Windows dal codice sorgente usando bazel e Python 3.6

Questo è un aggiornamento per la mia storia precedente. Cosa c'è di nuovo qui:

  • TensorFlow v1.11
  • CUDA v10.0
  • cuDNN v7.3

C'è una guida sul sito ufficiale. Non è molto completo ma utile a volte.

Sommario

  1. Installa Git per Windows
  2. Installa Bazel
  3. Installa MSYS2 x64 e strumenti da riga di comando
  4. Installa Visual Studio 2017 Build Tools, inclusi Visual Studio 2015 Build Tools
  5. Installa Python 3.6 a 64 bit
  6. Installa NVIDIA CUDA 10.0 e cuDNN 7.3 (per accelerazione GPU)
  7. Configura l'ambiente di compilazione
  8. Clonare il codice sorgente TensorFlow v1.11 e applicare la patch obbligatoria
  9. Configura i parametri di compilazione
  10. Costruisci TensorFlow da fonti
  11. Crea il file della ruota TensorFlow per Python 3.6
  12. Installa il file della ruota TensorFlow per Python 3.6 e controlla il risultato

Passaggio 1: installa Git per Windows

Scarica e installa Git per Windows. Lo prendo qui. Assicurarsi che il percorso di git.exe sia aggiunto alla variabile di ambiente% PATH%. Installo Git su

C: \ Bin \ Git

cartella per questo tutorial.

Passaggio 2: installare MSYS2 x64 e gli strumenti da riga di comando

Scarica e installa la distribuzione a 64 bit qui. Bazel usa grep, patch, decomprime altre porte degli strumenti Unix per costruire fonti. Puoi provare a trovare binari autonomi per ognuno di essi, ma preferisco usare il bundle MSYS2. Lo installo su

C: \ msys64 Bin \

cartella per questo tutorial. Devi aggiungere una cartella con gli strumenti alla variabile d'ambiente% PATH%. È "C: \ Bin \ msys64 \ usr \ bin" nel mio caso.

Avviare il collegamento "MSYS2 MinGW 64-bit" dal menu Start. Eseguire il comando seguente per aggiornare (riavviare "MSYS2 MinGW 64-bit" se richiesto):

pacman -Syu

Quindi eseguire:

pacman -Su

Gli strumenti di installazione sono necessari per la compilazione:

decomprimere patch pacman -S

Chiudere la shell "MSYS2 MinGW 64-bit" con il comando "exit". Non ne abbiamo più bisogno.

Passaggio 3: installare gli strumenti di compilazione di Visual Studio 2017, inclusi gli strumenti di compilazione di Visual Studio 2015

Dobbiamo installare "VC ++ 2015.3 v14.00 (v140) set di strumenti per desktop" da Visual Studio 2017 Build Tools per creare TensorFlow v1.11:

Passaggio 4: installare Bazel

Scarica l'ultima Basilea qui. Cerca il file bazel- -windows-x86_64.exe. Ho testato questo tutorial con bazel 0.17.2. Rinomina il file binario in bazel.exe e spostalo in una directory su% PATH%, in modo da poter eseguire Bazel digitando bazel in qualsiasi directory. Vedi i dettagli dell'installazione di Bazel per Windows x64 in caso di problemi.

Aggiungi la variabile d'ambiente globale BAZEL_SH per la posizione bash. Il mio percorso è

C: \ Bin \ msys64 \ usr \ bin \ bash.exe

Aggiungi la variabile d'ambiente globale BAZEL_VC per il set di strumenti "VC ++ 2015.3 v14.00 (v140) per desktop":

C: \ Programmi (x86) \ Microsoft Visual Studio 14.0 \ VC

Passaggio 5: installare Python 3.6 a 64 bit

TensorFlow non supporta Python 3.7, quindi devi installare la versione 3.6.
Sembra che TensorFlow v1.11 non supporti più Anaconda / Miniconda per la compilazione - Ottengo uno strano errore. Ecco perché uso l'ambiente virtuale Python per la compilazione.

Python 3.6 è disponibile per il download qui. Installalo e aggiungi il percorso a python.exe alla variabile% PATH%.

Passaggio 6: installare NVIDIA CUDA 10.0 e cuDNN 7.3 (per accelerazione GPU)

Questa sezione è effettiva se si dispone di una scheda grafica NVIDIA che supporta CUDA. Altrimenti salta questa sezione.
Vedere l'installazione dettagliata di CUDA qui se hai bisogno di aiuto. Copia-incolla quella guida ma taglio alcuni dettagli.

Vai su https://developer.nvidia.com/cuda-downloads e scarica CUDA 10.0 Installer per Windows [la tua versione]. Per me, la versione è Windows 10.

Installalo nella posizione predefinita con le impostazioni predefinite ma deseleziona l'opzione di integrazione di VisualStudio. Se necessario, aggiornerà il driver della GPU e si riavvierà.

Vai a eseguire (Win + R) digitare cmd

Il seguente comando verificherà la versione di nvcc e assicurerà che sia impostato nella variabile di ambiente del percorso.

nvcc --version

Avanti vai a https://developer.nvidia.com/cudnn (iscrizione obbligatoria).

Dopo l'accesso scarica quanto segue:

cuDNN v7.3.1 Library per Windows [la tua versione] per me Windows 10. Vai alla cartella scaricata ed estrai il file zip.

Vai all'interno della cartella estratta e copia tutti i file e le cartelle dalla cartella cuda (es. Bin, include, lib) e incolla in "C: \ Programmi \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0".

L'ultimo passo qui è aggiungere "C: \ Programmi \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" alla variabile di ambiente% PATH%.

Passaggio 7: configurare l'ambiente di compilazione

Avviare la shell VC ++ 2015 per x64 (collegamento "Prompt dei comandi degli strumenti nativi di VS2015 x64") dal menu Start.

Successivamente devi creare, attivare e configurare l'ambiente Python. Esegui i comandi della shell "VS2015 x64 Native Tools Prompt" di seguito (correggi i percorsi in base alla tua posizione).

installazione pip3 -U virtualenv
virtualenv --system-site-pacchetti C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

La tua shell dovrebbe apparire così dopo i comandi applicati:

Installa i pacchetti Python obbligatori:

pip3 installa sei ruote intorpidite
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 --no-deps

Eseguire "elenco pip3" per assicurarsi che siano installati i pacchetti obbligatori:

È tutto per ora. Non chiudere il guscio.

Passaggio 8: clonare il codice sorgente TensorFlow e applicare la patch obbligatoria

Prima di tutto devi scegliere la cartella in cui clonare il codice sorgente TensorFlow. Nel mio caso è "C: \ Users \ amsokol \ Development \ tensorflow-build". Torna alla shell ed esegui:

cd C: \ Users \ amsokol \ Development \ tensorflow-build

Codice sorgente clone:

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

Acquista l'ultima versione 1.11:

cd tensorflow
git checkout v1.11.0

Ora abbiamo fonti.

C'è un ERRORE nella libreria di terze parti di Eigen. Dobbiamo risolverlo prima di compilare.
  • Scarica qui la patch e salva con il nome del file eigen_half.patch nella cartella third_party
  • Aggiungi patch_file = clean_dep (“// third_party: eigen_half.patch”), riga alla sezione eigen_archive al file tensorflow / workspace.bzl.

Il risultato nel file tensorflow / workspace.bzl dovrebbe essere così:

...
tf_http_archive (
  name = "eigen_archive",
  urls = [
"Https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
    "Https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
   ],
sha256 = "d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9",
  strip_prefix = "eigen-eigen-fd6845384b86",
  build_file = clean_dep ("// third_party: eigen.BUILD"),
  patch_file = clean_dep ("// third_party: eigen_half.patch"),
)
...

Fatto.

Passaggio 9: configura i parametri di compilazione

Assicurati di trovarci nella cartella principale del codice sorgente:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow

Esegui configuratore:

python ./configure.py

Innanzitutto chiede la posizione di Python. Premi Invio per lasciare il valore predefinito:

...
Hai installato bazel 0.17.2.
Si prega di specificare la posizione di Python. [L'impostazione predefinita è C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Quindi chiede la posizione dei percorsi della libreria Python. Premi Invio per lasciare il valore predefinito:

Traceback (ultima chiamata più recente):
  File "", riga 1, in 
AttributeError: il modulo 'site' non ha alcun attributo 'getsitepackages'
Trovati possibili percorsi della libreria Python:
  C: \ Users \ \ amsokol tensorflow-v1.11 \ lib \ site-packages
Inserisci il percorso della libreria Python desiderato da utilizzare. L'impostazione predefinita è [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-pacchetti]

Quindi chiede il supporto di nGraph. Non ne abbiamo bisogno. Premere "n":

Desideri costruire TensorFlow con il supporto di nGraph? [y / N]: n
Nessun supporto nGraph sarà abilitato per TensorFlow.

Quindi chiede informazioni sul supporto CUDA:

Desideri creare TensorFlow con il supporto CUDA? [Y / N]:

Rispondi "y" se intendi utilizzare l'accelerazione GPU. Altrimenti premere "n".

Nel caso in cui Sì per il configuratore CUDA pone ulteriori domande:
Risposta 10.0 come versione CUDA SDK:
Specifica la versione dell'SDK CUDA che desideri utilizzare. [Lascia vuoto per impostazione predefinita a CUDA 9.0]: 10.0
Premi Invio per lasciare la posizione predefinita del toolkit CUDA:
Specificare la posizione in cui è installato CUDA 10.0 toolkit. Fare riferimento a README.md per maggiori dettagli. [L'impostazione predefinita è C: / Programmi / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Con risposta 7.3.1 come versione cuDNN:
Specificare la versione cuDNN che si desidera utilizzare. [Lascia vuoto per impostazione predefinita su cuDNN 7.0]: 7.3.1
Premere Invio per lasciare la posizione predefinita della libreria cuDNN:
Specificare la posizione in cui è installata la libreria cuDNN 7. Fare riferimento a README.md per maggiori dettagli. [L'impostazione predefinita è C: / Programmi / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
La prossima domanda riguarda le capacità di calcolo di CUDA con cui costruire. Puoi trovare la capacità di calcolo del tuo dispositivo su: https://developer.nvidia.com/cuda-gpus. Ho GTX 1070 per questo rispondo 6.1:
Specificare un elenco di funzionalità di calcolo Cuda separate da virgola con cui si desidera creare.
Puoi trovare la capacità di calcolo del tuo dispositivo su: https://developer.nvidia.com/cuda-gpus.
Si noti che ogni ulteriore capacità di calcolo aumenta significativamente il tempo di costruzione e la dimensione binaria. [L'impostazione predefinita è: 3.5,7.0]: 6.1

La prossima domanda è impostare i flag di ottimizzazione. Ho una CPU Intel di sesta generazione per questo rispondo / arco: AVX2:

Specificare i flag di ottimizzazione da utilizzare durante la compilazione quando viene specificata l'opzione bazel "--config = opt" [L'impostazione predefinita è / arch: AVX]: / arch: AVX2

L'ultima domanda riguarda eigen. Rispondi "y". Riduce drasticamente i tempi di compilazione.

Vorresti sovrascrivere eigen strong inline per alcune compilation C ++ per ridurre i tempi di compilazione? [S / n]: y
Eigen strong inline override.

Configurazione completata. Costruiamo.

Passaggio 10: costruire TensorFlow da fonti

Assicurati di trovarci nella cartella principale del codice sorgente:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
La costruzione richiede molto tempo. Consiglio vivamente di disattivare il software antivirus inclusa la protezione in tempo reale di Windows Defender Antivirus.

Esegui build:

bazel build --config = opt // tensorflow / tools / pip_package: build_pip_package

Siediti e rilassati per qualche tempo.

Passaggio 11: creare il file della ruota TensorFlow per Python 3.6

Esegui il comando per creare il file della ruota Python:

mkdir .. \ out
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Non riesce:

C'è un problema noto. Guarda la cartella "bazel-bin \ tensorflow \ tools \ pip_package". Contiene file "simple_console_for_windows.zip" di lunghezza zero. Questo è il problema. Bazel contiene utility zip a 32 bit che non riesce per file di dimensioni superiori a 2 GB. Vedi i link per dettagli e soluzioni alternative:

  • https://github.com/tensorflow/tensorflow/issues/20332
  • https://stackoverflow.com/questions/52394305/creating-pip-package-for-tensorflow-with-gpu-support-results-in-0-byte-simple-co

Ci sono passaggi per risolvere il problema:

cd. \ bazel-bin \ tensorflow \ tools \ pip_package

Aprire il file "simple_console_for_windows.zip-0.params" e rimuovere la riga contiene "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / ansioso / python / examples / gan / mnist.zip = Bazel-out / x64_windows-opt / bin / tensorflow / contrib / ansioso / python / examples / gan / mnist.zip
...
Mi aiuta. Nel caso in cui non ti aiuti a rimuovere altre righe con i file zip (vedi i dettagli qui). Lo scopo di questa attività è di ridurre la lunghezza di "simple_console_for_windows.zip" a meno di 2 GB.

Elimina il file "simple_console_for_windows.zip" vuoto.

Quindi guarda la tua cartella home. Devi vedere la cartella con un nome come "_bazel_ ". È "_bazel_amsokol" nel mio caso. Contiene una cartella con file di build. È "lx6zoh4k" nel mio caso. Torna a shell run (correggi in base ai nomi delle tue cartelle):

cd C: \ Users \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow

Crea manualmente il file "simple_console_for_windows.zip":

external \ bazel_tools \ tools \ zip \ zipper \ zipper.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip-0.params

Esegui il comando per creare il file della ruota Python:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Crea il file tensorflow-1.11.0-cp36-cp36m-win_amd64.whl nella cartella “.. \ out”.

Passaggio 12: installare il file della ruota TensorFlow per Python 3.6 e verificare il risultato

Esegui il comando per installare il file della ruota Python:

pip3 install .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

Lasciare la directory "tensorflow" (a volte si verificano errori quando eseguo gli script Python nella cartella del codice sorgente di Tensoflow - non conosco il motivo):

cd ..

Per controllare lo script di download qui o copia-incolla ed esegui:

import tensorflow come tf
hello = tf.constant ('Hello, TensorFlow!')
session = tf.Session ()
stampa (session.run (ciao))

Se il sistema genera quanto segue, allora tutto va bene:

Ciao, TensorFlow!

La mia uscita:

TensorFlow è ora installato correttamente sul computer Windows.

Fammi sapere nei commenti qui sotto se ha funzionato per te. O se hai qualche errore. Grazie!