[Actualizare 1] Cum se construiește și se instalează TensorFlow GPU / CPU pentru Windows din codul sursă folosind bazel și Python 3.6

Aceasta este o actualizare pentru povestea mea anterioară. Ce este nou aici:

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

Există un ghid pe site-ul oficial. Nu este foarte cuprinzător, dar util uneori.

rezumat

  1. Instalați Git pentru Windows
  2. Instalați Bazel
  3. Instalați instrumente pentru linia de comandă MSYS2 x64 și 64
  4. Instalați instrumente de construire Visual Studio 2017, inclusiv instrumente de construire Visual Studio 2015
  5. Instalați Python 3.6 pe 64 de biți
  6. Instalați NVIDIA CUDA 10.0 și cuDNN 7.3 (pentru accelerarea GPU)
  7. Configurați mediul de construire
  8. Clonați TensorFlow v1.11 cod sursă și aplicați patch-ul obligatoriu
  9. Configurați parametrii de construire
  10. Construiți TensorFlow din surse
  11. Creați fișierul TensorFlow wheel pentru Python 3.6
  12. Instalați fișierul TensorFlow wheel pentru Python 3.6 și verificați rezultatul

Pasul 1: Instalează Git pentru Windows

Descărcați și instalați Git pentru Windows. O iau aici. Asigurați-vă că calea către git.exe este adăugată la variabila de mediu% PATH%. Instalez Git în

C: \ Bin \ Git

folder pentru acest tutorial.

Pasul 2: Instalează MSYS2 x64 și instrumente pentru linia de comandă

Descărcați și instalați distribuția pe 64 de biți aici. Bazel folosește grep, patch, dezarhivați alte porturi de instrumente Unix pentru a construi surse. Puteți încerca să găsiți binare de sine stătătoare pentru fiecare dintre ele, dar prefer să folosesc pachetul MSYS2. Îl instalez la

C: \ Bin \ msys64

folder pentru acest tutorial. Trebuie să adăugați folderul cu instrumente la variabila de mediu% PATH%. În cazul meu este „C: \ Bin \ msys64 \ usr \ bin”.

Porniți comanda rapidă „MSYS2 MinGW pe 64 de biți” din meniul Start. Rulați următoarea comandă pentru a actualiza (reporniți „MSYS2 MinGW pe 64 de biți” dacă cereți):

pacman -Syu

Apoi executați:

pacman -Su

Instrumentele de instalare sunt necesare pentru construire:

pacman -S patch decuplați

Închideți shell-ul „MSYS2 MinGW pe 64 de biți” prin comanda „exit”. Nu mai avem nevoie de asta.

Pasul 3: Instalați instrumentele de construire Visual Studio 2017, inclusiv instrumentele de construire Visual Studio 2015

Trebuie să instalăm „VC ++ 2015.3 v14.00 (v140) set de instrumente pentru desktop” din Visual Studio 2017 Instrumente de construire pentru a construi TensorFlow v1.11:

Pasul 4: Instalați Bazel

Descărcați cel mai recent Basel aici. Căutați fișierul bazel- -windows-x86_64.exe. Am testat acest tutorial cu bazel 0.17.2. Redenumiți binarul în bazel.exe și mutați-l într-un director din% PATH%, astfel puteți rula Bazel tastând bazel în orice director. Consultați detalii despre instalarea Bazel pentru Windows x64 în caz de probleme.

Adăugați BAZEL_SH variabilă de mediu global pentru locația bash. Calea mea este

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

Adăugați BAZEL_VC variabilă de mediu globală pentru setul de instrumente „VC ++ 2015.3 v14.00 (v140) pentru desktop”:

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

Pasul 5: Instalează Python 3.6 64 biți

TensorFlow nu acceptă Python 3.7, deci trebuie să instalați versiunea 3.6.
Se pare că TensorFlow v1.11 nu suportă Anaconda / Miniconda pentru a mai construi - am o eroare ciudată. Acesta este motivul pentru care folosesc mediul virtual Python pentru construire.

Python 3.6 este disponibil pentru descărcare aici. Instalați-l și adăugați locația în python.exe la variabila% PATH%.

Pasul 6: Instalați NVIDIA CUDA 10.0 și cuDNN 7.3 (pentru accelerarea GPU)

Această secțiune este actuală dacă aveți placă grafică NVIDIA care acceptă CUDA. În caz contrar, săriți această secțiune.
Vedeți instalarea pas cu pas a CUDA aici dacă aveți nevoie de ajutor. Am copiat-lipi ghidul, dar am tăiat câteva detalii.

Accesați https://developer.nvidia.com/cuda-downloads și descărcați CUDA 10.0 Installer pentru Windows [versiunea dvs.]. Pentru mine, versiunea este Windows 10.

Instalați-l în locația implicită cu setări implicite, dar debifați opțiunea de integrare VisualStudio. Dacă va fi necesar, va actualiza driverul dvs. GPU și va reporni.

Mergeți să alergați (Win + R) tip cmd

