[Update 1] Paglikha at pag-install ng TensorFlow GPU / CPU para sa Windows mula sa source code gamit ang Bazel at Python 3.6

Update ito sa dati kong kwento. Ano ang bago dito:

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

May mga gabay sa opisyal na site. Hindi ito masyadong masaklaw, ngunit kapaki-pakinabang ito sa oras.

Buod

  1. I-install ang Git para sa Windows
  2. I-install ang Bazel
  3. I-install ang MSYS2 x64 at mga tool ng command line
  4. I-install ang Visual Studio 2017 Build Tools, kasama ang Visual Studio 2015 Build Tools
  5. I-install ang Python 3.6 64-bit
  6. I-install ang NVIDIA CUDA 10.0 at cuDNN 7.3 (para sa pagpabilis ng GPU)
  7. I-configure ang kapaligiran sa pagbuo
  8. I-clone ang source code ng TensorFlow v1.11 at ilapat ang sapilitan na patch
  9. I-configure ang mga parameter ng pagbuo
  10. Bumuo ng TensorFlow mula sa mga mapagkukunan
  11. Lumikha ng isang file ng TensorFlow wheel para sa Python 3.6
  12. I-install ang TensorFlow wheel file para sa Python 3.6 at suriin ang resulta

Hakbang 1: I-install ang Git para sa Windows

I-download at i-install ang Git para sa Windows. Dinadala ko ito. Tiyaking ang landas sa git.exe ay naidagdag sa% PATH% na variable ng kapaligiran. Nag-i-install ako ng Git sa

C: \ Bin \ Git

Folder para sa tutorial na ito.

Hakbang 2: I-install ang MSYS2 x64 at Command Line Tools

I-download at i-install ang 64-bit na pamamahagi dito. Gumagamit ang Bazel ng grep, patch, unzipand, at iba pang mga port mula sa mga tool ng Unix upang makabuo ng mga mapagkukunan. Maaari mong subukang makahanap ng mga standalone na binary para sa bawat isa sa kanila, ngunit mas gusto kong gamitin ang MSYS2 bundle. I-install ko ito sa

C: \ Bin \ msys64

Folder para sa tutorial na ito. Kailangan mong magdagdag ng isang folder ng mga tool sa% PATH% variable ng kapaligiran. Sa aking kaso ito ay "C: \ Bin \ msys64 \ usr \ bin".

Simulan ang link na "MSYS2 MinGW 64-Bit" mula sa start menu. Upang mag-update, patakbuhin ang sumusunod na utos (i-restart ang MSYS2 MinGW 64-bit kapag na-prompt):

Pacman Syu

Pagkatapos ay tumakbo:

Pacman -Su

Kinakailangan ang mga tool sa pag-install para sa pagbuo:

I-zip ang patch ng Pacman

Isara ang MSYS2 MinGW 64-Bit-Shell gamit ang command na "exit". Hindi na namin ito kailangan.

Hakbang 3: Mag-install ng Visual Studio 2017 Build Tools, kasama ang Visual Studio 2015 Build Tools

Kailangan naming i-install ang VC ++ 2015.3 v14.00 (v140) para sa desktop toolet mula sa Visual Studio 2017 Build Tools upang mabuo ang TensorFlow v1.11:

Hakbang 4: i-install ang Bazel

I-download ang pinakabagong Basel dito. Hanapin ang file bazel- -windows-x86_64.exe. Sinubukan ko ang tutorial na ito sa Bazel 0.17.2. Palitan ang pangalan ng binary sa bazel.exe at ilipat ito sa isang direktoryo sa% PATH% upang mapatakbo mo ang Bazel sa pamamagitan ng pag-type ng bazel sa anumang direktoryo. Para sa mga detalye sa pag-install ng Bazel para sa Windows x64, mangyaring mag-refer sa mga problema.

Idagdag ang pandaigdigan na variable ng kapaligiran na BAZEL_SH para sa bash na posisyon. Ang paraan ko ay

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

Idagdag ang pandaigdigan na variable ng kapaligiran na BAZEL_VC para sa toolet na "VC ++ 2015.3 v14.00 (v140) para sa desktop":

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

Hakbang 5: I-install ang Python 3.6 64-bit

