[Oppdatering 1] Hvordan bygge og installere TensorFlow GPU / CPU for Windows fra kildekode ved bruk av bazel og Python 3.6

Dette er en oppdatering for min forrige historie. Hva er nytt her:

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

Det er guide på offisiell side. Det er ikke veldig omfattende, men nyttig noen ganger.

Sammendrag

  1. Installer Git for Windows
  2. Installer Bazel
  3. Installer MSYS2 x64 og kommandolinjeværktøy
  4. Installer Visual Studio 2017 Build Tools inkludert Visual Studio 2015 Build Tools
  5. Installer Python 3.6 64-bits
  6. Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (for GPU-akselerasjon)
  7. Konfigurer byggemiljø
  8. Klone TensorFlow v1.11 kildekode og bruk obligatorisk oppdatering
  9. Konfigurer build-parametere
  10. Bygg TensorFlow fra kilder
  11. Lag TensorFlow-hjulfil for Python 3.6
  12. Installer TensorFlow hjulfil for Python 3.6 og sjekk resultatet

Trinn 1: Installer Git for Windows

Last ned og installer Git for Windows. Jeg tar det her. Sørg for at banen til git.exe er lagt til i% PATH% miljøvariabel. Jeg installerer Git til

C: \ Bin \ Git

mappe for denne opplæringen.

Trinn 2: Installer MSYS2 x64 og kommandolinjeværktøy

Last ned og installer 64-bits distribusjon her. Bazel bruker grep, patch, unzipand andre porter av Unix-verktøy for å bygge kilder. Du kan prøve å finne frittstående binære filer for hver av dem, men jeg foretrekker å bruke MSYS2-pakken. Jeg installerer den på

C: \ Bin \ msys64

mappe for denne opplæringen. Du må legge til mappe med verktøy til% PATH% miljøvariabel. Det er “C: \ Bin \ msys64 \ usr \ bin” i mitt tilfelle.

Start "MSYS2 MinGW 64-bit" snarvei fra Start Menu. Kjør følgende kommando for å oppdatere (start "MSYS2 MinGW 64-bit" på nytt hvis den spør):

pacman -Syu

Så løp:

pacman -Su

Installasjonsverktøy er nødvendige for å bygge:

pacman -S patch pakkes ut

Lukk “MSYS2 MinGW 64-bit” shell med “exit” -kommando. Vi trenger det ikke mer.

Trinn 3: Installer Visual Studio 2017 Build Tools inkludert Visual Studio 2015 Build Tools

Vi må installere “VC ++ 2015.3 v14.00 (v140) toolset for desktop” fra Visual Studio 2017 Build Tools for å bygge TensorFlow v1.11:

Trinn 4: Installer Bazel

Last ned siste Basel her. Se etter bazel- -windows-x86_64.exe-fil. Jeg har testet denne opplæringen med bazel 0.17.2. Gi nytt navn til binæren til bazel.exe og flytt den til en katalog på% PATH%, slik at du kan kjøre Bazel ved å skrive bazel i hvilken som helst katalog. Se detaljer om Bazel-installasjon for Windows x64 i tilfelle problemer.

Legg til BAZEL_SH global miljøvariabel for bash-plassering. Stien min er

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

Legg til den globale miljøvariabelen BAZEL_VC for “VC ++ 2015.3 v14.00 (v140) toolset for desktop” -verktøyets kjedeplassering:

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

Trinn 5: Installer Python 3.6 64-bits

TensorFlow støtter ikke Python 3.7, så du må installere 3.6-versjonen.
Ser ut som om TensorFlow v1.11 ikke støtter Anaconda / Miniconda for å bygge mer - jeg får merkelige feil. Derfor bruker jeg det virtuelle Python-miljøet for bygging.

Python 3.6 er tilgjengelig for nedlasting her. Installer den og legg plassering til python.exe til% PATH% -variabelen.

Trinn 6: Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (for GPU-akselerasjon)

Denne delen er faktisk hvis du har NVIDIA grafikkort som støtter CUDA. Ellers hopper du over dette avsnittet.
Se trinnvis installasjon av CUDA her hvis du trenger hjelp. Jeg kopierer og limer inn denne guiden, men klipper noen detaljer.

Gå til https://developer.nvidia.com/cuda-downloads og last ned CUDA 10.0 Installer for Windows [din versjon]. For meg er versjon Windows 10.

Installer den på standardplassering med standardinnstillinger, men fjern merket for VisualStudio-integreringsalternativet. Den vil oppdatere GPU-driveren hvis nødvendig og starte på nytt.

Gå til å kjøre cmd (Win + R)