Următoarea comandă va verifica dacă există versiunea nvcc și se va asigura că este setată în variabila de mediu de cale.

nvcc - inversiune

Următorul goto https://developer.nvidia.com/cudnn (este necesar un membru).

După autentificare, descărcați următoarele:

cuDNN v7.3.1 Biblioteca pentru Windows [versiunea dvs.] pentru mine Windows 10. Dosarul descărcat de la Goto și extrageți fișierul zip.

Accesați folderul extras și copiați toate fișierele și folderul din folderul cuda (de ex. Bin, include, lib) și lipiți în „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0”.

Pasul final aici este adăugarea „C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64” la variabila de mediu% PATH%.

Pasul 7: Configurați mediul de construire

Porniți shell-ul VC ++ 2015 pentru x64 (comanda rapidă VS2015 x64 Native Tools Command Prompt ”) din meniul Start.

În continuare, trebuie să creați, să activați și să configurați mediul Python. Rulați în interiorul comenzilor shell-ului „VS2015 x64 Native Tools Prompt” de mai jos (căi corecte în funcție de locațiile dvs.).

pip3 instala -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat Utilizatori

Învelișul tău ar trebui să arate așa după comenzile aplicate:

Instalați pachetele obligatorii Python:

pip3 instalează șase roți numpy
pip3 instalează keras_applications == 1.0.5 - nu-deps
pip3 instala keras_preprocessing == 1.0.3 - nu-deps

Executați „pip3 list” pentru a vă asigura că sunt instalate pachetele obligatorii:

Asta este tot pentru acum. Nu închideți scoica.

Pasul 8: Clonați codul sursă TensorFlow și aplicați patch-ul obligatoriu

În primul rând, trebuie să alegeți folderul unde să clonați codul sursă TensorFlow. În cazul meu este „C: \ Users \ amsokol \ Development \ tensorflow-build”. Înapoi la shell și rulează:

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

Cod sursă clonă:

clonă git https://github.com/tensorflow/tensorflow

Cea mai recentă versiune a versiunii 1.11:

cd tensorflow
git checkout v1.11.0

Acum avem surse.

