[Actualització 1] Creació i instal·lació de TensorFlow GPU / CPU per a Windows des del codi font amb Bazel i Python 3.6

Aquesta és una actualització de la meva història anterior. Novetats aquí:

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

Hi ha guies al lloc oficial. No és molt complet, però de vegades és útil.

Resum

  1. Instal·leu Git per a Windows
  2. Instal·leu Bazel
  3. Instal·leu MSYS2 x64 i eines de línia d'ordres
  4. Instal·leu Visual Studio 2017 Build Tools, incloses Visual Studio 2015 Build Tools
  5. Instal·leu Python 3.6 de 64 bits
  6. Instal·leu NVIDIA CUDA 10.0 i cuDNN 7.3 (per accelerar la GPU)
  7. Configureu l'entorn de construcció
  8. Cloneu el codi font de TensorFlow v1.11 i apliqueu el pegat obligatori
  9. Configureu els paràmetres de compilació
  10. Construeix TensorFlow a partir de fonts
  11. Creeu un fitxer de roda TensorFlow per a Python 3.6
  12. Instal·leu el fitxer de roda TensorFlow per a Python 3.6 i comproveu el resultat

Pas 1: instal·leu Git per a Windows

Baixeu i instal·leu Git per a Windows. Ho porto aquí. Assegureu-vos que el camí d'accés a git.exe s'ha afegit a la variable d'entorn% PATH%. Estic instal·lant Git al

C: \ Bin \ Git

Carpeta d’aquest tutorial.

Pas 2: instal·leu MSYS2 x64 i Eines de línia d'ordres

Descarregueu i instal·leu la distribució de 64 bits aquí. Bazel utilitza grep, patch, descomprimir i altres ports de les eines Unix per crear fonts. Podeu provar de trobar binaris independents per a cadascun d'ells, però prefereixo utilitzar el paquet MSYS2. L'instal·lo al fitxer

C: \ Bin \ msys64

Carpeta d’aquest tutorial. Heu d'afegir una carpeta d'eines a la variable d'entorn% PATH%. En el meu cas és "C: \ Bin \ msys64 \ usr \ bin".

Inicieu l'enllaç "MSYS2 MinGW 64-Bit" mitjançant el menú d'inici. Per actualitzar, executeu l'ordre següent (reinicieu MSYS2 MinGW de 64 bits quan se us demani):

Pacman Syu

A continuació, executeu:

Pacman -Su

Les eines d’instal·lació són necessàries per a la construcció:

Descomprimiu el pegat Pacman

Tanqueu l'intèrpret d'ordres MSYS2 MinGW de 64 bits amb l'ordre "exit". Ja no el necessitem.

Pas 3: instal·leu Visual Studio 2017 Build Tools, incloses Visual Studio 2015 Build Tools

Hem d’instal·lar el VC ++ 2015.3 v14.00 (v140) per al conjunt d’eines d’escriptori des de Visual Studio 2017 Build Tools per construir TensorFlow v1.11:

Pas 4: instal·leu Bazel

Descarregueu la versió més recent de Basilea aquí. Cerqueu el fitxer bazel- -windows-x86_64.exe. He provat aquest tutorial amb Bazel 0.17.2. Canvieu el nom del binari a bazel.exe i moveu-lo a un directori de% PATH% perquè pugueu executar Bazel escrivint bazel a qualsevol directori. Per obtenir informació sobre com instal·lar Bazel per a Windows x64, consulteu els problemes.

Afegiu la variable d'entorn global BAZEL_SH per a la posició bash. El meu camí és

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

Afegiu la variable d'entorn global BAZEL_VC per al conjunt d'eines "VC ++ 2015.3 v14.00 (v140) per a escriptori":

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC

Pas 5: instal·leu Python 3.6 de 64 bits

TensorFlow no admet Python 3.7, de manera que haureu d’instal·lar la versió 3.6.
Sembla que TensorFlow v1.11 ja no admet Anaconda / Miniconda per a versions: estic rebent un error estrany. És per això que faig servir l'entorn virtual Python per crear.

Python 3.6 està disponible per descarregar-lo aquí. Instal·leu-lo i afegiu la ubicació python.exe a la variable% PATH%.

Pas 6: instal·leu NVIDIA CUDA 10.0 i cuDNN 7.3 (per acceleració de la GPU)

Aquesta secció està actualitzada si teniu una targeta gràfica NVIDIA compatible amb CUDA. En cas contrari, ometeu aquesta secció.
Hi ha disponible una instal·lació pas a pas de CUDA si necessiteu ajuda. Copio aquesta guia però retallo alguns detalls.

Aneu a https://developer.nvidia.com/cuda-downloads i descarregueu l’instal·lador CUDA 10.0 per a Windows [la vostra versió]. Per a mi, la versió és Windows 10.

