[Aktualizácia 1] Ako zostaviť a nainštalovať GPU / CPU TensorFlow pre Windows zo zdrojového kódu pomocou bazel a Python 3.6

Toto je aktualizácia môjho predchádzajúceho príbehu. Čo je tu nové:
- TensorFlow v1.11
- CUDA v10.0
- cuDNN v7.3
Na oficiálnej stránke je sprievodca. Nie je to príliš komplexné, ale niekedy užitočné.
zhrnutie
- Nainštalujte program Git pre Windows
- Nainštalujte Bazel
- Nainštalujte nástroje MSYS2 x64 a nástroje príkazového riadka
- Nainštalujte nástroje Visual Studio 2017 Build Tools vrátane nástrojov Visual Studio 2015 Build Tools
- Nainštalujte Python 3.6 64-bit
- Nainštalujte NVIDIA CUDA 10.0 a cuDNN 7.3 (pre akceleráciu GPU)
- Konfigurovať prostredie zostavenia
- Klonujte zdrojový kód TensorFlow v1.11 a použite povinnú opravu
- Nakonfigurujte parametre zostavenia
- Zostavte TensorFlow zo zdrojov
- Vytvorte súbor kolieska TensorFlow pre Python 3.6
- Nainštalujte súbor kolesa TensorFlow pre Python 3.6 a skontrolujte výsledok
Krok 1: Nainštalujte Git pre Windows
Stiahnite si a nainštalujte Git pre Windows. Beriem to tu. Uistite sa, že cesta k súboru git.exe je pridaná do premennej prostredia% PATH%. Nainštalujem Git na Windows 7
C: \ Bin \ Git
priečinok pre tento tutoriál.
Krok 2: Nainštalujte nástroje MSYS2 x64 a nástroje príkazového riadka
Stiahnite si a nainštalujte 64-bitovú distribúciu tu. Bazel používa na vytváranie zdrojov grep, patch, unzipand iné porty unixových nástrojov. Môžete skúsiť nájsť samostatné binárne súbory pre každý z nich, ale ja radšej používam balík MSYS2. Nainštalujem ho do
C: \ Bin \ msys64
priečinok pre tento tutoriál. Do premennej prostredia% PATH% musíte pridať priečinok s nástrojmi. V mojom prípade je to „C: \ Bin \ msys64 \ usr \ bin“.
Spustite skratku „MSYS2 MinGW 64-bit“ z ponuky Štart. Spustite nasledujúci príkaz na aktualizáciu (ak sa to vyžaduje, reštartujte program „MSYS2 MinGW 64-bit“):
pacman -Syu
Potom spustite:
pacman -Su
Inštalačné nástroje sú potrebné na zostavenie:
pacman -S patch unzip
Zatvorte 64-bitový shell prostredia „MSYS2 MinGW“ príkazom „exit“. Už to viac nepotrebujeme.
Krok 3: Nainštalujte nástroje Visual Studio 2017 Build Tools vrátane nástrojov Visual Studio 2015 Build Tools
Aby sme mohli zostaviť TensorFlow v1.11, musíme nainštalovať sadu nástrojov „VC ++ 2015.3 v14.00 (v140) pre počítače“ z Visual Studio 2017 Build Tools.

