[Uppdatering 1] Hur man bygger och installerar TensorFlow GPU / CPU för Windows från källkod med hjälp av bazel och Python 3.6

Det här är en uppdatering för min tidigare historia. Vad är nytt här:

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

Det finns guide på officiell webbplats. Det är inte särskilt omfattande men ibland användbart.

Sammanfattning

  1. Installera Git för Windows
  2. Installera Bazel
  3. Installera MSYS2 x64 och kommandoradsverktyg
  4. Installera Visual Studio 2017 Build Tools inklusive Visual Studio 2015 Build Tools
  5. Installera Python 3.6 64-bitar
  6. Installera NVIDIA CUDA 10.0 och cuDNN 7.3 (för GPU-acceleration)
  7. Konfigurera byggmiljö
  8. Klon TensorFlow v1.11 källkod och applicera obligatorisk patch
  9. Konfigurera byggparametrar
  10. Bygg TensorFlow från källor
  11. Skapa TensorFlow-hjulfil för Python 3.6
  12. Installera TensorFlow-hjulfilen för Python 3.6 och kontrollera resultatet

Steg 1: Installera Git för Windows

Ladda ner och installera Git för Windows. Jag tar det här. Se till att sökvägen till git.exe läggs till i miljövariabeln% PATH%. Jag installerar Git till

C: \ Bin \ Git

mapp för den här självstudien.

Steg 2: Installera MSYS2 x64 och kommandoradsverktyg

Ladda ner och installera 64-bitars distribution här. Bazel använder grep, patch, unzipand andra portar med Unix-verktyg för att bygga källor. Du kan försöka hitta fristående binärer för var och en av dem men jag föredrar att använda MSYS2-paket. Jag installerar det på

C: \ Bin \ msys64

mapp för den här självstudien. Du måste lägga till mapp med verktyg till% PATH% miljövariabel. Det är “C: \ Bin \ msys64 \ usr \ bin” i mitt fall.

Starta genvägen "MSYS2 MinGW 64-bit" från Start-menyn. Kör följande kommando för att uppdatera (starta om "MSYS2 MinGW 64-bitars" om det frågar):

pacman -Syu

Kör sedan:

pacman -Su

Installationsverktyg är nödvändiga för att bygga:

pacman -S patch unzip

Stäng "MSYS2 MinGW 64-bitars" -skal med "exit" -kommandot. Vi behöver det inte längre.

Steg 3: Installera Visual Studio 2017 Build Tools inklusive Visual Studio 2015 Build Tools

Vi måste installera “VC ++ 2015.3 v14.00 (v140) toolset for desktop” från Visual Studio 2017 Build Tools för att bygga TensorFlow v1.11:

Steg 4: Installera Bazel

Ladda ner senaste Basel här. Leta efter filen bazel- -windows-x86_64.exe. Jag har testat denna tutorial med bazel 0.17.2. Byt namn på den binära till bazel.exe och flytta den till en katalog på din% PATH%, så att du kan köra Bazel genom att skriva bazel i valfri katalog. Se detaljer om Bazel-installationen för Windows x64 vid problem.

Lägg till BAZEL_SH global miljövariabel för bash-plats. Min väg är

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

Lägg till BAZEL_VC globala miljövariabel för “VC ++ 2015.3 v14.00 (v140) toolset for desktop” verktygskedjan plats:

C: \ Programfiler (x86) \ Microsoft Visual Studio 14.0 \ VC

Steg 5: Installera Python 3.6 64-bitar

TensorFlow stöder inte Python 3.7 så du måste installera 3.6-versionen.
Ser ut som att TensorFlow v1.11 inte stöder Anaconda / Miniconda för att bygga mer - jag får konstigt fel. Det är därför jag använder Python virtuella miljö för att bygga.

Python 3.6 är tillgänglig för nedladdning här. Installera den och lägg till plats till python.exe till variabeln% PATH%.

Steg 6: Installera NVIDIA CUDA 10.0 och cuDNN 7.3 (för GPU-acceleration)

Det här avsnittet är faktiskt om du har NVIDIA-grafikkort som stöder CUDA. I annat fall hoppar du över det här avsnittet.
Se steg för steg installation av CUDA här om du behöver hjälp. Jag kopierar och klistrar in den guiden men klipper lite detaljer.

Gå till https://developer.nvidia.com/cuda-downloads och ladda ner CUDA 10.0 Installer för Windows [din version]. För mig är versionen Windows 10.

Installera det på standardplats med standardinställningar, men avmarkera alternativet VisualStudio-integration. Den uppdaterar din GPU-drivrutin vid behov och startar om.

Gå till kör (Win + R) typ cmd

