[Posodobitev 1] Kako sestaviti in namestiti TensorFlow GPU / CPU za Windows iz izvorne kode z uporabo bazel in Python 3.6

To je posodobitev za mojo prejšnjo zgodbo. Kaj je tukaj novega:

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

Na uradni strani je vodnik. Včasih ni zelo izčrpen, a uporaben.

Povzetek

  1. Namestite Git za Windows
  2. Namestite Bazel
  3. Namestite orodja MSYS2 x64 in ukazne vrstice
  4. Namestite Visual Studio 2017 Build Tools, vključno z Visual Studio 2015 Build Tools
  5. Namestite Python 3.6 64-bit
  6. Namestite NVIDIA CUDA 10.0 in cuDNN 7.3 (za pospešek GPU-ja)
  7. Konfigurirajte okolje gradnje
  8. Klonirajte TensorFlow v1.11 izvorno kodo in uporabite obvezen obliž
  9. Konfigurirajte parametre sestavljanja
  10. Izdelajte TensorFlow iz virov
  11. Ustvari datoteko s kolesi TensorFlow za Python 3.6
  12. Namestite datoteko s kolesi TensorFlow za Python 3.6 in preverite rezultat

1. korak: Namestite Git za Windows

Prenesite in namestite Git za Windows. Tu vzamem. Bodite prepričani, da je pot do git.exe dodana v% PATH% spremenljivko okolja. Git namestim na

C: \ Bin \ Git

mapa za to vadnico.

2. korak: Namestite orodja MSYS2 x64 in ukazne vrstice

Tu prenesite in namestite 64-bitno distribucijo. Bazel uporablja grep, obliž, razpakiranje drugih vrat Unix-orodij za gradnjo virov. Lahko poskusite najti samostojne binarne datoteke za vsako od njih, vendar raje uporabljam paket MSYS2. Namestim ga na

C: \ Bin \ msys64

mapa za to vadnico. V spremenljivko% PATH% morate dodati mapo z orodji. V mojem primeru je to "C: \ Bin \ msys64 \ usr \ bin".

Zaženite bližnjico "64-bitni MSYS2 MinGW" iz menija Start. Za posodobitev zaženite ta ukaz (po potrebi znova zaženite 64-bitni MSYS2 MinGW):

pacman -Syu

Nato zaženite:

pacman -Su

Namestite orodja, potrebna za gradnjo:

pacman -S patch unzip

Zaprite lupino "MSYS2 MinGW 64-bit" z ukazom "exit". Ne potrebujemo ga več.

3. korak: Namestite orodja za izgradnjo Visual Studio 2017, vključno z orodji za izgradnjo Visual Studio 2015

Moramo namestiti nabor orodij »VC ++ 2015.3 v14.00 (v140) za namizje« iz Visual Studio 2017 Build Tools, da sestavimo TensorFlow v1.11:

4. korak: Namestite Bazel

Prenesite najnovejši Basel tukaj. Poiščite datoteko bazel- -windows-x86_64.exe. To vadnico sem preizkusil z bazel 0.17.2. Preimenujte binarno datoteko v bazel.exe in jo premaknite v imenik na% PATH%, da lahko Bazel zaženete tako, da v kateri koli imenik vtipkate bazel. Oglejte si podrobnosti o namestitvi programa Bazel za Windows x64 v primeru težav.

Dodajte globalno spremenljivko okolja BAZEL_SH za lokacijo bash. Moja pot je

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

Dodajte globalno spremenljivko okolja BAZEL_VC za orodje »VC ++ 2015.3 v14.00 (v140) nabor orodij za namizje«:

C: \ programske datoteke (x86) \ Microsoft Visual Studio 14.0 \ VC

5. korak: Namestite 64-bitni Python 3.6

TensorFlow ne podpira Python 3.7, zato morate namestiti različico 3.6.
Videti je, da TensorFlow v1.11 ne podpira več Anaconda / Miniconda za gradnjo - dobil sem nenavadno napako. Zato za gradnjo uporabljam virtualno okolje Python.