Følgende kommando vil sjekke for nvcc-versjon og sikre at den er satt i banen-miljøvariabel.

nvcc - versjon

Neste gå til https://developer.nvidia.com/cudnn (medlemskap kreves).

Last ned følgende etter innlogging:

cuDNN v7.3.1 Library for Windows [din versjon] for meg Windows 10. Gikk nedlastet mappe og pakke ut zip-fil.

Gå inn i den utpakkede mappen og kopier alle filer og mapper fra cuda-mappen (f.eks. Bin, inkluder, lib) og lim inn til “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0”.

Det siste trinnet her er å legge til “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” til% PATH% miljøvariabel.

Trinn 7: Konfigurer byggemiljø

Start VC ++ 2015 shell for x64 (“VS2015 x64 Native Tools Command Prompt” -snarveien) fra Start-menyen.

Deretter må du opprette, aktivere og konfigurere Python-miljø. Kjør innenfor skjellkommandoene "VS2015 x64 Native Tools Command Prompt" nedenfor (riktige stier i henhold til stedene dine).

pip3 installere -U virtualenv
virtualenv - system-site-pakker C: \ Brukere \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

Skallet ditt skal se slik ut etter at kommandoene er brukt:

Installer obligatoriske Python-pakker:

pip3 installer seks numpy hjul
pip3 install keras_applications == 1.0.5 - no-deps
pip3 install keras_preprocessing == 1.0.3 - no-deps

Kjør "pip3-liste" for å sikre at de obligatoriske pakkene er installert:

Det er alt for nå. Ikke lukk skallet.

Trinn 8: Klone TensorFlow kildekode og bruk obligatorisk oppdatering

Først av alt må du velge mappe hvor TensorFlow-kildekoden skal klones. Det er "C: \ Brukere \ amsokol \ Utvikling \ tensorflow-build" i mitt tilfelle. Tilbake til skallet og løp:

cd C: \ Brukere \ amsokol \ Utvikling \ tensorflow-build

Klon kildekode:

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

Kassen siste 1.11 versjon:

cd tensorflow
git kassa v1.11.0

Nå har vi kilder.

Det er en BUG i eget tredjepartsbibliotek. Vi må ordne det før det bygges.
  • Last ned patch her og lagre med filnavnet eigen_half.patch til Third_party-mappen
  • Legg til patch_file = clean_dep (“// tredje_party: eigen_half.patch”), linje til egen_arkivseksjon til tensorflow / workspace.bzl-fil.

Resultatet i filen tensorflow / workspace.bzl skal være slik:

...
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 ("// tredje_party: eigen_half.patch"),
)
...

Ferdig.

Trinn 9: Konfigurer build-parametere

Forsikre deg om at vi er i kildekoden rotmappe:

cd C: \ Brukere \ amsokol \ Utvikling \ tensorflow-build \ tensorflow

Kjør konfigurator:

python ./configure.py

Først spør den om Python. Trykk Enter for å legge igjen standardverdien:

