[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
- Installer Git for Windows
- Installer Bazel
- Installer MSYS2 x64 og kommandolinjeværktøy
- Installer Visual Studio 2017 Build Tools inkludert Visual Studio 2015 Build Tools
- Installer Python 3.6 64-bits
- Installer NVIDIA CUDA 10.0 og cuDNN 7.3 (for GPU-akselerasjon)
- Konfigurer byggemiljø
- Klone TensorFlow v1.11 kildekode og bruk obligatorisk oppdatering
- Konfigurer build-parametere
- Bygg TensorFlow fra kilder
- Lag TensorFlow-hjulfil for Python 3.6
- 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-
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_
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!