Instal·leu-lo al directori predeterminat amb la configuració predeterminada, però desactiveu l'opció d'integració de VisualStudio. El controlador de la GPU s'actualitzarà i es reiniciarà si cal.

Executeu l'ordre cmd (Win + R)

L'ordre següent comprova si hi ha una versió de nvcc i assegura que s'estableix a la variable d'entorn de camí d'accés.

nvcc --version

Aneu a https://developer.nvidia.com/cudnn (cal subscripció).

Després d'iniciar la sessió, baixeu:

CuDNN v7.3.1 Library for Windows [la vostra versió] per a mi Windows 10. Aneu a la carpeta que heu descarregat i extreu el fitxer zip.

Aneu a la carpeta extreta i copieu tots els fitxers i carpetes de la carpeta cuda (per exemple, bin, include, lib) i enganxeu-los a "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 "un.

L'últim pas és afegir "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" a la variable d'entorn% PATH%.

Pas 7: configureu l'entorn de construcció

Inicieu l'intèrpret d'ordres VC ++ 2015 per a x64 (drecera "símbol del sistema VS2015 x64 Native Tools") des del menú d'inici.

A continuació, heu de crear, activar i configurar un entorn Python. Executeu les següents ordres de l'intèrpret d'ordres al "símbol del sistema VS2015 x64 Native Tools" (corregiu els camins d'acord amb les vostres posicions).

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

El vostre intèrpret d'ordres hauria de ser així després de les ordres aplicades:

Instal·leu els paquets obligatoris de Python:

pip3 instal·la sis rodes numpy
pip3 instal·la keras_applications == 1.0.5 --no-deps
pip3 instal·la keras_preprocessing == 1.0.3 --no-deps

Executeu "llista pip3" per assegurar-vos que els paquets obligatoris estiguin instal·lats:

Això és tot per ara. No tanqueu el bol.

Pas 8: cloneu el codi font de TensorFlow i apliqueu el pegat obligatori

Primer, heu de seleccionar la carpeta on voleu que es cloni el codi font de TensorFlow. En el meu cas és "C: \ Users \ amsokol \ Development \ tensorflow-build". Torneu a l'intèrpret d'ordres i executeu:

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

Clona el codi font:

Clonació de Git https://github.com/tensorflow/tensorflow

Comprovar l’última versió 1.11:

cd tensorflow
git checkout v1.11.0

Ara tenim fonts.

Hi ha una BUG a la seva pròpia biblioteca de tercers. Hem de solucionar-ho abans de construir-lo.
  • Descarregueu el pedaç aquí i deseu-lo amb el nom de fitxer eigen_half.patch a la carpeta third_party
  • Afegiu patch_file = clean_dep ("// third_party: eigen_half.patch"), línia a la secció "eigen_archive" del fitxer tensorflow / workspace.bzl.

El resultat al fitxer tensorflow / workspace.bzl hauria de ser així:

... 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", strip_prefix = "eigen-eigen ("// third_party: eigen_half.patch"),) ...

Fet.

Pas 9: configureu els paràmetres de compilació

Assegureu-vos que estiguem a la carpeta arrel del codi font:

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

Executeu el configurador:

python ./configure.py

Primer se us demanarà la ubicació de Python. Premeu Retorn per mantenir el valor per defecte:

... heu instal·lat bazel 0.17.2.
Especifiqueu la ubicació de Python. [L'estàndard és C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

A continuació, se us demanarà el camí cap a la biblioteca Python. Premeu Retorn per mantenir el valor per defecte:

Seguiment (última trucada): fitxer " ", Línia 1, a AttributeError: el mòdul "Lloc" no té cap atribut "getsitepackages" S'han trobat possibles camins de biblioteca de Python: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages Introduïu el camí de biblioteca de Python desitjat. L'estàndard és [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

A continuació, se us demanarà assistència de nGraph. No ho necessitem. Premeu "n":

Voleu construir TensorFlow amb suport nGraph? [S / N]: n El suport gràfic no està activat per a TensorFlow.

A continuació, demana suport CUDA:

Voleu crear TensorFlow amb suport CUDA? [S / N]:

Responeu "y" si voleu utilitzar l'acceleració de la GPU. En cas contrari, premeu "n".

Si és així per al configurador CUDA, es fan preguntes addicionals:
Responeu 10.0 com a versió CUDA SDK:
Indiqueu la versió CUDA SDK que voleu utilitzar. [Deixeu en blanc per utilitzar CUDA 9.0 per defecte]: 10.0
Premeu Retorn per sortir de la ubicació predeterminada del conjunt d'eines CUDA:
Especifiqueu la ubicació on està instal·lat el joc d'eines CUDA 10.0. Consulteu README.md per obtenir més informació. [El valor per defecte és C: / Programes / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Resposta 7.3.1 com a versió cuDNN:
Indiqueu la versió de cuDNN desitjada. [Deixeu en blanc per utilitzar cuDNN 7.0 per defecte]: 7.3.1
Premeu Retorn per sortir de la ubicació predeterminada de la biblioteca cuDNN:
Introduïu la ubicació on està instal·lada la biblioteca cuDNN 7. Consulteu README.md per obtenir més informació. [El valor per defecte és C: / Programes / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
La següent pregunta es refereix a les funcions aritmètiques CUDA que es poden utilitzar per construir. Podeu trobar la capacitat de càlcul del vostre dispositiu a: https://developer.nvidia.com/cuda-gpus. Tinc GTX 1070, així que responc 6.1:
Proporcioneu una llista de les funcions matemàtiques de Cuda separades per comes amb les quals vulgueu crear. Podeu trobar la capacitat de càlcul del vostre dispositiu a: https://developer.nvidia.com/cuda-gpus. Tingueu en compte que cada funció de càlcul addicional augmenta considerablement el temps de creació i la mida binària. [El valor per defecte és: 3.5.7.0]: 6.1

La següent pregunta és establir indicadors d’optimització. Tinc una CPU Intel de 6a generació, així que responc / arco: AVX2:

Especifiqueu els indicadors d’optimització que s’utilitzaran durant la compilació si s’especifica l’opció de Basilea "--config = opt". [El valor per defecte és / arch: AVX]: / arch: AVX2

L’última pregunta és sobre Eigen. Respon amb "y". Redueix dràsticament el temps de compilació.

Voleu anul·lar la vostra pròpia línia forta per a algunes compilacions C ++ per reduir el temps de compilació? [S / n]: S Eigen fortament sobreescrit en línia.

Configuració completada. Construïm.

Pas 10: creeu TensorFlow a partir de fonts

Assegureu-vos que estiguem a la carpeta arrel del codi font:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Es triga molt a crear-se. Us recomano desactivar el programari antivirus, inclosa la protecció en temps real de Windows Defender Antivirus.

Executa la compilació:

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

Seieu i relaxeu-vos una estona.

Pas 11: creeu un fitxer de roda TensorFlow per a Python 3.6

Executeu l'ordre per crear un fitxer Python Wheel:

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

Falla:

Hi ha un problema conegut. Mireu la carpeta "bazel-bin \ tensorflow \ tools \ pip_package". Conté el fitxer "simple_console_for_windows.zip" de longitud zero. Aquest és el problema. Bazel inclou una utilitat zip de 32 bits que fallarà en un fitxer de 2 GB més gran. Consulteu els enllaços per obtenir més informació i solucions:

  • 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

Hi ha alguns passos per solucionar el problema:

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

Obriu el fitxer "simple_console_for_windows.zip-0.params" i elimineu la línia amb "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / examples / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / examples / gan / mnist.zip
...
M’ajuda. Si no us ajuda, simplement elimineu altres línies amb fitxers zip (vegeu els detalls aquí). L’objectiu d’aquesta activitat és mantenir simple_console_for_windows.zip que tingui una longitud inferior a 2 GB.

Elimineu el fitxer buit "simple_console_for_windows.zip".

A continuació, mireu la carpeta d'inici. Heu de trobar la carpeta anomenada "_bazel_ "Vegeu. En el meu cas és" _bazel_amsokol ". Conté carpetes amb fitxers de compilació. En el meu cas és" lx6zoh4k ". Torneu a l'intèrpret d'ordres d'una execució (segons els noms de les vostres carpetes correctament):

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

Creeu el fitxer "simple_console_for_windows.zip" manualment:

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

Executeu l'ordre per crear un fitxer Python Wheel:

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

Crea el fitxer tensorflow-1.11.0-cp36-cp36m-win_amd64.whl a la carpeta ".. \ out".

Pas 12: instal·leu el fitxer de roda TensorFlow per a Python 3.6 i comproveu el resultat

Executeu l'ordre per instal·lar el fitxer Python Wheel:

instal·lar pip3 .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

Sortiu del directori Tensorflow

cd ..

Per comprovar l'script de descàrrega aquí o executar-lo copiant i enganxant:

Importeu Tensorflow com a tf hello = tf.constant ('Hola, TensorFlow!') Session = tf.Session () print (session.run (hello))

Si el sistema genera el següent, tot està bé:

Hola TensorFlow!

La meva sortida:

Ara heu instal·lat TensorFlow amb èxit en un equip Windows.

Feu-me saber als comentaris següents si us ha funcionat. O si teniu algun defecte. Moltes gràcies!