[Opdatering 1] Hvordan man bygger og installerer TensorFlow GPU / CPU til Windows fra kildekoden ved hjælp af bazel og Python 3.6

Dette er en opdatering til min tidligere historie. Hvad er nyt her:
- TensorFlow v1.11
- CUDA v10.0
- cuDNN v7.3
Der er guide på det officielle sted. Det er ikke særlig omfattende, men nogle gange nyttigt.
Resumé
- Installer Git til Windows
- Installer Bazel
- Installer MSYS2 x64 og kommandolinjeværktøjer
- Installer Visual Studio 2017 Build Tools inklusive Visual Studio 2015 Build Tools
- Installer Python 3.6 64-bit
- Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (til GPU-acceleration)
- Konfigurer build-miljø
- Klon TensorFlow v1.11 kildekode og anvend obligatorisk programrettelse
- Konfigurer build-parametre
- Byg TensorFlow fra kilder
- Opret TensorFlow-hjulfil til Python 3.6
- Installer TensorFlow-hjulfil til Python 3.6, og kontroller resultatet
Trin 1: Installer Git til Windows
Download og installer Git til Windows. Jeg tager det her. Sørg for, at sti til git.exe er føjet til% PATH% miljøvariabel. Jeg installerer Git til
C: \ Bin \ Git
mappe til denne tutorial.
Trin 2: Installer MSYS2 x64 og kommandolinjeværktøjer
Download og installer 64-bit distribution her. Bazel bruger grep, patch, unzipand andre porte af Unix-værktøjer til at opbygge kilder. Du kan prøve at finde fristående binære filer til hver af dem, men jeg foretrækker at bruge MSYS2-bundt. Jeg installerer det på
C: \ Bin \ msys64
mappe til denne tutorial. Du skal tilføje mappe med værktøjer til% PATH% miljøvariabel. Det er “C: \ Bin \ msys64 \ usr \ bin” i mit tilfælde.
Start "MSYS2 MinGW 64-bit" genvej fra Start Menu. Kør følgende kommando for at opdatere (genstart “MSYS2 MinGW 64-bit”, hvis det spørger):
pacman -Syu
Kør derefter:
pacman-Su
Installationsværktøjer er nødvendige til opbygning:
pacman -S patch unzip
Luk "MSYS2 MinGW 64-bit" shell med "exit" -kommandoen. Vi har ikke brug for det mere.
Trin 3: Installer Visual Studio 2017 Build Tools inklusive Visual Studio 2015 Build Tools
Vi skal installere “VC ++ 2015.3 v14.00 (v140) værktøjssæt til desktop” fra Visual Studio 2017 Build Tools til at bygge TensorFlow v1.11:

Trin 4: Installer Bazel
Download seneste Basel her. Se efter filen bazel-
Tilføj BAZEL_SH global miljøvariabel til bash placering. Min sti er
C: \ Bin \ msys64 \ usr \ bin \ bash.exe
Tilføj BAZEL_VC global miljøvariabel til “VC ++ 2015.3 v14.00 (v140) værktøjssæt til desktop” værktøjskæde placering:
C: \ Programfiler (x86) \ Microsoft Visual Studio 14.0 \ VC
Trin 5: Installer Python 3.6 64-bit
TensorFlow understøtter ikke Python 3.7, så du skal installere 3.6-versionen.
Det ser ud til, at TensorFlow v1.11 ikke understøtter Anaconda / Miniconda til at bygge mere - jeg får mærkelig fejl. Derfor bruger jeg det virtuelle Python-miljø til build.
Python 3.6 kan downloades her. Installer det, og tilføj placering til python.exe til variablen% PATH%.
Trin 6: Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (til GPU-acceleration)
Dette afsnit er faktisk, hvis du har NVIDIA-grafikkort, der understøtter CUDA. Ellers spring dette afsnit over.
Se trin for trin installation af CUDA her, hvis du har brug for hjælp. Jeg kopierer og indsætter denne guide, men klipper nogle detaljer.
Gå til https://developer.nvidia.com/cuda-downloads og download CUDA 10.0 Installer til Windows [din version]. For mig er version 10 Windows.
Installer det i standardplacering med standardindstillinger, men fjern markeringen af VisualStudio-integrationen. Det opdaterer din GPU-driver, hvis nødvendigt, og genstarter.
Gå til køre (Win + R) type cmd
Følgende kommando kontrollerer for nvcc-version og sikrer, at den er indstillet i sti-miljøvariabel.
nvcc --version
Næste gå til https://developer.nvidia.com/cudnn (medlemskab krævet).
Efter login skal du downloade følgende:
cuDNN v7.3.1 Bibliotek til Windows [din version] for mig Windows 10. Gå til download-mappe og udpakke zip-fil.
Gå ind i den udpakkede mappe, og kopier alle filer og mapper fra cuda-mappen (f.eks. Bin, inkluder, lib) og indsæt til “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0”.
Det sidste trin her er at tilføje “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” til% PATH% miljøvariabel.
Trin 7: Konfigurer build-miljø
Start VC ++ 2015 shell til x64 (“VS2015 x64 Native Tools Command Prompt” -genvej) fra Start Menu.
Derefter skal du oprette, aktivere og konfigurere Python-miljø. Kør inden i “VS2015 x64 Native Tools Command Prompt” shell-kommandoer nedenfor (korrekte stier i henhold til dine placeringer).
pip3 installere -U virtualenv
virtualenv - system-site-pakker C: \ Brugere \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat
Din skal skal se sådan ud, når kommandoer er anvendt:

