[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

  1. Nainštalujte program Git pre Windows
  2. Nainštalujte Bazel
  3. Nainštalujte nástroje MSYS2 x64 a nástroje príkazového riadka
  4. Nainštalujte nástroje Visual Studio 2017 Build Tools vrátane nástrojov Visual Studio 2015 Build Tools
  5. Nainštalujte Python 3.6 64-bit
  6. Nainštalujte NVIDIA CUDA 10.0 a cuDNN 7.3 (pre akceleráciu GPU)
  7. Konfigurovať prostredie zostavenia
  8. Klonujte zdrojový kód TensorFlow v1.11 a použite povinnú opravu
  9. Nakonfigurujte parametre zostavenia
  10. Zostavte TensorFlow zo zdrojov
  11. Vytvorte súbor kolieska TensorFlow pre Python 3.6
  12. 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- -windows-x86_64.exe. Testoval som tento tutoriál s bazelom 0.17.2. Premenujte binárny súbor na bazel.exe a presuňte ho do adresára na vašom% PATH%, takže môžete spustiť Bazel zadaním bazel do ľubovoľného adresára. Prečítajte si podrobnosti o inštalácii Bazel pre Windows x64 v prípade problémov.

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_ “. V mojom prípade je to „_bazel_amsokol“. Obsahuje priečinok so zostavenými súbormi. V mojom prípade je to „lx6zoh4k“. Späť na spustenie shellu (správne podľa názvov priečinkov):

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!