Följande kommando kontrollerar för nvcc-versionen och försäkrar att den är inställd i sökmiljövariabel.

nvcc --version

Nästa gå till https://developer.nvidia.com/cudnn (medlemskap krävs).

Ladda ned följande efter inloggning:

cuDNN v7.3.1 Bibliotek för Windows [din version] för mig Windows 10. Gick nedladdade mapp och extrahera zip-fil.

Gå in i den extraherade mappen och kopiera alla filer och mapp från cuda-mappen (t.ex. bin, inkludera, lib) och klistra in till “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0”.

Det sista steget här är att lägga till “C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” till% PATH% miljövariabel.

Steg 7: Konfigurera byggmiljö

Starta VC ++ 2015-skalet för x64 (”VS2015 x64 Native Tools Command Prompt”) från Start-menyn.

Nästa måste du skapa, aktivera och konfigurera Python-miljö. Kör in i "VS2015 x64 Native Tools Command Prompt" -skalkommandon nedan (korrekta sökvägar enligt dina platser).

pip3 installera -U virtualenv
virtualenv - system-site-paket C: \ Användare \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

Ditt skal ska se så ut efter att kommandon har använts:

Installera obligatoriska Python-paket:

pip3 installera sex numpy hjul
pip3 install keras_applications == 1.0.5 - no-deps
pip3 install keras_preprocessing == 1.0.3 - no-deps

Kör "pip3-lista" för att säkerställa att de obligatoriska paketen är installerade:

Det var allt tills vidare. Stäng inte skalet.

Steg 8: Klon TensorFlow-källkod och applicera obligatorisk patch

Först av allt måste du välja mapp där du klonar TensorFlow-källkod. Det är “C: \ Users \ amsokol \ Development \ tensorflow-build” i mitt fall. Tillbaka till skalet och kör:

cd C: \ Användare \ amsokol \ Utveckling \ tensorflow-build

Klon källkod:

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

Kassa senaste 1.11 version:

cd tensorflow
git checkout v1.11.0

Nu har vi källor.

Det finns en BUG i eget tredjepartsbibliotek. Vi måste fixa det innan vi bygger.
  • Ladda ner patch här och spara med filnamnet eigen_half.patch till mappen tredje_party
  • Lägg till patch_file = clean_dep ("// tredje_party: eigen_half.patch"), rad till egen_arkivsektionen till filen tensorflow / workspace.bzl.

Resultatet i filen tensorflow / workspace.bzl ska vara så här:

