[Aktualizace 1] Jak vytvořit a nainstalovat GPU / CPU TensorFlow pro Windows ze zdrojového kódu pomocí Bazel a Python 3.6

Toto je aktualizace pro můj předchozí příběh. Co je nového zde:

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

Na oficiálních stránkách je průvodce. Není to příliš komplexní, ale někdy užitečné.

souhrn

  1. Nainstalujte Git pro Windows
  2. Nainstalujte Bazel
  3. Nainstalujte nástroje MSYS2 x64 a nástroje příkazového řádku
  4. Nainstalujte Visual Studio 2017 Build Tools včetně Visual Studio 2015 Build Tools
  5. Nainstalujte Python 3.6 64 bitů
  6. Nainstalujte NVIDIA CUDA 10.0 a cuDNN 7.3 (pro akceleraci GPU)
  7. Konfigurovat prostředí sestavení
  8. Klonujte zdrojový kód TensorFlow v1.11 a použijte povinnou opravu
  9. Nakonfigurujte parametry sestavení
  10. Sestavte TensorFlow ze zdrojů
  11. Vytvořte soubor kola TensorFlow pro Python 3.6
  12. Nainstalujte soubor kola TensorFlow pro Python 3.6 a zkontrolujte výsledek

Krok 1: Nainstalujte Git pro Windows

Stáhněte a nainstalujte Git pro Windows. Beru to sem. Ujistěte se, že cesta k git.exe je přidána do proměnné prostředí% PATH%. Nainstaluji Git na

C: \ Bin \ Git

Složka pro tento tutoriál.

Krok 2: Nainstalujte nástroje MSYS2 x64 a nástroje příkazového řádku

Stáhněte si a nainstalujte 64bitovou distribuci zde. Bazel používá k vytváření zdrojů grep, patch, unzipand jiné porty unixových nástrojů. Můžete se pokusit najít samostatné binární soubory pro každý z nich, ale já raději používám balík MSYS2. Nainstaloval jsem to do

C: \ Bin \ msys64

Složka pro tento tutoriál. Do proměnné prostředí% PATH% musíte přidat složku s nástroji. V mém případě je to „C: \ Bin \ msys64 \ usr \ bin“.

Spusťte zástupce „MSYS2 MinGW 64-bit“ z nabídky Start. Spusťte následující příkaz k aktualizaci (pokud se zobrazí dotaz, restartujte „64bitový bit MSYS2 MinGW“):

pacman -Syu

Pak spusťte:

pacman -Su

Pro sestavení jsou nutné instalační nástroje:

pacman -S patch rozbalte

Uzavřete prostředí „MSYS2 MinGW 64-bit“ shell příkazem „exit“. Už to nepotřebujeme.

Krok 3: Nainstalujte Visual Studio 2017 Build Tools včetně Visual Studio 2015 Build Tools

Aby bylo možné sestavit TensorFlow v1.11, musíme nainstalovat sadu nástrojů „VC ++ 2015.3 v14.00 (v140) pro stolní počítače“ z Visual Studio 2017 Build Tools:

Krok 4: Nainstalujte Bazel

Stáhněte si nejnovější Basel zde. Vyhledejte soubor bazel- -windows-x86_64.exe. Testoval jsem tento tutoriál s bazelem 0.17.2. Přejmenujte binární soubor na bazel.exe a přesuňte jej do adresáře v% PATH%, takže můžete spustit Bazel zadáním bazel do libovolného adresáře. Podrobnosti o instalaci Bazel pro Windows x64 v případě problémů.

Přidejte BAZEL_SH globální proměnnou prostředí pro umístění bash. Moje cesta je

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

Přidejte globální proměnnou prostředí BAZEL_VC pro umístění sady nástrojů „VC ++ 2015.3 v14.00 (v140) pro stolní počítače“:

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC

Krok 5: Nainstalujte Python 3.6 64bitů

TensorFlow nepodporuje Python 3.7, takže musíte nainstalovat verzi 3.6.
Vypadá to, že TensorFlow v1.11 nepodporuje Anaconda / Miniconda pro další budování - dostávám podivnou chybu. Proto k sestavení používám virtuální prostředí Python.

Python 3.6 je k dispozici ke stažení zde. Nainstalujte jej a přidejte umístění do python.exe do proměnné% PATH%.

Krok 6: Nainstalujte NVIDIA CUDA 10.0 a cuDNN 7.3 (pro akceleraci GPU)

Tato část je aktuální, pokud máte grafickou kartu NVIDIA, která podporuje CUDA. Jinak tuto sekci přeskočte.
Pokud potřebujete pomoc, podívejte se sem krok za krokem na instalaci CUDA. Tento průvodce zkopíruji a vložím, ale vyjmu některé podrobnosti.