Hindi sinusuportahan ng TensorFlow ang Python 3.7, kaya kakailanganin mong i-install ang bersyon 3.6.
Mukhang hindi na sinusuportahan ng TensorFlow v1.11 ang Anaconda / Miniconda para sa mga build - nakakakuha ako ng isang kakaibang error. Ito ang dahilan kung bakit ginagamit ko ang Python virtual na kapaligiran upang lumikha.

Ang Python 3.6 ay magagamit para sa pag-download dito. I-install ito at idagdag ang lokasyon ng python.exe sa variable na% PATH%.

Hakbang 6: I-install ang NVIDIA CUDA 10.0 at cuDNN 7.3 (para sa pagpabilis ng GPU)

Ang seksyon na ito ay kasalukuyang kung mayroon kang isang NVIDIA graphics card na sumusuporta sa CUDA. Kung hindi man, laktawan ang seksyong ito.
Ang isang sunud-sunod na pag-install ng CUDA ay magagamit dito kung kailangan mo ng tulong. Kinokopya ko ang gabay na ito ngunit pinuputol ang ilang mga detalye.

Pumunta sa https://developer.nvidia.com/cuda-downloads at i-download ang CUDA 10.0 installer para sa Windows [iyong bersyon]. Para sa akin ang bersyon ay Windows 10.

I-install ito sa default na direktoryo kasama ang mga default na setting, ngunit huwag paganahin ang pagpipiliang pagsasama ng VisualStudio. Ang driver ng GPU ay maa-update at i-restart kung kinakailangan.

Patakbuhin ang utos na cmd (Win + R)

Sinusuri ng sumusunod na utos ang isang bersyon ng nvcc at tinitiyak na nakatakda ito sa variable ng environment ng path.

nvcc --versi

Pumunta sa https://developer.nvidia.com/cudnn (kinakailangan ng pagiging miyembro).

Pagkatapos mag-log in, mag-download:

cuDNN v7.3.1 Library para sa Windows [iyong bersyon] para sa akin Windows 10. Pumunta sa folder na iyong na-download at i-extract ang zip file.

Pumunta sa nakuha na folder at kopyahin ang lahat ng mga file at folder mula sa folder ng cuda (hal. Bin, isama, lib) at i-paste ang mga ito sa "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 "isa.

Ang pangwakas na hakbang ay upang idagdag ang "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" sa% PATH% environment variable.

Hakbang 7: i-configure ang kapaligiran sa pagbuo

Simulan ang VC ++ 2015 shell para sa x64 (shortcut na "VS2015 x64 Native Tools command prompt") mula sa start menu.

Susunod, kailangan mong lumikha, buhayin, at i-configure ang isang kapaligiran sa Python. Isagawa ang mga sumusunod na command ng shell sa "VS2015 x64 Native Tools Command Prompt" (itama ang mga landas alinsunod sa iyong mga posisyon).

i-install ang pip3 -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Mga Gumagamit \ amsokol \ tensorflow-v1.11 \ Mga Script \ buhayin.bat

Ang iyong shell ay dapat magmukhang ganito pagkatapos mailapat ang mga utos:

I-install ang ipinag-uutos na mga pakete ng Python:

pip3 install ng anim na numpy wheel
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 --no-deps

Patakbuhin ang "listahan ng pip3" upang matiyak na naka-install ang mga sapilitan na pakete:

Yun lang sa ngayon. Huwag isara ang mangkok.

Hakbang 8: I-clone ang source code ng TensorFlow at ilapat ang sapilitan na patch

Una, kailangan mong piliin ang folder kung saan mo nais na ma-clone ang source code ng TensorFlow. Sa aking kaso ito ay "C: \ Users \ amsokol \ Development \ tensorflow-build". Bumalik sa shell at tumakbo:

cd C: \ Mga Gumagamit \ amsokol \ Development \ tensorflow-build

I-clone ang source code:

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

Checkout pinakabagong bersyon 1.11:

cd tensorflow
git checkout v1.11.0

Ngayon mayroon kaming mga mapagkukunan.

Mayroong isang bug sa kanilang sariling third party library. Kailangan nating ayusin ito bago itayo.
  • I-download ang patch dito at i-save ito gamit ang filename eigen_half.patch sa third_party folder
  • Magdagdag ng patch_file = clean_dep ("// third_party: eigen_half.patch"), linya sa seksyong "eigen_archive" ng tensorflow / workspace.bzl file.

Ang resulta sa file na tensorflow / workspace.bzl ay dapat magmukhang ganito:

... 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", strip_prefix = "eigen-eigen-clean ("// third_party: eigen_half.patch"),) ...

Tapos na.

Hakbang 9: i-configure ang mga parameter ng pagbuo

Tiyaking nasa folder ng root ng source code kami:

cd C: \ Gumagamit \ amsokol \ Development \ tensorflow-build \ tenorflow

Patakbuhin ang configurator:

sawa ./configure.py

Hihilingin ka muna para sa lokasyon ng Python. Pindutin ang Enter upang mapanatili ang default na halaga:

... na-install mo bazel 0.17.2.
Mangyaring ipahiwatig ang lokasyon ng Python. [Karaniwan ay C: \ Mga Gumagamit \ amsokol \ tensorflow-v1.11 \ Mga Script \ python.exe]:

Hihilingin sa iyo ang daan patungo sa Python library. Pindutin ang Enter upang mapanatili ang default na halaga:

Pagsubaybay (huling tawag sa huli): file " ", Linya 1, sa AttributionError: Ang module na 'Site' ay walang katangiang 'getsitepackages' Natagpuan posibleng mga landas sa library ng Python: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages Mangyaring ipasok ang nais na landas ng library ng Python. Karaniwan ang [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

Pagkatapos hihilingin sa iyo ang suporta ng nGraph. Hindi namin ito kailangan. Pindutin ang "n":

Nais mo bang bumuo ng TensorFlow sa suporta ng nGraph? [Y / N]: n nAng suporta sa talata ay hindi naisaaktibo para sa TensorFlow.

Pagkatapos ay humihingi ito ng suporta sa CUDA:

Nais mo bang bumuo ng TensorFlow sa suporta ng CUDA? [Y / N]:

Sagutin ang "y" kung nais mong gumamit ng GPU acceleration. Kung hindi man, pindutin ang "n".

Kung oo para sa CUDA configurator, karagdagang mga katanungan ang tinanong:
Sagutin ang 10.0 bilang bersyon ng CUDA SDK:
Mangyaring ipahiwatig ang bersyon ng CUDA SDK na nais mong gamitin. [Iwanang blangko upang gawing default sa CUDA 9.0]: 10.0
Pindutin ang Enter upang lumabas sa default na lokasyon ng toolkit ng CUDA:
Mangyaring tukuyin ang lokasyon kung saan naka-install ang toolkit ng CUDA 10.0. Tingnan ang README.md para sa karagdagang impormasyon. [Ang default ay C: / Programs / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Sagutin ang 7.3.1 bilang bersyon ng cuDNN:
Mangyaring ipahiwatig ang nais na bersyon ng cuDNN. [Iwanang blangko upang magamit ang cuDNN 7.0 bilang default]: 7.3.1
Pindutin ang Enter upang lumabas sa default na lokasyon ng library ng cuDNN:
Mangyaring ipasok ang lokasyon kung saan naka-install ang library ng cuDNN 7. Tingnan ang README.md para sa karagdagang impormasyon. [Ang default ay C: / Programs / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Ang susunod na tanong ay patungkol sa mga pagpapaandar ng CUDA arithmetic na maaaring magamit upang bumuo. Mahahanap mo ang kakayahan sa pag-compute ng iyong aparato sa: https://developer.nvidia.com/cuda-gpus. Mayroon akong GTX 1070, kaya sumasagot ako ng 6.1:
Magbigay ng isang listahan ng mga pag-andar na Cuda math na pinaghiwalay ng kuwit na nais mong buuin. Mahahanap mo ang kakayahan sa pag-compute ng iyong aparato sa: https://developer.nvidia.com/cuda-gpus. Mangyaring tandaan na ang bawat karagdagang pag-andar sa pagkalkula ay nagdaragdag ng oras ng paglikha at ang laki ng binary na malaki. [Ang default ay: 3.5.7.0]: 6.1

Ang susunod na tanong ay upang itakda ang mga flag ng pag-optimize. Mayroon akong isang ika-6 na henerasyon ng Intel CPU, kaya sumasagot ako / arko: AVX2:

Mangyaring tukuyin ang mga flag ng pag-optimize na gagamitin sa panahon ng pagtitipon kung ang pagpipilian ng Basel na "--config = opt" ay tinukoy. [Ang default ay / arch: AVX]: / arch: AVX2

Ang huling tanong ay tungkol sa Eigen. Sagutin ng "y". Malakas nitong binabawasan ang oras ng pagsulat.

Nais mo bang i-override ang iyong sariling malakas na inline para sa ilang mga compiler ng C ++ upang mabawasan ang oras ng pagtitipon? [Y / n]: Y Eigen ay masidhi na na-overlap ang inline.

Nakumpleto ang pag-configure. Bumuo tayo.

Hakbang 10: buuin ang TensorFlow mula sa mga mapagkukunan

Tiyaking nasa folder ng root ng source code kami:

cd C: \ Gumagamit \ amsokol \ Development \ tensorflow-build \ tenorflow
Mahaba ang oras upang lumikha. Masidhing inirerekumenda kong i-off ang antivirus software kasama ang proteksyon ng real-time na Windows Defender Antivirus.

Isagawa ang build:

bazel build --config = opt // tensorflow / mga gamit / pip_package: build_pip_package

Umupo at magpahinga nang ilang oras.

Hakbang 11: lumikha ng isang file na TensorFlow wheel para sa Python 3.6

Patakbuhin ang utos upang lumikha ng isang python wheel file:

mkdir .. \ palabas
bazel-bin \ tensorflow \ mga tool \ pip_package \ build_pip_package .. \ out

Nabigo ito:

May kilalang problema. Tingnan ang folder na "bazel-bin \ tensorflow \ mga tool \ pip_package". Naglalaman ito ng file na "simple_console_for_windows.zip" na may haba na zero. Iyon ang problema. Kasama sa Bazel ang isang 32-bit na utility ng zip na mabibigo sa isang mas malaking file na 2GB. Tingnan ang mga link para sa mga detalye at pag-areglo:

  • 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

May mga hakbang upang ayusin ang problema:

CD. \ bazel-bin \ tenorflow \ mga tool \ pip_package

Buksan ang file na "simple_console_for_windows.zip-0.params" at alisin ang linya gamit ang "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / sabik / python / halimbawa / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / sabik / python / halimbawa / gan / mnist.zip
...
Nakatutulong ito para sa akin. Kung hindi ito makakatulong sa iyo, alisin lamang ang iba pang mga linya na may mga zip file (tingnan ang mga detalye dito). Ang layunin ng aktibidad na ito ay upang mapanatili ang simpleng_console_for_windows.zip na mas mababa sa 2 GB ang haba.

Tanggalin ang walang laman na file na "simple_console_for_windows.zip".

Susunod, tingnan ang iyong folder sa bahay. Kailangan mong hanapin ang folder na may pangalang "_bazel_ "Kita n'yo. Sa aking kaso ito ay" _bazel_amsokol ". Naglalaman ito ng mga folder na may mga build file. Sa aking kaso ito ay" lx6zoh4k ". Bumalik sa shell ng isang run (ayon sa iyong mga pangalan ng folder na tama):

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

Manu-manong likhain ang file na "simple_console_for_windows.zip":

panlabas na \ bazel_tools \ tool \ zip \ zipper \ zipper.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / mga tool / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / mga tool / pip_package / simple_console_for_windows.zip-0.params

Patakbuhin ang utos upang lumikha ng isang python wheel file:

cd C: \ Gumagamit \ amsokol \ Development \ tensorflow-build \ tenorflow
bazel-bin \ tensorflow \ mga tool \ pip_package \ build_pip_package .. \ out

Lumilikha ito ng tensorflow-1.11.0-cp36-cp36m-win_amd64.whl file sa folder na ".. \ out".

Hakbang 12: i-install ang TensorFlow wheel file para sa Python 3.6 at suriin ang resulta

Patakbuhin ang utos upang mai-install ang file ng Python Wheel:

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

Lumabas sa direktoryo ng Tensorflow

cd ..

Upang suriin ang download script dito o upang patakbuhin ito sa pamamagitan ng kopya at i-paste:

I-import ang Tensorflow bilang tf hello = tf.constant ('Hello, TensorFlow!') Session = tf.Session () print (session.run (hello))

Kung naglalabas ang system ng sumusunod, maayos ang lahat:

Kumusta TensorFlow!

Ang aking output:

Matagumpay mong na-install ang TensorFlow sa isang Windows computer.

Ipaalam sa akin sa mga komento sa ibaba kung ito ay gumagana para sa iyo. O kung mayroon kang anumang mga pagkukulang. Maraming salamat!