...
Du har installert bazel 0.17.2.
Vennligst spesifiser plasseringen av python. [Standard er C: \ Brukere \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Deretter spør stedet om Python bibliotekstier. Trykk Enter for å legge igjen standardverdien:

Traceback (siste samtale sist):
  Fil "", linje 1, i 
AttributeError: modul 'site' har ingen attributt 'getitepackages'
Fant mulige Python-biblioteksstier:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ lib \ site-pakker
Skriv inn ønsket Python-biblioteksti du vil bruke. Standard er [C: \ Brukere \ amsokol \ tensorflow-v1.11 \ Lib \ site-pakker]

Så spørs det om nGraph-støtte. Vi trenger det ikke. Trykk “n”:

Ønsker du å bygge TensorFlow med nGraph-støtte? [y / N]: n
Ingen nGraph-støtte blir aktivert for TensorFlow.

Så spørs det om CUDA-støtte:

Ønsker du å bygge TensorFlow med CUDA-støtte? [Y / N]:

Svar “y” hvis du skal bruke GPU-akselerasjon. Ellers trykk “n”.

I tilfelle på Yes for CUDA-konfigurator stiller flere spørsmål:
Svar 10.0 som CUDA SDK-versjon:
Vennligst spesifiser CUDA SDK-versjonen du vil bruke. [La stå som standard til CUDA 9.0]: 10.0
Trykk Enter for å forlate standard CUDA verktøysettplassering:
Vennligst spesifiser stedet der CUDA 10.0 verktøysett er installert. Se README.md for mer informasjon. [Standard er C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Svar 7.3.1 som cuDNN-versjon:
Vennligst spesifiser cuDNN-versjonen du vil bruke. [La stå som standard til cuDNN 7.0]: 7.3.1
Trykk Enter for å forlate standard cuDNN-biblioteksplassering:
Vennligst spesifiser stedet der cuDNN 7-biblioteket er installert. Se README.md for mer informasjon. [Standard er C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Neste spørsmål handler om CUDA beregne evner å bygge med. Du finner beregningsevnen til enheten din på: https://developer.nvidia.com/cuda-gpus. Jeg har GTX 1070 som er grunnen til at jeg svarer 6.1:
Vennligst spesifiser en liste over kommaseparerte Cuda-beregningsmuligheter du vil bygge med.
Du finner beregningsevnen til enheten din på: https://developer.nvidia.com/cuda-gpus.
Vær oppmerksom på at hver ekstra beregningsmulighet øker byggetiden og den binære størrelsen betydelig. [Standard er: 3,5,7,0]: 6.1

Neste spørsmål er å angi optimaliseringsflagg. Jeg har sjette Gen Intel CPU som er grunnen til at jeg svarer / arkiverer: AVX2:

Vennligst spesifiser optimaliseringsflagg som skal brukes under samlingen når bazel-alternativet "--config = opt" er spesifisert [Standard er / arch: AVX]: / arch: AVX2

Siste spørsmål handler om egen. Svar “y”. Det reduserer kompileringstiden dramatisk.

Vil du overstyre egen sterk inline for litt C ++ -samling for å redusere kompileringstiden? [Y / n]: y
Eigen sterk inline overstyres.

Konfigurasjonen er fullført. La oss bygge.

Trinn 10: Bygg TensorFlow fra kilder

Forsikre deg om at vi er i kildekoden rotmappe:

cd C: \ Brukere \ amsokol \ Utvikling \ tensorflow-build \ tensorflow
Bygg tar lang tid. Jeg anbefaler på det sterkeste å slå av antivirusprogramvare inkludert Windows Defender Antivirus sanntidsbeskyttelse.

Kjør bygg:

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

Len deg tilbake og slapp av en gang.

Trinn 11: Lag TensorFlow-hjulfil for Python 3.6

Kjør kommando for å opprette Python-hjulfil:

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

Det mislykkes:

Det er en kjent sak. Se på mappen “bazel-bin \ tensorflow \ tools \ pip_package”. Den inneholder null-lengde “simple_console_for_windows.zip” -fil. Dette er problemet. Bazel inneholder 32-bits zip-verktøy som mislykkes for fil 2 GB større. Se lenker 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

Det er trinn for å løse problemet:

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

Åpne filen "simple_console_for_windows.zip-0.params" og fjern linjen inneholder "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / ivrig / python / eksempler / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / ivrig / python / eksempler / gan / mnist.zip
...
Det hjelper meg. I tilfelle det ikke hjelper deg å bare fjerne andre linjer med zip-filer (se detaljer her). Hensikten med denne aktiviteten er å gjøre “simple_console_for_windows.zip” lengde mindre enn 2 GB.

Slett den tomme filen “simple_console_for_windows.zip”.

Neste titt på hjemmemappen din. Du må se mappen med navn som “_bazel_ ”. Det er "_bazel_amsokol" i mitt tilfelle. Den inneholder mappe med build-filer. Det er “lx6zoh4k” i mitt tilfelle. Tilbake til shell et kjør (riktig i henhold til mappenavn):

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

Lag "simple_console_for_windows.zip" -fil 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

Kjør kommando for å opprette Python-hjulfil:

cd C: \ Brukere \ amsokol \ Utvikling \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Det oppretter tensorflow-1.11.0-cp36-cp36m-win_amd64.whl-fil i ".. \ out" -mappen.

Trinn 12: Installer TensorFlow hjulfil for Python 3.6 og sjekk resultatet

Kjør kommando for å installere Python hjulfil:

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

Legg igjen "tensorflow" -katalogen (feil skjer noen ganger når jeg kjører Python-skript i Tensoflow-kildekodemappen - jeg vet ikke grunn).

CD ..

Slik lager du sjekk nedlastingsskript her eller kopier og lim inn og kjører:

importer tensorflow som tf
hallo = tf.constant ('Hei, TensorFlow!')
økt = tf.Session ()
print (session.run (hei))

Hvis systemet gir ut følgende, er alt i orden:

Hei, TensorFlow!

Utgangen min:

Du har nå installert TensorFlow på Windows-maskinen.

Gi meg beskjed i kommentarene nedenfor hvis det fungerte for deg. Eller hvis du fikk feil. Takk!