Přejděte na https://developer.nvidia.com/cuda-downloads a stáhněte si CUDA 10.0 Installer pro Windows [vaše verze]. Pro mě je verze Windows 10.

Nainstalujte jej ve výchozím umístění s výchozím nastavením, ale zrušte zaškrtnutí možnosti integrace VisualStudio. V případě potřeby aktualizuje váš ovladač GPU a restartuje se.

Přejít ke spuštění (Win + R) typu cmd

Následující příkaz zkontroluje verzi nvcc a zajistí, aby byl nastaven v proměnné prostředí cesty.

nvcc - inverze

Další odkaz https://developer.nvidia.com/cudnn (je vyžadováno členství).

Po přihlášení si stáhněte následující:

cuDNN v7.3.1 Knihovna pro Windows [vaše verze] pro mě Windows 10. Přejít do stažené složky a extrahovat zip soubor.

Jděte dovnitř extrahované složky a zkopírujte všechny soubory a složky ze složky cuda (např. Bin, include, lib) a vložte do složky „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0“.

Posledním krokem je přidání „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” do proměnné prostředí% PATH%.

Krok 7: Konfigurace prostředí sestavení

Spusťte prostředí VC ++ 2015 pro x64 (zástupce „Příkazový řádek nativních nástrojů VS2015 x64“) z nabídky Start.

Dále musíte vytvořit, aktivovat a nakonfigurovat prostředí Python. Spusťte uvnitř příkazů shellu „VS2015 x64 Native Tools Command Prompt“ níže (správné cesty podle umístění).

pip3 install -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activ.bat

Vaše skořápka by měla vypadat, že po použití příkazů:

Nainstalujte povinné balíčky Pythonu:

pip3 nainstalovat šest numpy kola
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 --no-deps

Spusťte „pip3 list“, abyste se ujistili, že jsou nainstalovány povinné balíčky:

To je prozatím vše. Nezavírejte skořápku.

Krok 8: Klonujte zdrojový kód TensorFlow a použijte povinnou opravu

Nejprve musíte vybrat složku, do které se má klonovat zdrojový kód TensorFlow. V mém případě je to „C: \ Users \ amsokol \ Development \ tensorflow-build“. Zpět do shellu a spustit:

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

Klonovat zdrojový kód:

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

Pokladna nejnovější verze 1.11:

cd tensorflow
git checkout v1.11.0

Nyní máme zdroje.

V vlastní knihovně třetích stran je chyba. Musíme ji před sestavením opravit.
  • Zde si stáhněte opravu a uložte s názvem souboru eigen_half.patch do složky třetí_party
  • Přidejte patch_file = clean_dep (“// third_party: eigen_half.patch”), řádek do sekce eigen_archive do souboru tensorflow / workspace.bzl.

Výsledek v souboru tensorflow / workspace.bzl by měl být následující:

...
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"),
)
...

Hotovo.

Krok 9: Konfigurace parametrů sestavení

Ujistěte se, že jsme v kořenové složce zdrojového kódu:

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

Spustit konfigurátor:

python ./configure.py

Nejprve se zeptá umístění Pythonu. Stisknutím klávesy Enter opustíte výchozí hodnotu:

...
Máte nainstalován bazel 0.17.2.
Zadejte prosím umístění pythonu. [Výchozí hodnota je C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Poté se zeptá na umístění cest knihovny Python. Stisknutím klávesy Enter opustíte výchozí hodnotu:

Traceback (poslední poslední hovor):
  Soubor "", řádek 1, v 
AttributeError: modul 'site' nemá žádný atribut 'getsitepackages'
Nalezené možné cesty knihovny Python:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-balíčky
Zadejte prosím požadovanou cestu knihovny Python, kterou chcete použít. Výchozí nastavení je [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

Poté se zeptá na podporu nGraph. Nepotřebujeme to. Stiskněte „n“:

Přejete si postavit TensorFlow s podporou nGraph? [y / N]: n
Pro TensorFlow nebude povolena žádná podpora nGraph.

Poté se zeptá na podporu CUDA:

Přejete si postavit TensorFlow s podporou CUDA? [y / N]:

Odpovězte „y“, pokud chcete použít GPU akceleraci. Jinak stiskněte „n“.

V případě, že ano pro konfigurátor CUDA, položí další otázky:
Odpověď 10.0 jako verze CUDA SDK:
Zadejte prosím verzi CUDA SDK, kterou chcete použít. [Ponechat prázdné výchozí nastavení na CUDA 9.0]: 10.0
Stisknutím klávesy Enter opustíte výchozí umístění sady nástrojů CUDA:
Určete umístění, kde je nainstalován soubor nástrojů CUDA 10.0. Další podrobnosti viz README.md. [Výchozí nastavení je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Odpověď 7.3.1 jako verze cuDNN:
Zadejte verzi cuDNN, kterou chcete použít. [Ponechat prázdné výchozí nastavení na cuDNN 7.0]: 7.3.1
Stisknutím klávesy Enter opustíte výchozí umístění knihovny cuDNN:
Zadejte umístění, kde je nainstalovaná knihovna cuDNN 7. Další podrobnosti viz README.md. [Výchozí nastavení je C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Další otázka se týká výpočetních schopností CUDA, se kterými lze stavět. Výpočetní kapacitu svého zařízení najdete na adrese: https://developer.nvidia.com/cuda-gpus. Mám GTX 1070, proto odpovím 6.1:
Zadejte seznam výpočetních schopností Cuda oddělených čárkami, se kterými chcete stavět.
Výpočetní kapacitu svého zařízení najdete na adrese: https://developer.nvidia.com/cuda-gpus.
Vezměte prosím na vědomí, že každá další výpočetní kapacita výrazně zvyšuje čas sestavení a velikost binární. [Výchozí hodnota je: 3.5,7.0]: 6.1

Další otázkou je nastavení příznaků optimalizace. Mám procesor Intel 6. generace, proto odpovídám / archivuji: AVX2:

Určete příznaky optimalizace, které se mají použít při kompilaci, když je zadána možnost Bazel "--config = opt" [Výchozí hodnota je / arch: AVX]: / arch: AVX2

Poslední otázka se týká vlastního. Odpověď “y”. Výrazně snižuje čas kompilace.

Chtěli byste potlačit vlastní silnou inline pro některé kompilace C ++, abyste zkrátili dobu kompilace? [Y / n]: y
Vlastní inline potlačeno.

Konfigurace dokončena. Umožňuje stavět.

Krok 10: Sestavte TensorFlow ze zdrojů

Ujistěte se, že jsme v kořenové složce zdrojového kódu:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Sestavení trvá dlouho. Důrazně doporučujeme vypnout antivirový software včetně antivirové ochrany Windows Defender v reálném čase.

Spustit sestavení:

sestavení bazelu --config = opt // tensorflow / tools / pip_package: build_pip_package

Posaďte se a relaxujte na chvíli.

Krok 11: Vytvořte soubor kola TensorFlow pro Python 3.6

Spusťte příkaz k vytvoření souboru kola Python:

mkdir .. \ out
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Selže:

Existuje známý problém. Podívejte se na složku „bazel-bin \ tensorflow \ tools \ pip_package“. Obsahuje soubor „simple_console_for_windows.zip“ s nulovou délkou. To je ten problém. Bazel obsahuje utilitu pro 32bitový zip, který selže pro větší soubor 2 GB. Podrobnosti a řešení naleznete na odkazech:

  • 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

Chcete-li problém vyřešit, postupujte takto:

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

Otevřete soubor „simple_console_for_windows.zip-0.params“ a řádek pro odstranění obsahuje „mnist.zip“:

...
runfiles / org_tensorflow / tensorflow / Contrib / eager / python / příklady / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / Contrib / eager / python / příklady / gan / mnist.zip
...
Pomáhá mi to. V případě, že vám to nepomůže, stačí odstranit další řádky se soubory ZIP (viz podrobnosti zde). Účelem této aktivity je zkrácení délky „simple_console_for_windows.zip“ na méně než 2 GB.

Odstraňte prázdný soubor „simple_console_for_windows.zip“.

Další pohled na domovskou složku. Musíte vidět složku s názvem jako „_bazel_ “. V mém případě je to „_bazel_amsokol“. Obsahuje složku se soubory sestavení. V mém případě je to „lx6zoh4k“. Zpět na spuštění shellu (správné podle názvů složek):

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

Ručně vytvořte soubor „simple_console_for_windows.zip“:

externí \ 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

Spusťte příkaz k vytvoření souboru kola Python:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Vytvoří soubor tensorflow-1.11.0-cp36-cp36m-win_amd64.whl ve složce „.. \ out“.

Krok 12: Nainstalujte soubor kola TensorFlow pro Python 3.6 a zkontrolujte výsledek

Spusťte příkaz k instalaci souboru kola Python:

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

Opusťte adresář „tensorflow“ (k chybám dochází někdy, když spustím skripty Pythonu ve složce zdrojového kódu Tensoflow - nevím důvod):

cd ..

Chcete-li provést kontrolu skriptu ke stažení zde nebo zkopírovat a vložit a spustit:

import tensorflow jako tf
hello = tf.constant ('Ahoj, TensorFlow!')
session = tf.Session ()
tisk (session.run (ahoj))

Pokud systém vydá následující, pak je vše v pořádku:

Dobrý den, TensorFlow!

Můj výstup:

Nyní jste úspěšně nainstalovali TensorFlow do počítače se systémem Windows.

Pokud to pro vás fungovalo, dejte mi vědět v komentářích níže. Nebo pokud máte nějaké chyby. Dík!