Există un BUG în biblioteca terță parte a eigen. Trebuie să-l reparăm înainte de construire.
  • Descărcați corecția aici și salvați cu numele fișierului eigen_half.patch în folderul Third_party
  • Adăugați patch_file = clean_dep („// Third_party: eigen_half.patch”), linie la secțiunea eigen_archive la fișierul tensorflow / workspace.bzl.

Rezultatul fișierului tensorflow / workspace.bzl ar trebui să fie astfel:

...
tf_http_archive (
  nume = "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 ("// al treilea_partit: eigen.BUILD"),
  patch_file = clean_dep ("// al treilea_partit: eigen_half.patch"),
)
...

Terminat.

Pasul 9: Configurați parametrii de construire

Asigurați-vă că ne aflăm în folderul rădăcină al codului sursă:

cd C: \ Utilizatori \ amsokol \ Dezvoltare \ tensorflow-build \ tensorflow

Execută configurator:

python ./configure.py

Mai întâi întreabă locația Python. Apăsați Enter pentru a lăsa valoarea implicită:

...
Ai instalat bazel 0.17.2.
Vă rugăm să specificați locația python. [Default este C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripturi \ python.exe]:

Apoi, locația sa solicită căile bibliotecii Python. Apăsați Enter pentru a lăsa valoarea implicită:

Urmărire (ultimul apel recent):
  Fișierul „”, linia 1, în 
AttributeError: modulul „site” nu are atribut „getitepackages”
Căile posibile ale bibliotecii Python:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-ul de pachete
Vă rugăm să introduceți calea de bibliotecă Python dorită pentru a fi utilizată. Default este [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

Apoi întreabă despre asistența nGraph. Nu avem nevoie de asta. Apăsați „n”:

Doriți să construiți TensorFlow cu suportul nGraph? [y / N]: n
Nici un suport nGraph nu va fi activat pentru TensorFlow.

Apoi întreabă despre sprijinul CUDA:

Doriți să construiți TensorFlow cu suport CUDA? [Y / N]:

Răspundeți „y” dacă veți utiliza accelerația GPU. În caz contrar, apăsați „n”.

În caz că Da pentru configuratorul CUDA pune întrebări suplimentare:
Raspunde 10.0 ca versiune SDK CUDA:
Vă rugăm să specificați versiunea SDK CUDA pe care doriți să o utilizați. [Lăsați gol în mod implicit la CUDA 9.0]: 10.0
Apăsați Enter pentru a părăsi locația setului de instrumente CUDA implicit:
Vă rugăm să specificați locația în care este instalat setul de instrumente CUDA 10.0. Consultați README.md pentru mai multe detalii. [Valoarea implicită este C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Răspundeți la 7.3.1 ca versiune cuDNN:
Vă rugăm să specificați versiunea cuDNN pe care doriți să o utilizați. [Lăsați gol în mod implicit la cuDNN 7.0]: 7.3.1
Apăsați Enter pentru a lăsa locația implicită a bibliotecii cuDNN:
Vă rugăm să specificați locația în care este instalată biblioteca cuDNN 7. Consultați README.md pentru mai multe detalii. [Valoarea implicită este C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Următoarea întrebare este despre capacitățile de calcul CUDA cu care să se construiască. Puteți găsi capacitatea de calcul a dispozitivului dvs. la: https://developer.nvidia.com/cuda-gpus. Am GTX 1070, de aceea răspund 6.1:
Vă rugăm să specificați o listă cu capabilitățile de calcul Cuda separate de virgule cu care doriți să construiți.
Puteți găsi capacitatea de calcul a dispozitivului dvs. la: https://developer.nvidia.com/cuda-gpus.
Vă rugăm să rețineți că fiecare capacitate suplimentară de calcul crește semnificativ timpul de construire și dimensiunea binară. [Valoarea implicită este: 3,5,7,0]: 6,1

Următoarea întrebare este să setați steaguri de optimizare. Am un procesor Intel al 6-lea gen, de aceea răspund / arhivez: AVX2:

Vă rugăm să specificați steagurile de optimizare pe care să le utilizați în timpul compilării atunci când opțiunea bazel "--config = opt" este specificată [Valoarea implicită este / arch: AVX]: / arch: AVX2

Ultima întrebare este despre eigen. Răspundeți „y”. Acesta reduce timpul de compilare dramatic.

Doriți să treceți peste linia puternică a eigenului pentru unele compilări C ++ pentru a reduce timpul de compilare? [Y / n]: y
Linia puternică Eigen a fost depășită.

Configurarea a fost finalizată. Să construim.

Pasul 10: Construiți TensorFlow din surse

Asigurați-vă că ne aflăm în folderul rădăcină al codului sursă:

cd C: \ Utilizatori \ amsokol \ Dezvoltare \ tensorflow-build \ tensorflow
Construirea durează mult timp. Vă recomand să opriți software-ul antivirus, inclusiv protecția în timp real a Windows Defender Antivirus.

Execută build:

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

Stai la loc și relaxează-te cândva.

Pasul 11: Creează fișierul TensorFlow wheel pentru Python 3.6

Rulați comanda pentru a crea fișierul Python wheel:

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

Eșuează:

Există o problemă cunoscută. Priviți folderul „bazel-bin \ tensorflow \ tools \ pip_package”. Conține fișierul „simple_console_for_windows.zip” de lungime zero. Aceasta e problema. Bazel conține utilitatea zip de 32 de biți care nu reușește să crească cu 2 GB fișierul. Consultați linkurile pentru detalii și soluții:

  • 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

Există pași pentru a remedia problema:

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

Deschideți fișierul „simple_console_for_windows.zip-0.params” și eliminați linia conține „mnist.zip”:

...
runfiles / org_tensorflow / tensorflow / contrib / dornic / python / exemple / gan / mnist.zip = Bazel-out / x64_windows-opt / bin / tensorflow / contrib / dornic / python / exemple / gan / mnist.zip
...
Mă ajută. În cazul în care nu vă ajută să eliminați alte linii cu fișiere zip (vezi detalii aici). Scopul acestei activități este de a face lungimea „simple_console_for_windows.zip” mai puțin de 2 GB.

Ștergeți fișierul „simplu_console_for_windows.zip” gol.

Apoi uitați-vă la folderul de acasă. Trebuie să vedeți folderul cu numele de genul „_bazel_ ”. În cazul meu este „_bazel_amsokol”. Conține folder cu fișiere de compilare. În cazul meu este „lx6zoh4k”. Înapoi la copierea unei rulări (corectați în funcție de numele folderului):

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

Creați manual fișierul „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

Rulați comanda pentru a crea fișierul Python wheel:

cd C: \ Utilizatori \ amsokol \ Dezvoltare \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

Creează fișierul tensorflow-1.11.0-cp36-cp36m-win_amd64.whl în folderul „.. \ out”.

Pasul 12: Instalați fișierul TensorFlow wheel pentru Python 3.6 și verificați rezultatul

Rulați comanda pentru a instala fișierul Python wheel:

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

Lăsați directorul „tensorflow” (erorile se întâmplă uneori când rulez scripturi Python în folderul de cod sursă Tensoflow - nu știu motivul):

cd ..

Pentru a verifica descărcarea scriptului aici sau copiați-lipiți și rulați:

import tensorflow ca tf
hello = tf.constant ('Bună ziua, TensorFlow!')
sesiune = tf.Session ()
Print (session.run (Hello))

Dacă sistemul produce următoarele, atunci totul este în regulă:

Bună ziua, TensorFlow!

Produsul meu:

Ați instalat cu succes TensorFlow pe mașina Windows.

Anunță-mă în comentariile de mai jos dacă a funcționat pentru tine. Sau dacă ați avut erori. Mulțumiri!