Python 3.6 je na voljo za prenos tukaj. Namestite ga in dodajte lokacijo python.exe spremenljivki% PATH%.

6. korak: Namestite NVIDIA CUDA 10.0 in cuDNN 7.3 (za pospešek GPU-ja)

Ta razdelek je dejanski, če imate grafično kartico NVIDIA, ki podpira CUDA. V nasprotnem primeru preskočite ta razdelek.
Glej korak za korakom namestitev CUDA tukaj, če potrebujete pomoč. Kopiram in prilepim ta vodnik, vendar izrežem nekaj podrobnosti.

Pojdite na https://developer.nvidia.com/cuda-downloads in naložite CUDA 10.0 Installer za Windows [vaša različica]. Zame je različica Windows 10.

Namestite ga na privzeto mesto s privzetimi nastavitvami, vendar počistite polje možnosti integracije VisualStudio. Po potrebi bo posodobil gonilnik GPU-ja in ga znova zagnal.

Pojdi na zagon (Win + R) cmd

Naslednji ukaz bo preveril različico nvcc in zagotovil, da je nastavljena v spremenljivki okolja poti.

nvcc - pretvorba

Nato pojdite na https://developer.nvidia.com/cudnn (potrebno je članstvo).

Po prijavi prenesite naslednje:

cuDNN v7.3.1 Knjižnica za Windows [vaša različica] zame Windows 10. Odprite mapo in izvlecite zip datoteko.

Pojdite znotraj izvlečene mape in kopirajte vse datoteke in mapo iz mape cuda (npr. Bin, include, lib) in prilepite na "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0".

Zadnji korak tukaj je dodati „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64“ v spremenljivko okolja% PATH%.

7. korak: Konfigurirajte okolje gradnje

Zaženite lupino VC ++ 2015 za x64 (bližnjica »VS2015 x64 Native Tools Command Prompt«) v meniju Start.

Nato morate ustvariti, aktivirati in konfigurirati okolje Python. Zaženite notranje ukaze lupine „VS2015 x64 Native Tools Command Prompt“ (popravite poti glede na svoje lokacije).

pip3 namestite -U virtualenv
virtualenv - sistemski paketi-paketi C: \ Uporabniki \ amsokol \ tensorflow-v1.11
C: \ Uporabniki \ amsokol \ tensorflow-v1.11 \ Skripti \ activate.bat

Vaša lupina bi morala izgledati tako po uporabljenih ukazih:

Namestite obvezne pakete Python:

pip3 namestite šest okornih koles
pip3 namestite keras_applications == 1.0.5 --no-deps
pip3 namestite keras_preprocessing == 1.0.3 - no-deps

Zaženite »seznam pip3«, da zagotovite namestitev obveznih paketov:

To je vse za zdaj. Ne zapirajte lupine.

8. korak: Klonirajte izhodno kodo TensorFlow in uporabite obvezen obliž

Najprej morate izbrati mapo, kamor boste klonirali izvorno kodo TensorFlow. V mojem primeru je to »C: \ uporabniki \ amsokol \ razvoj \ tensorflow-build«. Nazaj v lupino in zaženite:

cd C: \ Uporabniki \ amsokol \ Razvoj \ tensorflow-build

Klon izvorne kode:

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

Najnovejša različica 1.11:

cd tensorflow
git checkout v1.11.0

Zdaj imamo vire.

V knjižnici drugih proizvajalcev je BUG. Pred gradnjo ga moramo popraviti.
  • Tu prenesite obliž in ga shranite z imenom datoteke eigen_half.patch v mapo Third_party
  • Dodajte patch_file = clean_dep ("// Third_party: eigen_half.patch"), vrstico v razdelek eigen_archive v datoteko tensorflow / workspace.bzl.

Rezultat v datoteki tensorflow / workspace.bzl mora biti takšen:

...
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 = "eigen-eigen-fd6845384b86",
  build_file = clean_dep ("// third_party: eigen.BUILD"),
  patch_file = clean_dep ("// tretji_party: eigen_half.patch"),
)
...

Končano.

9. korak: Konfigurirajte parametre sestavljanja

Prepričajte se, da smo v korenski mapi izvorne kode:

cd C: \ Uporabniki \ amsokol \ Razvoj \ tensorflow-build \ tensorflow

Zaženi konfigurator:

python ./configure.py

Najprej vpraša lokacijo Pythona. Pritisnite Enter, da zapustite privzeto vrednost:

...
Nameščen je bazel 0.17.2.
Navedite lokacijo pythona. [Privzeto je C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Nato se vpraša lokacija poti knjižnice Python. Pritisnite Enter, da zapustite privzeto vrednost:

Traceback (zadnji klic zadnji):
  Datoteka "", vrstica 1, v 
AttributeError: modul „spletna stran“ nima atributa „getitepackages“
Najdene možne poti knjižnice Python:
  C: \ Uporabniki \ amsokol \ tensorflow-v1.11 \ Lib \ site-paketi
Vnesite želeno pot knjižnice Python, ki jo želite uporabiti. Privzeto je [C: \ Uporabniki \ amsokol \ tensorflow-v1.11 \ Lib \ site-package]

Nato se vpraša o podpori nGraph. Ne potrebujemo ga. Pritisnite “n”:

Ali želite zgraditi TensorFlow s podporo nGraph? [y / N]: n
Za TensorFlow ne bo podprta nobena podpora nGraph.

Nato se vpraša o podpori CUDA:

Ali želite zgraditi TensorFlow s podporo CUDA? [y / N]:

Odgovorite z „y“, če boste uporabili pospešek GPU-ja. V nasprotnem primeru pritisnite »n«.

V primeru da za konfigurator CUDA da dodatna vprašanja:
Odgovorite na različico 10.0 kot različica CUDA SDK:
Navedite različico CUDA SDK, ki jo želite uporabiti. [Pustite prazno privzeto CUDA 9.0]: 10.0
Pritisnite Enter, da zapustite privzeto mesto orodja CUDA:
Navedite lokacijo, kjer je nameščen komplet orodij CUDA 10.0. Za podrobnosti glejte README.md. [Privzeto je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Odgovor 7.3.1 kot različica cuDNN:
Navedite različico cuDNN, ki jo želite uporabiti. [Pustite prazno privzeto, da cuDNN 7.0]: 7.3.1
Pritisnite Enter, da zapustite privzeto mesto knjižnice cuDNN:
Navedite mesto, kjer je nameščena knjižnica cuDNN 7. Za podrobnosti glejte README.md. [Privzeto je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Naslednje vprašanje je o računalniških zmogljivostih CUDA, s katerimi lahko gradite. Sposobnost računanja svoje naprave najdete na: https://developer.nvidia.com/cuda-gpus. Imam GTX 1070, zato odgovorim na 6.1:
Navedite seznam zmogljivosti Cuda za računanje, ločenih z vejicami, ki jih želite sestaviti.
Sposobnost za računanje svoje naprave najdete na: https://developer.nvidia.com/cuda-gpus.
Upoštevajte, da vsaka dodatna zmogljivost računa bistveno poveča čas izdelave in binarne velikosti. [Privzeto je: 3,5,7,0]: 6.1

Naslednje vprašanje je postavitev zastav za optimizacijo. Imam procesor Intel 6. procesorja, zato odgovarjam / arch: AVX2:

Navedite optimizacijske zastavice, ki jih želite uporabiti med kompilacijo, ko je podana možnost bazel "--config = opt" [Privzeto je / arch: AVX]: / arch: AVX2

Zadnje vprašanje je o lastnem jeziku. Odgovorite z „y“. Močno zmanjša čas prevajanja.

Bi radi preglasili eigen močan inline za kakšno C ++ kompilacijo, da bi skrajšali čas kompilacije? [Y / n]: ja
Eigen močan inline premočen.

Konfiguracija je končana. Naj gradi.

Korak 10: Sestavite TensorFlow iz virov

Prepričajte se, da smo v korenski mapi izvorne kode:

cd C: \ Uporabniki \ amsokol \ Razvoj \ tensorflow-build \ tensorflow
Gradnja traja dolgo. Toplo priporočam, da izklopite protivirusno programsko opremo, vključno z zaščito v realnem času Windows Defender Antivirus.

Zaženi graditi:

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

Sedite nazaj in se za nekaj časa sprostite.

11. korak: Ustvarite datoteko s kolesi TensorFlow za Python 3.6

Zaženite ukaz in ustvarite datoteko s kolesom Python:

mkdir .. \ ven
kanta za smeti \ tensorflow \ orodja \ pip_package \ build_pip_package .. \ out

Ne uspe:

Obstaja znano vprašanje. Poglejte mapo »bazel-bin \ tensorflow \ tools \ pip_package«. Vsebuje datoteko »simple_console_for_windows.zip« z ničelno dolžino. To je težava. Bazel vsebuje 32-bitni zip pripomoček, ki ne uspe za datoteko 2 GB večjo. Oglejte si povezave za podrobnosti in rešitev:

  • https://github.com/tensorflow/tensorflow/isissue/20332
  • https://stackoverflow.com/questions/52394305/creating-pip-package-for-tensorflow-with-gpu-support-results-in-0-byte-simple-co

Težavo lahko odpravite na naslednji način:

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

Odprite datoteko “simple_console_for_windows.zip-0.params” in odstranite vrstico vsebuje “mnist.zip”:

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / primeri / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / primeri / gan / mnist.zip
...
Pomaga mi. V primeru, da vam to ne pomaga, odstranite druge vrstice z zip datotekami (glejte podrobnosti tukaj). Namen te dejavnosti je narediti dolžino "simple_console_for_windows.zip" manj kot 2 GB.

Izbrišite prazno datoteko »simple_console_for_windows.zip«.

Nato poglejte domačo mapo. Morate videti mapo z imenom, kot je "_bazel_ ". V mojem primeru je "_bazel_amsokol". Vsebuje mapo z datotekami za gradnjo. V mojem primeru je "lx6zoh4k". Nazaj na lupino teka (pravilno glede na imena mape):

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

Ročno ustvarite datoteko “simple_console_for_windows.zip”:

zunanji \ bazel_tools \ orodja \ 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_pac simple_console_for_windows.zip-0.params

Zaženite ukaz in ustvarite datoteko s kolesom Python:

cd C: \ Uporabniki \ amsokol \ Razvoj \ tensorflow-build \ tensorflow
kanta za smeti \ tensorflow \ orodja \ pip_package \ build_pip_package .. \ out

Ustvari datoteko tensorflow-1.11.0-cp36-cp36m-win_amd64.whl v mapi ".. \ out".

12. korak: Namestite datoteko s kolesi TensorFlow za Python 3.6 in preverite rezultat

Zaženite ukaz, da namestite datoteko s kolesom Python:

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

Zapustite imenik »tensorflow« (napake se včasih zgodijo, ko zaženem skripte Python v mapo z izvorno kodo Tensoflow - ne vem razloga):

cd ..

Če želite preveriti tukaj, naložite skript ali kopirajte in prilepite:

uvoz tensorflow kot tf
hello = tf.constant ('Pozdravljeni, TensorFlow!')
seja = tf. seja ()
natisni (session.run (zdravo))

Če sistem odda naslednje: potem je vse v redu:

Pozdravljeni, TensorFlow!

Moj izhod:

Zdaj ste uspešno namestili TensorFlow na sistem Windows.

Sporočite mi v spodnjih komentarjih, če vam je uspelo. Ali če imate kakršne koli napake. Hvala!