Krok 4: Nainštalujte Bazel
Stiahnite si najnovšie Basel tu. Vyhľadajte súbor bazel-
Pridajte BAZEL_SH globálnu premennú prostredia pre bash umiestnenie. Moja cesta je
C: \ Bin \ msys64 \ usr \ bin \ bash.exe
Pridajte globálnu premennú prostredia BAZEL_VC pre umiestnenie súboru nástrojov „VC ++ 2015.3 v14.00 (v140) pre stolné počítače“:
C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC
Krok 5: Nainštalujte Python 3.6 64-bit
TensorFlow nepodporuje Python 3.7, takže musíte nainštalovať verziu 3.6.
Vyzerá to, že produkt TensorFlow v1.11 už nepodporuje zostavovanie systému Anaconda / Miniconda - mám zvláštnu chybu. Preto používam na zostavenie virtuálne prostredie Python.
Python 3.6 je k dispozícii na stiahnutie tu. Nainštalujte ho a pridajte umiestnenie do súboru python.exe do premennej% PATH%.
Krok 6: Nainštalujte NVIDIA CUDA 10.0 a cuDNN 7.3 (pre akceleráciu GPU)
Táto časť je aktuálna, ak máte grafickú kartu NVIDIA, ktorá podporuje CUDA. V opačnom prípade túto časť preskočte.
Ak potrebujete pomoc, prečítajte si podrobnú inštaláciu aplikácie CUDA tu. Tento sprievodca skopírujem a prilepím, ale vystrihnem niektoré podrobnosti.
Prejdite na stránku https://developer.nvidia.com/cuda-downloads a stiahnite si inštalačný program CUDA 10.0 pre Windows [vaša verzia]. Verzia pre mňa je Windows 10.
Nainštalujte ho na predvolené miesto s predvolenými nastaveniami, ale zrušte začiarknutie možnosti integrácie VisualStudio. V prípade potreby aktualizuje váš ovládač GPU a reštartuje sa.
Choďte na spustenie (Win + R) typu cmd
Nasledujúci príkaz skontroluje verziu nvcc a zabezpečí, aby bol nastavený v premennej prostredia cesty.
nvcc - konverzia
Ďalej prejdite na https://developer.nvidia.com/cudnn (požadované členstvo).
Po prihlásení stiahnite nasledovné:
cuDNN v7.3.1 Knižnica pre Windows [vaša verzia] pre mňa Windows 10. Prejdite do sťahovaného priečinka a extrahujte súbor zip.
Prejdite do extrahovaného priečinka a skopírujte všetky súbory a priečinky z priečinka cuda (napr. Bin, include, lib) a vložte ho do priečinka „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0“.
Posledným krokom je pridanie “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” do premennej prostredia% PATH%.
Krok 7: Konfigurujte prostredie zostavenia
Spustite shell VC ++ 2015 pre x64 (skratka „Príkazový riadok natívnych nástrojov VS2015 x64“) v ponuke Štart.
Ďalej musíte vytvoriť, aktivovať a nakonfigurovať prostredie Python. Spustite vo vnútri príkazov shellu „VS2015 x64 Príkazový riadok natívnych nástrojov“ nižšie (správne cesty podľa vašich umiestnení).
inštalácia pip3 -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ scripts \ activate.bat
Po použití príkazov by mal vyzerať váš shell takto:

Nainštalujte povinné balíky Python:
pip3 nainštalujte šesť numpy kolesa
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 - no-deps
Spustite „pip3 list“, aby ste sa uistili, že sú nainštalované povinné balíky:

