[Ažuriranje 1] Kako izraditi i instalirati TensorFlow GPU / CPU za Windows iz izvornog koda pomoću bazel i Python 3.6

Ovo je ažuriranje za moju prethodnu priču. Što je ovdje novo:

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

Vodič postoji na službenim stranicama. Ponekad nije vrlo opsežan, ali je koristan.

Sažetak

  1. Instalirajte Git za Windows
  2. Instalirajte Bazel
  3. Instalirajte alate MSYS2 x64 i naredbenog retka
  4. Instalirajte Visual Studio 2017 alate za izgradnju, uključujući Visual Studio 2015 Build Tools
  5. Instalirajte Python 3.6 64-bita
  6. Instalirajte NVIDIA CUDA 10.0 i cuDNN 7.3 (za ubrzanje GPU-a)
  7. Konfiguriranje okruženja za izgradnju
  8. Klonirajte TensorFlow v1.11 izvorni kod i primijenite obaveznu zakrpu
  9. Konfiguriranje parametara izrade
  10. Izradite TensorFlow iz izvora
  11. Napravite datoteku s kotačima TensorFlow za Python 3.6
  12. Instalirajte datoteku s kotačima TensorFlow za Python 3.6 i provjerite rezultat

1. korak: instalirajte Git za Windows

Preuzmite i instalirajte Git za Windows. Uzimam ovdje. Obavezno dodajte put do git.exe u varijablu okruženja% PATH%. Instaliram Git na

C: \ Bin \ Git

mapa za ovaj vodič.

Korak 2: Instalirajte alate MSYS2 x64 i naredbenog retka

Ovdje preuzmite i instalirajte 64-bitnu distribuciju. Bazel koristi grep, patch, raspakiranje i ostale portove Unix-alata za izgradnju izvora. Možete pokušati pronaći samostalne binarne datoteke za svaki od njih, ali ja radije koristim MSYS2 paket. Instaliram ga na

C: \ bin \ msys64

mapa za ovaj vodič. Morate dodati mapu s alatima u varijablu okruženja% PATH%. U mom slučaju to je "C: \ Bin \ msys64 \ usr \ bin".

Pokrenite "MSYS2 MinGW 64-bit" prečac iz izbornika Start. Pokrenite sljedeću naredbu za ažuriranje (ponovo pokrenite "MSYS2 MinGW 64-bitni" ako to zatraži):

pacman -Syu

Zatim pokrenite:

pacman -Su

Instalirajte alate potrebne za izgradnju:

pacman -S zakrpa unzip

Zatvorite "MSYS2 MinGW 64-bitnu" ljusku naredbom "exit". Ne treba nam više.

Korak 3: Instalirajte alate za izgradnju Visual Studio 2017, uključujući alate za izgradnju Visual Studio 2015

Moramo instalirati skup alata "VC ++ 2015.3 v14.00 (v140) za radnu površinu" iz Visual Studio 2017 Build Tools da bismo stvorili TensorFlow v1.11:

Korak 4: Instalirajte Bazel

Ovdje preuzmite najnoviji Basel. Potražite datoteku bazel- -windows-x86_64.exe. Isprobao sam ovaj udžbenik s bazel 0,17.2. Preimenujte binarnu datoteku u bazel.exe i premjestite je u mapu na% PATH%, tako da možete pokrenuti Bazel ako upišete bazel u bilo koji direktorij. Pogledajte detalje o Bazel instalaciji za Windows x64 u slučaju problema.

Dodajte BAZEL_SH globalnu varijablu okruženja za bash lokaciju. Moj je put

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

Dodajte BAZEL_VC globalnu varijablu okruženja za „VC ++ 2015.3 v14.00 (v140) skup alata za radnu površinu“ mjesto lanca alata:

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

Korak 5: Instalirajte Python 3.6 64-bita

TensorFlow ne podržava Python 3.7 pa morate instalirati verziju 3.6.
Čini se da TensorFlow v1.11 više ne podržava Anaconda / Miniconda za izradu - shvaćam čudnu pogrešku. Zato za izradu koristim virtualno okruženje Python-a.

Python 3.6 dostupan je za preuzimanje ovdje. Instalirajte ga i dodajte lokaciju python.exe varijabli% PATH%.

Korak 6: Instalirajte NVIDIA CUDA 10.0 i cuDNN 7.3 (za ubrzanje GPU-a)

Ovaj je odjeljak aktivan ako imate NVIDIA grafičku karticu koja podržava CUDA. U suprotnom preskočite ovaj odjeljak.
Pogledajte korak po korak instalacija CUDA ako vam je potrebna pomoć. Kopiram i zalijepim ovaj vodič, ali izrezujem neke detalje.

Idite na https://developer.nvidia.com/cuda-downloads i preuzmite CUDA 10.0 Installer za Windows [vaša verzija]. Za mene je verzija Windows 10.