Installer obligatoriske Python-pakker:
pip3 installerer seks numpy hjul
pip3 installer keras_applications == 1.0.5 - no-deps
pip3 install keras_preprocessing == 1.0.3 - no-deps
Kør “pip3-liste” for at sikre, at de obligatoriske pakker er installeret:

Det er alt for nu. Luk ikke skallen.
Trin 8: Klon TensorFlow-kildekode, og anvend obligatorisk programrettelse
Først og fremmest skal du vælge mappe, hvor TensorFlow-kildekoden skal klones. Det er "C: \ Brugere \ amsokol \ Udvikling \ tensorflow-build" i mit tilfælde. Tilbage til shell and run:
cd C: \ Brugere \ amsokol \ Udvikling \ tensorflow-build
Klon kildekode:
git klon https://github.com/tensorflow/tensorflow
Checkout seneste 1.11 version:
cd tensorflow
git checkout v1.11.0
Nu har vi kilder.
Der er en BUG i eget tredjepartsbibliotek. Vi er nødt til at ordne det, før vi bygger det.
- Download patch her og gem med filnavnet eigen_half.patch til tredje_party-mappen
- Tilføj patch_file = clean_dep (“// tredje_party: eigen_half.patch”), linje til egen_arkivsektion til tensorflow / workspace.bzl-fil.
Resultatet i filen tensorflow / workspace.bzl skal være sådan:
... tf_http_archive ( name = "egen_arkiv", webadresser = [ "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 = "egen-egen-fd6845384b86", build_file = clean_dep ("// tredje_party: egen.BUILD"), patch_file = clean_dep ("// tredjepart: egen_half.patch"), ) ...
Færdig.
Trin 9: Konfigurer build-parametre
Sørg for, at vi er i kildekodens rodmappe:
cd C: \ Brugere \ amsokol \ Udvikling \ tensorflow-build \ tensorflow
Kør konfigurator:
python ./configure.py
Først spørger det om Pythons placering. Tryk på Enter for at forlade standardværdien:
... Du har installeret bazel 0.17.2.
Angiv placeringen af python. [Standard er C: \ Brugere \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:
Derefter spørger dens placering af Python-biblioteksstier. Tryk på Enter for at forlade standardværdien:
Traceback (seneste opkald sidst): Fil "", linje 1, i AttributeError: modul 'site' har ingen attribut 'getitepackages' Fundet mulige Python-biblioteksstier: C: \ Users \ amsokol \ tensorflow-v1.11 \ lib \ site-pakker Indtast den ønskede Python-bibliotekssti, der skal bruges. Standard er [C: \ Brugere \ amsokol \ tensorflow-v1.11 \ Lib \ site-pakker]
Derefter spørges det om nGraph-support. Vi har ikke brug for det. Tryk på “n”:
Ønsker du at bygge TensorFlow med nGraph support? [y / N]: n Ingen nGraph-understøttelse vil blive aktiveret for TensorFlow.
Derefter spørges det om CUDA-støtte:
Ønsker du at bygge TensorFlow med CUDA support? [Y / N]:
Svar "y", hvis du vil bruge GPU-acceleration. Ellers skal du trykke på “n”.
I tilfælde af Ja til CUDA-konfigurator stiller yderligere spørgsmål:
Svar 10.0 som CUDA SDK version:
Angiv den CUDA SDK-version, du vil bruge. [Forlad tom som standard til CUDA 9.0]: 10.0
Tryk på Enter for at forlade standard CUDA værktøjssætets placering:
Angiv det sted, hvor CUDA 10.0 værktøjssæt er installeret. Se README.md for flere detaljer. [Standard er C: / Programfiler / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Svar 7.3.1 som cuDNN-version:
Angiv den cuDNN-version, du vil bruge. [Lad tom være standard til cuDNN 7.0]: 7.3.1
Tryk på Enter for at forlade standard cuDNN-bibliotekets placering:
Angiv det sted, hvor cuDNN 7-biblioteket er installeret. Se README.md for flere detaljer. [Standard er C: / Programfiler / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Det næste spørgsmål handler om CUDA-beregningsmuligheder til at bygge med. Du kan finde computerens kapacitet på: https://developer.nvidia.com/cuda-gpus. Jeg har GTX 1070, derfor svarer jeg 6.1:
Angiv en liste over kommaseparerede Cuda-beregningsmuligheder, du vil bygge med. Du kan finde computerens kapacitet på: https://developer.nvidia.com/cuda-gpus. Bemærk, at hver ekstra beregningsmulighed øger din byggetid og din binære størrelse markant. [Standard er: 3,5,7,0]: 6.1
Næste spørgsmål er at indstille optimeringsflag. Jeg har 6. Gen Intel CPU, det er derfor, jeg svarer / arkiverer: AVX2:
Angiv venligst optimeringsflag, der skal bruges under kompilering, når bazel-indstillingen "--config = opt" er specificeret [Standard er / arch: AVX]: / arch: AVX2
Sidste spørgsmål handler om egen. Svar “y”. Det reducerer kompileringstiden dramatisk.
Ønsker du at tilsidesætte egen stærk inline for nogle C ++ -kompileringer for at reducere kompileringstiden? [Y / n]: y Eigen stærk inline overstyres.
Konfigurationen er afsluttet. Lad os bygge.
Trin 10: Byg TensorFlow fra kilder
Sørg for, at vi er i kildekodens rodmappe:
cd C: \ Brugere \ amsokol \ Udvikling \ tensorflow-build \ tensorflow
Bygning tager lang tid. Jeg anbefaler på det kraftigste at slå antivirus-software, herunder Windows Defender Antivirus realtidsbeskyttelse, fra.
Kør bygning:
bazel build --config = vælg // tensorflow / tools / pip_package: build_pip_package
Læn dig tilbage og slap af engang.
Trin 11: Opret TensorFlow-hjulfil til Python 3.6
Kør kommando for at oprette Python-hjulfil:
mkdir .. \ ud
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
Det mislykkes:

Der er et kendt problem. Se mappen "bazel-bin \ tensorflow \ tools \ pip_package". Den indeholder "simple_console_for_windows.zip" -fil med nul længde. Dette er problemet. Bazel indeholder 32-bits zip-hjælpeprogram, der mislykkes for fil 2 GB større. Se links for detaljer og løsning:
- 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
Der er trin til at løse problemet:
cd. \ bazel-bin \ tensorflow \ tools \ pip_package
Åbn filen "simple_console_for_windows.zip-0.params", og fjern linjen indeholder "mnist.zip":
...
runfiles / org_tensorflow / tensorflow / contrib / ivrig / python / eksempler / gan / mnist.zip = Bazel-out / x64_windows-opt / bin / tensorflow / contrib / ivrig / python / examples / gan / mnist.zip
...
Det hjælper mig. I tilfælde af at det ikke hjælper dig med bare at fjerne andre linjer med zip-filer (se detaljer her). Formålet med denne aktivitet er at gøre “simple_console_for_windows.zip” længde mindre end 2 GB.
Slet den tomme “simple_console_for_windows.zip” -fil.
Næste kig på din hjemmemappe. Du skal se mappen med navn som “_bazel_
cd C: \ Brugere \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow
Opret filen "simple_console_for_windows.zip" manuelt:
eksterne \ 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
Kør kommando for at oprette Python-hjulfil:
cd C: \ Brugere \ amsokol \ Udvikling \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
Det opretter tensorflow-1.11.0-cp36-cp36m-win_amd64.whl-fil i mappen “.. \ out”.
Trin 12: Installer TensorFlow-hjulfil for Python 3.6, og kontroller resultatet
Kør kommando for at installere Python-hjulfil:
pip3 install .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl
Forlad mappen "tensorflow" (der sker nogle gange fejl, når jeg kører Python-scripts i Tensoflow-kildekodemappen - jeg ved ikke grund):
cd ..
For at lave check download-script her eller kopi-indsæt og kør:
import tensorflow som tf hallo = tf.constant ('Hej, TensorFlow!') session = tf.Session () print (session.run (hej))
Hvis systemet udsender følgende, er alt i orden:
Hej, TensorFlow!
Min output:

Du har nu installeret TensorFlow på Windows-maskine med succes.
Giv mig besked i kommentarerne herunder, hvis det virkede for dig. Eller hvis du fik fejl. Tak!