To je zatiaľ všetko. Nezatvárajte škrupinu.
Krok 8: Klonujte zdrojový kód TensorFlow a použite povinnú opravu
Najprv musíte vybrať priečinok, do ktorého sa má klonovať zdrojový kód TensorFlow. V mojom prípade je to „C: \ Users \ amsokol \ Development \ tensorflow-build“. Späť do shellu a spustiť:
cd C: \ Users \ amsokol \ Development \ tensorflow-build
Klonovať zdrojový kód:
git clone https://github.com/tensorflow/tensorflow
Pokladňa najnovšia verzia 1.11:
cd tensorflow
git checkout v1.11.0
Teraz máme zdroje.
Vo vlastnej knižnici tretích strán je chyba. Pred zostavením ju musíme opraviť.
- Tu si stiahnite opravu a uložte s názvom súboru eigen_half.patch do priečinka Third_party
- Pridajte patch_file = clean_dep (“// tretia_party: eigen_half.patch”), riadok do sekcie eigen_archive do súboru tensorflow / workspace.bzl.
Výsledok v súbore tensorflow / workspace.bzl by mal byť takýto:
... 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 ("// tretia_party: eigen.BUILD"), patch_file = clean_dep ("// tretia_party: eigen_half.patch"), ) ...
Hotový.
Krok 9: Nakonfigurujte parametre zostavenia
Skontrolujte, či sme v koreňovom priečinku zdrojového kódu:
cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Spustiť konfigurátor:
python ./configure.py
Najprv sa pýta na umiestnenie Pythonu. Stlačením klávesu Enter ponecháte predvolenú hodnotu:
... Máte nainštalovaný bazel 0.17.2.
Zadajte umiestnenie pythonu. [Predvolená hodnota je C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:
Potom sa pýta na umiestnenie ciest knižnice Pythonu. Stlačením klávesu Enter ponecháte predvolenú hodnotu:
Traceback (posledný posledný hovor): Súbor "", riadok 1, v AttributeError: modul 'site' nemá žiadny atribút 'getsitepackages' Nájdené možné cesty ku knižnici Python: C: \ Users \ \ amsokol tensorflow-v1.11 \ Lib \ site-balíčky Zadajte požadovanú cestu k knižnici Python, ktorú chcete použiť. Predvolená hodnota je [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]
Potom sa pýta na podporu nGraph. Nepotrebujeme to. Stlačte „n“:
Prajete si postaviť TensorFlow s podporou nGraph? [y / N]: n Pre TensorFlow nebude povolená žiadna podpora nGraph.
Potom sa pýta na podporu CUDA:
Prajete si postaviť TensorFlow s podporou CUDA? [Y / N]:
Ak chcete použiť akceleráciu GPU, odpovedzte „y“. V opačnom prípade stlačte „n“.
V prípade, že konfigurátor Áno pre konfigurátor CUDA kladie ďalšie otázky:
Odpoveď 10.0 ako verzia CUDA SDK:
Zadajte verziu CUDA SDK, ktorú chcete použiť. [Nechajte predvolené nastavenie na CUDA 9.0]: 10.0
Stlačením klávesu Enter opustíte predvolené umiestnenie sady nástrojov CUDA:
Uveďte miesto, kde je nainštalovaná súprava nástrojov CUDA 10.0. Ďalšie podrobnosti nájdete na stránke README.md. [Predvolená hodnota je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Odpoveď 7.3.1 ako verzia cuDNN:
Zadajte verziu cuDNN, ktorú chcete použiť. [Nechajte predvolene prázdne na cuDNN 7.0]: 7.3.1
Stlačením klávesu Enter opustíte predvolené umiestnenie knižnice cuDNN:
Zadajte umiestnenie, kde je nainštalovaná knižnica cuDNN 7. Ďalšie podrobnosti nájdete na stránke README.md. [Predvolená hodnota je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Ďalšia otázka sa týka výpočtových schopností CUDA, s ktorými je možné stavať. Výpočtovú schopnosť zariadenia nájdete na adrese: https://developer.nvidia.com/cuda-gpus. Mám GTX 1070, preto odpoviem 6.1:
Zadajte zoznam výpočtových schopností Cuda oddelených čiarkami, s ktorými chcete stavať. Výpočtovú schopnosť zariadenia nájdete na adrese: https://developer.nvidia.com/cuda-gpus. Upozorňujeme, že každá ďalšia možnosť výpočtu výrazne zvyšuje čas zostavenia a veľkosť binárnych súborov. [Predvolená hodnota je: 3.5,7.0]: 6.1
Ďalšou otázkou je nastavenie príznakov optimalizácie. Mám procesor Intel šiestej generácie, ktorý je dôvod, prečo odpovedám / archivujem: AVX2:
Zadajte príznaky optimalizácie, ktoré sa majú použiť počas kompilácie, keď je zadaná voľba Bazel "--config = opt" [Predvolená hodnota je / arch: AVX]: / arch: AVX2
Posledná otázka sa týka vlastného jazyka. Odpoveď „y“. Výrazne znižuje čas kompilácie.
Chceli by ste potlačiť vlastné silné inline pre niektoré kompilácie C ++, aby ste skrátili čas kompilácie? [Á / N]: y Vlastné inline potlačené.
Konfigurácia bola dokončená. Umožňuje stavať.
Krok 10: Zostavte TensorFlow zo zdrojov
Skontrolujte, či sme v koreňovom priečinku zdrojového kódu:
cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Zostavenie trvá dlho. Dôrazne odporúčam vypnúť antivírusový softvér vrátane antivírusovej ochrany programu Windows Defender v reálnom čase.
Spustiť zostavenie:
build bazelu --config = opt // tensorflow / tools / pip_package: build_pip_package
Posaďte sa a relaxujte na chvíľu.
Krok 11: Vytvorte súbor kolieska TensorFlow pre Python 3.6
Spustite príkaz na vytvorenie súboru kolesa Python:
mkdir .. \ von
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
Zlyhá:

Existuje známy problém. Pozrite sa do priečinka „bazel-bin \ tensorflow \ tools \ pip_package“. Obsahuje súbor „simple_console_for_windows.zip“ s nulovou dĺžkou. Toto je problém. Bazel obsahuje utilitu pre 32-bitový zips, ktorá zlyhá pre väčší súbor 2 GB. Podrobnosti a riešenie nájdete na odkazoch:
- 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
Tento problém môžete vyriešiť pomocou nasledujúcich krokov:
cd. \ bazel-bin \ tensorflow \ tools \ pip_package
Otvorte súbor „simple_console_for_windows.zip-0.params“ a riadok na odstránenie obsahuje „mnist.zip“:
...
runfiles / org_tensorflow / tensorflow / contrib / túžia / python / príklady / gan / mnist.zip = Bazel-out / x64_windows-opt / bin / tensorflow / contrib / túžia / python / príklady / gan / mnist.zip
...
Pomáha mi to. V prípade, že vám to nepomôže, stačí odstrániť ďalšie riadky so súbormi ZIP (podrobnosti nájdete tu). Účelom tejto aktivity je zväčšiť dĺžku „simple_console_for_windows.zip“ menej ako 2 GB.
Odstráňte prázdny súbor „simple_console_for_windows.zip“.
Potom sa pozrite na domovský priečinok. Musíte vidieť priečinok s názvom ako „_bazel_
cd C: \ Users \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow
Ručne vytvorte súbor „simple_console_for_windows.zip“:
external \ 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
Spustite príkaz na vytvorenie súboru kolesa Python:
cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out
Vytvára súbor tensorflow-1.11.0-cp36-cp36m-win_amd64.whl v priečinku „.. \ out“.
Krok 12: Nainštalujte súbor kolesa TensorFlow pre Python 3.6 a skontrolujte výsledok
Spustite príkaz na inštaláciu súboru disku Python:
inštalácia pip3 .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl
Zanechajte adresár „tensorflow“ (chyby sa niekedy vyskytnú, keď spustím skripty Pythonu v priečinku zdrojového kódu Tensoflow - neviem dôvod):
cd ..
Ak chcete skontrolovať skript sťahovania tu alebo skopírujte a vložte a spustite:
import tensorflow ako tf ahoj = tf.constant ('Ahoj, TensorFlow!') session = tf.Session () print (session.run (ahoj))
Ak systém vydá nasledujúce, všetko je v poriadku:
Dobrý deň, TensorFlow!
Môj výstup:

Teraz ste úspešne nainštalovali TensorFlow na počítač so systémom Windows.
Ak to pre vás fungovalo, dajte mi vedieť v komentároch nižšie. Alebo ak máte nejaké chyby. Vďaka!