Instalirajte je na zadano mjesto sa zadanim postavkama, ali poništite mogućnost integracije VisualStudio. Ažurirat će vaš GPU pogonitelj ako je potrebno i ponovno pokrenite.

Idite pokrenuti (Win + R) tip cmd

Sljedeća naredba provjerit će verziju nvcc i osigurati da je postavljena u varijabli okruženja putanje.

nvcc - pretvaranje

Sljedeće idite na https://developer.nvidia.com/cudnn (potrebno je članstvo).

Nakon prijave preuzmite sljedeće:

cuDNN v7.3.1 Biblioteka za Windows [vaša verzija] za mene Windows 10. Idite preuzeti mapu i ekstrahirati zip datoteku.

Uđite u izvučenu mapu i kopirajte sve datoteke i mape iz cuda mape (npr. Bin, include, lib) i zalijepite na "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0".

Završni korak ovdje je dodavanje „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64“ u varijabli okruženja% PATH%.

Korak 7: Konfiguriranje okruženja za izgradnju

Pokrenite ljusku VC ++ 2015 za x64 (prečac „VS2015 x64 Native Tools Command Prompt“) iz izbornika Start.

Zatim morate kreirati, aktivirati i konfigurirati Python okruženje. Izvršite unutar naredbe ljuske "VS2015 x64 Native Tools Command Prompt" (ispravite putanje prema vašim lokacijama).

pip3 instalirati -U virtualenv
virtualenv - system-site-paketi C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ skripte \ activate.bat

Vaša bi ljuska trebala izgledati tako nakon primjene naredbi:

Instalirajte obavezne Python pakete:

pip3 ugraditi šest prigušeni kotač
pip3 instalirati keras_applications == 1.0.5 --no-deps
pip3 instalirati keras_preprocessing == 1.0.3 - no-deps

Pokrenite "pip3 list" da biste osigurali instaliranje obaveznih paketa:

To je sve za sada. Ne zatvarajte školjku.

Korak 8: Klonirajte TensorFlow izvorni kod i primijenite obaveznu zakrpu

Prije svega morate odabrati mapu u kojoj ćete klonirati TensorFlow izvorni kod. U mom slučaju to je "C: \ Users \ amsokol \ Development \ tensorflow-build". Natrag do ljuske i pokrenite:

cd C: \ Users \ amsokol \ Development \ tensorflow-build

Klonirajte izvorni kod:

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

Najnovija verzija od 1.11:

cd tensorflow
git checkout v1.11.0

Sada imamo izvore.

U knjižnici treće strane nalazi se BUG. Moramo to popraviti prije izrade.
  • Ovdje preuzmite zakrpu i spremite s imenom datoteke eigen_half.patch u mapu Third_party
  • Dodajte patch_file = clean_dep ("// Third_party: eigen_half.patch"), redak u eigen_archive odjeljak u datoteku tensorflow / workspace.bzl.

Rezultat u datoteci tensorflow / workspace.bzl trebao bi biti ovako:

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

Gotovo.

Korak 9: Konfiguriranje parametara izrade

Osigurajte da se nalazimo u korijenskoj mapi izvornog koda:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow

Pokrenite konfigurator:

python ./configure.py

Prvo pita lokaciju Pythona. Pritisnite Enter da biste napustili zadanu vrijednost:

...
Instalirani ste bazel 0.17.2.
Navedite lokaciju pythona. [Zadana vrijednost je C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Tada se traži mjesto Python knjižnice staze. Pritisnite Enter da biste napustili zadanu vrijednost:

Traceback (najnoviji zadnji poziv):
  Datoteka "", redak 1, u 
AttributeError: modul 'web stranica' nema atribut 'getitepackages'
Pronađeni mogući putovi knjižnice Python:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ stranice-paketi
Unesite željeni put knjižnice Python koji želite koristiti. Zadano je [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-пакеci]

Zatim se pita o podršci nGraph. Ne trebaju nam. Pritisnite "n":

Želite li izgraditi TensorFlow uz podršku nGraph? [y / N]: n
Neće biti omogućena podrška nGraph za TensorFlow.

Zatim se pita o podršci za CUDA:

Želite li izgraditi TensorFlow uz podršku CUDA-e? [Y / N]:

Odgovorite "y" ako želite koristiti GPU ubrzanje. U suprotnom pritisnite "n".

U slučaju Da za CUDA konfigurator postavlja dodatna pitanja:
Odgovorite 10.0 kao verzija CUDA SDK:
Navedite verziju CUDA SDK koju želite koristiti. [Pustite prazno prema zadanom za CUDA 9.0]: 10.0
Pritisnite Enter da biste napustili zadanu lokaciju alata CUDA:
Navedite lokaciju na kojoj je instaliran alat CUDA 10.0. Pogledajte README.md za više detalja. [Zadano je C: / programske datoteke / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Odgovor 7.3.1 kao verzija cuDNN:
Navedite verziju cuDNN koju želite koristiti. [Ostavite prazno zadano do cuDNN 7.0]: 7.3.1
Pritisnite Enter da biste napustili zadanu lokaciju knjižnice cuDNN:
Navedite lokaciju na kojoj je instalirana knjižnica cuDNN 7. Pogledajte README.md za više detalja. [Zadano je C: / programske datoteke / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Sljedeće je pitanje o CUDA računalnim mogućnostima za izgradnju. Sposobnost računanja svog uređaja možete pronaći na: https://developer.nvidia.com/cuda-gpus. Imam GTX 1070 i zato odgovaram 6.1:
Navedite popis mogućnosti Cuda računanja razdvojenih zarezima koje želite graditi.
Sposobnost računanja svog uređaja možete pronaći na: https://developer.nvidia.com/cuda-gpus.
Imajte na umu da svaka dodatna mogućnost izračuna značajno povećava vaše vrijeme izrade i binarnu veličinu. [Zadano je: 3,5,7,0]: 6.1

Sljedeće je pitanje postaviti zastave za optimizaciju. Imam Intel procesor 6. generacije i zato odgovaram / slažem: AVX2:

Molimo navedite zastavice za optimizaciju koje će se koristiti tijekom kompilacije kada je navedena opcija bazel "--config = opt" [Zadana je / arch: AVX]: / arch: AVX2

Posljednje pitanje je o eigenu. Odgovorite "y". Dramatično smanjuje vrijeme sastavljanja.

Želite li nadjačati svojstveni jak inline za neku C ++ kompilaciju kako biste smanjili vrijeme kompilacije? [Y / n]: y
Eigen je snažan inline.

Konfiguracija je dovršena. Neka gradi.

Korak 10: Izradite TensorFlow iz izvora

Osigurajte da se nalazimo u korijenskoj mapi izvornog koda:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Izrada traje dugo vremena. Toplo preporučujem isključivanje antivirusnog softvera, uključujući Windows Defender Antivirus zaštitu u stvarnom vremenu.

Pokreni izgradnju:

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

Odmarajte se i opustite se neko vrijeme.

Korak 11: Stvorite datoteku s kotačima TensorFlow za Python 3.6

Pokrenite naredbu za stvaranje datoteke Python wheel:

mkdir .. \ out
kanta za smeće \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Ne uspijeva:

Poznato je pitanje. Pogledajte mapu kante za smeće \ tensorflow \ tools \ pip_package ". Sadrži datoteku "simple_console_for_windows.zip" nulte duljine. Ovo je problem. Bazel sadrži 32-bitni uslužni program zip koji ne uspijeva za datoteku 2 GB veću. Pogledajte veze za detalje i rješenje:

  • 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

Postoje koraci za rješavanje problema:

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

Otvorite datoteku "simple_console_for_windows.zip-0.params" i uklonite redak sadrži "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / Doprinos / žele / python / primjera / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / Doprinos / žele / python / primjera / gan / mnist.zip
...
Pomaže mi. U slučaju da vam to ne pomaže jednostavno uklonite ostale retke sa zip datotekama (detalje pogledajte ovdje). Svrha ove aktivnosti je stvoriti "simple_console_for_windows.zip" duljine manju od 2 GB.

Izbrišite praznu datoteku „simple_console_for_windows.zip“.

Sljedeći pogled na svoju početnu mapu. Morate vidjeti mapu s nazivom poput "_bazel_ ". U mom slučaju to je "_bazel_amsokol". Sadrži mapu s datotekama gradnje. U mom slučaju to je "lx6zoh4k". Natrag na ljusku pokretanja (ispravite prema imenima mape):

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

Ručno kreirajte datoteku „simple_console_for_windows.zip“:

vanjski \ 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_pac simple_console_for_windows.zip-0.params

Pokrenite naredbu za stvaranje datoteke Python wheel:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
kanta za smeće \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Stvara datoteku tensorflow-1.11.0-cp36-cp36m-win_amd64.whl u mapi ".. \ out".

12. korak: Instalirajte datoteku s kotačima TensorFlow za Python 3.6 i provjerite rezultat

Pokrenite naredbu za instaliranje datoteke Python wheel:

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

Ostavite direktorij "tensorflow" (pogreške se ponekad dogode kada pokrenem Python skripte unutar mape izvornog koda Tensoflow - ne znam razlog):

cd ..

Da biste provjerili ovdje preuzmi skriptu ili kopiraj i zalijepi:

uvoz tensorflow kao tf
hello = tf.constant ('Zdravo, TensorFlow!')
session = tf.Session ()
ispis (session.run (pozdrav))

Ako sustav proizvodi sljedeće, tada je sve u redu:

Pozdrav, TensorFlow!

Moj izlaz:

Sada ste uspješno instalirali TensorFlow na Windows stroj.

Javite mi u komentarima u nastavku ako je to radilo za vas. Ili ako ste pogriješili. Hvala!