[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é

  1. Installer Git til Windows
  2. Installer Bazel
  3. Installer MSYS2 x64 og kommandolinjeværktøjer
  4. Installer Visual Studio 2017 Build Tools inklusive Visual Studio 2015 Build Tools
  5. Installer Python 3.6 64-bit
  6. Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (til GPU-acceleration)
  7. Konfigurer build-miljø
  8. Klon TensorFlow v1.11 kildekode og anvend obligatorisk programrettelse
  9. Konfigurer build-parametre
  10. Byg TensorFlow fra kilder
  11. Opret TensorFlow-hjulfil til Python 3.6
  12. 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- -windows-x86_64.exe. Jeg har testet denne tutorial med bazel 0.17.2. Omdøb den binære til bazel.exe og flyt den til et bibliotek på din% PATH%, så du kan køre Bazel ved at skrive bazel i ethvert bibliotek. Se detaljer om Bazel-installation til Windows x64 i tilfælde af problemer.

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_ ”. Det er “_bazel_amsokol” i min sag. Den indeholder mappe med build-filer. Det er “lx6zoh4k” i mit tilfælde. Tilbage til shell en run (korrekt i henhold til dine mappenavne):

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!