...
tf_http_archive (
  name = "egen_arkiv",
  webbadresser = [
"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 = "egen-egen-fd6845384b86",
  build_file = clean_dep ("// tredje_party: egen.BUILD"),
  patch_file = clean_dep ("// tredje_party: eigen_half.patch"),
)
...

Gjort.

Steg 9: Konfigurera byggparametrar

Se till att vi är i källkodens rotmapp:

cd C: \ Användare \ amsokol \ Utveckling \ tensorflow-build \ tensorflow

Kör konfigurator:

python ./configure.py

Först frågar det om Python. Tryck på Enter för att lämna standardvärdet:

...
Du har installerat bazel 0.17.2.
Vänligen ange platsen för python. [Standard är C: \ Användare \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

Sedan frågar det om platsen för Python-biblioteksvägar. Tryck på Enter för att lämna standardvärdet:

Traceback (senaste samtalet senast):
  Fil "", rad 1, i 
AttributeError: modul "site" har inget attribut "getitepackages"
Hittade möjliga Python-biblioteksvägar:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ lib \ site-paket
Ange önskad Python-biblioteksväg att använda. Standard är [C: \ Användare \ amsokol \ tensorflow-v1.11 \ Lib \ site-paket]

Sedan frågar det om nGraph-stöd. Vi behöver det inte. Tryck på “n”:

Vill du bygga TensorFlow med nGraph-stöd? [y / N]: n
Inget nGraph-stöd kommer att aktiveras för TensorFlow.

Sedan frågar det om CUDA-stöd:

Vill du bygga TensorFlow med CUDA-stöd? [Y / N]:

Svara "y" om du ska använda GPU-acceleration. Tryck annars på “n”.

Om Ja för CUDA-konfiguratör ställer ytterligare frågor:
Svar 10.0 som CUDA SDK-version:
Vänligen ange den CUDA SDK-version som du vill använda. [Lämna tomt som standard till CUDA 9.0]: 10.0
Tryck på Enter för att lämna standardplatsen för CUDA-verktygssats:
Vänligen ange platsen där CUDA 10.0 verktygssats är installerad. Mer information finns i README.md. [Standard är C: / Programfiler / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Svar 7.3.1 som cuDNN-version:
Ange vilken cuDNN-version du vill använda. [Lämna tomt som standard till cuDNN 7.0]: 7.3.1
Tryck på Enter för att lämna standard cuDNN-biblioteksplats:
Vänligen ange platsen där cuDNN 7-biblioteket är installerat. Mer information finns i README.md. [Standard är C: / Programfiler / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Nästa fråga handlar om CUDA-beräkningsfunktioner att bygga med. Du hittar datorns datafunktion på: https://developer.nvidia.com/cuda-gpus. Jag har GTX 1070 och därför svarar jag 6.1:
Ange en lista med kommaseparerade Cuda-beräkningsfunktioner som du vill bygga med.
Du hittar datorns datafunktion på: https://developer.nvidia.com/cuda-gpus.
Observera att varje ytterligare datorkapacitet ökar din byggtid och binära storlek betydligt. [Standard är: 3,5,7,0]: 6.1

Nästa fråga är att ställa in optimeringsflaggor. Jag har sjätte gen Intel CPU som är därför jag svarar / arch: AVX2:

Vänligen ange optimeringsflaggor som ska användas under sammanställningen när bazel-alternativet "--config = opt" är angivet [Standard är / arch: AVX]: / arch: AVX2

Den sista frågan handlar om egen. Svara "y". Det minskar kompileringstiden dramatiskt.

Vill du åsidosätta egen stark inline för viss C ++ -sammanställning för att minska kompileringstiden? [Y / n]: y
Eigen stark inline åsidosatt.

Konfigurationen är klar. Låter bygga.

Steg 10: Bygg TensorFlow från källor

Se till att vi är i källkodens rotmapp:

cd C: \ Användare \ amsokol \ Utveckling \ tensorflow-build \ tensorflow
Bygg tar lång tid. Jag rekommenderar starkt att stänga av antivirusprogramvara inklusive Windows Defender Antivirus realtidsskydd.

Kör bygga:

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

Luta dig tillbaka och koppla av någon gång.

Steg 11: Skapa TensorFlow-hjulfil för Python 3.6

Kör kommandot för att skapa Python-hjulfil:

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

Det misslyckas:

Det finns en känd fråga. Titta på mappen “bazel-bin \ tensorflow \ tools \ pip_package”. Den innehåller noll längd "simple_console_for_windows.zip" -fil. Det här är problemet. Bazel innehåller 32-bitars zip-verktyg som misslyckas med att filen är 2GB större. Se länkar för mer information och lösning:

  • 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

Det finns steg för att lösa problemet:

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

Öppna filen "simple_console_for_windows.zip-0.params" och ta bort raden innehåller "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / ivrig / python / examples / gan / mnist.zip = Bazel-out / x64_windows-opt / bin / tensorflow / contrib / ivrig / python / examples / gan / mnist.zip
...
Det hjälper mig. Om det inte hjälper dig tar du bara bort andra rader med zip-filer (se detaljer här). Syftet med denna aktivitet är att göra "simple_console_for_windows.zip" längd mindre än 2 GB.

Radera den tomma “simple_console_for_windows.zip” -filen.

Nästa titta på din hemmapp. Du måste se mappen med namn som "_bazel_ ". Det är "_bazel_amsokol" i mitt fall. Den innehåller mapp med build-filer. Det är “lx6zoh4k” i mitt fall. Tillbaka till skalkörningen (korrigera enligt dina mappnamn):

cd C: \ Användare \ amsokol \ _bazel_amsokol \ lx6zoh4k \ execroot \ org_tensorflow

Skapa filen "simple_console_for_windows.zip" manuellt:

extern \ bazel_tools \ verktyg \ 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

Kör kommandot för att skapa Python-hjulfil:

cd C: \ Användare \ amsokol \ Utveckling \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Det skapar tensorflow-1.11.0-cp36-cp36m-win_amd64.whl-fil i mappen “.. \ out”.

Steg 12: Installera TensorFlow-hjulfilen för Python 3.6 och kontrollera resultatet

Kör kommando för att installera Python-hjulfil:

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

Lämna katalogen "tensorflow" (fel inträffar ibland när jag kör Python-skript i Tensoflow-källkodsmappen - jag vet inte anledning):

CD ..

För att göra check nedladdningsskript här eller kopiera och klistra in och köra:

importera tensorflow som tf
hej = tf.constant ('Hej, TensorFlow!')
session = tf.Session ()
trycket (session.run (hello))

Om systemet matar ut följande är allt bra:

Hej, TensorFlow!

Min utgång:

Du har nu framgångsrikt installerat TensorFlow på Windows-maskin.

Låt mig veta i kommentarerna nedan om det fungerade för dig. Eller om du har några fel. Tack!