[Навсозии 1] Таҳия ва насби TensorFlow GPU / CPU барои Windows аз рамзи манбаъ бо Bazel ва Python 3.6

Ин навсозӣ ба ҳикояи қаблии ман аст. Ин ҷо навигарӣ:

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

Дар сайти расмӣ дастурҳо мавҷуданд. Ин чандон фарогир нест, аммо баъзан муфид аст.

Хулоса

  1. Git барои Windows насб кунед
  2. Bazel насб кунед
  3. MSYS2 x64 ва асбобҳои сатри фармонро насб кунед
  4. Visual Studio 2017 Tools Tools, аз ҷумла Visual Studio 2015 Build Tools -ро насб кунед
  5. Python 3.6 64-bit насб кунед
  6. NVIDIA CUDA 10.0 ва cuDNN 7.3 насб кунед (барои шитоби GPU)
  7. Муҳити сохтмонро танзим кунед
  8. Рамзи манбаи TensorFlow v1.11 -ро клон кунед ва ямоқи ҳатмиро ба кор баред
  9. Параметрҳои сохташударо танзим кунед
  10. Сохтани TensorFlow аз манбаъҳо
  11. Барои Python 3.6 файли чархи TensorFlow эҷод кунед
  12. Файли чархи TensorFlow -ро барои Python 3.6 насб кунед ва натиҷаро санҷед

Қадами 1: Git барои Windows насб кунед

Гитро барои Windows зеркашӣ ва насб кунед. Ман онро дар ин ҷо мегирам. Боварӣ ҳосил кунед, ки роҳи git.exe ба тағирёбандаи% PATH% муҳити зист илова карда шудааст. Ман Git-ро насб мекунам

C: \ Bin \ Git

Папка барои ин дастур.

Қадами 2: MSYS2 x64 ва Tools Line Command -ро насб кунед

Тақсимоти 64-битро дар ин ҷо зеркашӣ ва насб кунед. Базел барои сохтани манбаъҳо аз асбобҳои Unix grep, patch, unzipand ва дигар портҳоро истифода мебарад. Шумо метавонед кӯшиш кунед, ки бинарҳои мустақилро барои ҳар кадоми онҳо пайдо кунед, аммо ман истифодаи бастаи MSYS2-ро афзал медонам. Ман онро дар

C: \ Bin \ msys64

Папка барои ин дастур. Шумо бояд ҷузвдони асбобҳоро ба тағирёбандаи% PATH% муҳити атроф илова кунед. Дар ҳолати ман он "C: \ Bin \ msys64 \ usr \ bin" аст.

Истиноди "MSYS2 MinGW 64-Bit" -ро тавассути менюи оғоз оғоз кунед. Барои навсозӣ фармони зеринро иҷро кунед (MSYS2 MinGW 64-bit-ро ҳангоми дархост дубора оғоз кунед):

Пакман Сю

Пас иҷро кунед:

Пакман -Су

Барои сохтан асбобҳои насбкунӣ заруранд:

Ямоқи Пакманро кушоед

Қабати MSYS2 MinGW 64-битаро бо фармони "баромадан" пӯшед. Дигар ба мо ин лозим нест.

Қадами 3: Visual Studio 2017 Tools Tools, аз ҷумла Visual Studio 2015 Build Tools -ро насб кунед

Мо бояд VC ++ 2015.3 v14.00 (v140) -ро барои лавозимоти мизи корӣ аз Visual Studio 2017 Build Tools барои сохтани TensorFlow v1.11 насб кунем:

Қадами 4: Bazel насб кунед

Базели навтаринро дар ин ҷо зеркашӣ кунед. Файли bazel- ро ҷустуҷӯ кунед -windows-x86_64.exe. Ман ин дастурро бо Bazel 0.17.2 озмоиш кардам. Дуӣро ба bazel.exe тағир диҳед ва онро ба% PATH% ба директория интиқол диҳед, то ки шумо Bazel-ро бо навиштани bazel дар ягон директория иҷро кунед. Барои гирифтани тафсилот дар бораи насби Bazel барои Windows x64, лутфан ба мушкилот муроҷиат кунед.

Барои мавқеи bash тағирёбандаи ҷаҳонии муҳити BAZEL_SH илова кунед. Роҳи ман ин аст

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

Иловаи тағирёбандаи ҷаҳонии муҳити атроф BAZEL_VC барои абзор "VC ++ 2015.3 v14.00 (v140) for desktop":

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

Қадами 5: Python 3.6 64-bit насб кунед

TensorFlow Python 3.7 -ро пуштибонӣ намекунад, бинобар ин шумо бояд версияи 3.6 -ро насб кунед.
Чунин ба назар мерасад, ки TensorFlow v1.11 дигар Anaconda / Miniconda -ро барои сохтан дастгирӣ намекунад - Ман хатои аҷибе ба даст меорам. Ин аст, ки ман барои эҷоди муҳити маҷозии Python истифода мекунам.

Python 3.6 барои зеркашӣ аз ин ҷо дастрас аст. Онро насб кунед ва макони python.exe -ро ба тағирёбанда% PATH% илова кунед.

Қадами 6: NVIDIA CUDA 10.0 ва cuDNN 7.3 -ро насб кунед (барои шитоби GPU)

Агар шумо корти графикии NVIDIA дошта бошед, ки CUDA-ро дастгирӣ мекунад, ин бахш амал мекунад. Дар акси ҳол, ин бахшро гузаред.
Насби қадам ба қадами CUDA дар ин ҷо мавҷуд аст, агар ба шумо кӯмак лозим бошад. Ман ин дастурро нусхабардорӣ мекунам, аммо баъзе ҷузъиётро бурида истодаам.

Ба https://developer.nvidia.com/cuda-downloads гузаред ва насбкунандаи CUDA 10.0 -ро барои Windows [версияи худ] зеркашӣ кунед. Барои ман версияи Windows 10 аст.

Онро дар феҳристи пешфарз бо танзимоти пешфарз насб кунед, аммо варианти ҳамгироии VisualStudio-ро ғайрифаъол кунед. Ронандаи GPU нав карда мешавад ва дар ҳолати зарурӣ аз нав оғоз меёбад.

Фармони cmd (Win + R) -ро иҷро кунед

Фармони зерин версияи nvcc-ро месанҷад ва кафолат медиҳад, ки он дар тағирёбандаи муҳити роҳ ҷойгир карда шудааст.

nvcc - нусхабардорӣ

Ба https://developer.nvidia.com/cudnn гузаред (узвият ҳатмист).

Пас аз ворид шудан, зеркашӣ кунед:

cuDNN v7.3.1 Китобхона барои Windows [версияи шумо] барои ман Windows 10. Ба ҷузвдони зеркашишуда равед ва файли zip-ро бароред.

Ба ҷузвдони истихроҷшуда равед ва ҳамаи файлҳо ва ҷузвдонҳоро аз ҷузвдони cuda нусхабардорӣ кунед (масалан, бин, include, lib) ва онҳоро ба "C: \ Program Files \ NVIDIA GPU Computing Tool \ CUDA \ v10.0 часпонед "як.

Марҳилаи ниҳоӣ илова кардани "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" ба тағирёбандаи% PATH% муҳити зист аст.

Қадами 7: муҳити сохтмонро танзим кунед

Shell VC ++ 2015 -ро барои x64 оғоз кунед (миёнабури "VS2015 x64 Native Tools Native Tools") аз менюи оғоз.

Баъд, ба шумо лозим аст, ки муҳити Python -ро эҷод, фаъол ва ба танзим дароред. Дар "VS2015 x64 Native Tools Native Command Prompt" фармонҳои зерини ниҳониро иҷро кунед (роҳҳоро мувофиқи ҷойгоҳатон ислоҳ кунед).

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

Баъд аз фармонҳои истифодашуда, ниҳонии шумо бояд чунин бошад:

Бастаҳои ҳатмии Python насб кунед:

pip3 шаш чархи карахт насб кунед
pip3 install keras_applications == 1.0.5 --no-deps
pip3 install keras_preprocessing == 1.0.3 --no-deps

Барои иҷро кардани бастаҳои ҳатмӣ "рӯйхати pip3" -ро иҷро кунед:

Ин ҳама ҳоло аст. Косаро пӯшонед.

Қадами 8: Рамзи манбаи TensorFlow -ро клон кунед ва ямоқи ҳатмиро ба кор баред

Аввалан, шумо бояд ҷузвдонеро интихоб кунед, ки дар он шумо мехоҳед коди сарчашмаи TensorFlow клон карда шавад. Дар ҳолати ман ин "C: \ Users \ amsokol \ Development \ tensorflow-build" аст. Бозгашт ба ниҳонӣ ва давидан:

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

Рамзи манбаи клон:

Клитро гиред https://github.com/tensorflow/tensorflow

Тафтиши версияи охирини 1.11:

CD tensorflow
git checkout v1.11.0

Ҳоло мо манбаъҳо дорем.

Дар китобхонаи шахси сеюми онҳо BUG мавҷуд аст. Мо бояд онро пеш аз сохтан ислоҳ кунем.
  • Ямоқи инҷоро зеркашӣ кунед ва бо номи файл eigen_half.patch дар ҷузвдони third_party сабт кунед
  • Patch_file = clean_dep ("// third_party: eigen_half.patch") илова кунед, сатрро ба бахши "eigen_archive" -и файли tensorflow / workspace.bzl илова кунед.

Натиҷа дар файли tensorflow / workspace.bzl бояд чунин бошад:

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

Шуд

Қадами 9: параметрҳои сохташударо танзим кунед

Боварӣ ҳосил кунед, ки мо дар ҷузвдони решаи коди сарчашма ҳастем:

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

Танзимкунандаро иҷро кунед:

python ./configure.py

Аввал аз шумо макони Python пурсида мешавад. Барои нигоҳ доштани арзиши пешфарз Enter -ро пахш кунед:

... шумо bazel 0.17.2 насб кардаед.
Лутфан маҳалли ҷойгиршавии Python -ро нишон диҳед. [Стандарт C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe] аст:

Пас аз шумо роҳи китобхонаи Python талаб карда мешавад. Барои нигоҳ доштани арзиши пешфарз Enter -ро пахш кунед:

Пайгирӣ (занги охирин охирин): файл " ", Сатри 1, дар AttributeError: Модули 'Site' атрибуте надорад 'getsitepackages' Роҳҳои имконпазири китобхонаи Python ёфт: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages Лутфан роҳи китобхонаи Python -и дилхоҳро ворид кунед. Стандарт [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages] мебошад.

Он гоҳ аз шумо барои дастгирии nGraph дархост карда мешавад. Мо ба он ниёз надорем. "N" -ро пахш кунед:

Шумо мехоҳед TensorFlow -ро бо дастгирии nGraph созед? [Y / N]: n nGraph дастгирии TensorFlow фаъол карда нашудааст.

Он гоҳ аз дастгирии CUDA мепурсад:

Оё шумо мехоҳед TensorFlow -ро бо дастгирии CUDA созед? [Y / N]:

Агар шумо хоҳед, ки шитоби GPU-ро истифода баред, ба "y" ҷавоб диҳед. Дар акси ҳол, "n" -ро пахш кунед.

Агар барои конфигуратори CUDA ҳа, саволҳои иловагӣ дода мешаванд:
Ҷавоби 10.0 ҳамчун версияи CUDA SDK:
Лутфан версияи CUDA SDK-ро, ки мехоҳед истифода баред, нишон диҳед. [Ба тариқи пешфарз ба CUDA 9.0 холӣ гузоред]: 10.0
Барои баромадан аз макони пешфарзии абзор CUDA Enter -ро пахш кунед:
Лутфан маҳалли ҷойгиршавии абзори CUDA 10.0 -ро муайян кунед. Барои маълумоти иловагӣ ба README.md нигаред. [Бо нобаёнӣ C: / Programs / Toolkit NVIDIA GPU Computing / CUDA / v10.0] аст:
Ҷавоби 7.3.1 ҳамчун версияи cuDNN:
Лутфан версияи cuDNN-и дилхоҳро нишон диҳед. [Барои истифодаи cuDNN 7.0 бо нобаёнӣ холӣ монед]: 7.3.1
Барои баромадан аз макони пешакии китобхонаи cuDNN Enter -ро пахш кунед:
Лутфан маҳалли ҷойгиршавии китобхонаи cuDNN 7 -ро ворид кунед. Барои маълумоти иловагӣ ба README.md нигаред. [Бо нобаёнӣ C: / Programs / Toolkit NVIDIA GPU Computing / CUDA / v10.0] аст:
Саволи навбатӣ ба функсияҳои арифметикии CUDA дахл дорад, ки метавонанд барои сохтан истифода шаванд. Шумо метавонед иқтидори компютерии дастгоҳи худро дар суроғаи зерин пайдо кунед: https://developer.nvidia.com/cuda-gpus. Ман GTX 1070 дорам, пас ба 6.1 ҷавоб медиҳам:
Рӯйхати функсияҳои математикии Cuda-ро бо вергул ҷудо кунед, ки мехоҳед сохтан мехоҳед. Шумо метавонед иқтидори компютерии дастгоҳи худро дар суроғаи зерин пайдо кунед: https://developer.nvidia.com/cuda-gpus. Лутфан қайд кунед, ки ҳар як функсияи иловагии ҳисобкунӣ вақти эҷод ва андозаи дутарафаро хеле зиёд мекунад. [Бо нобаёнӣ: 3.5.7.0]: 6.1

Саволи навбатӣ гузоштани парчамҳои оптимизатсия мебошад. Ман насли 6-уми Intel CPU дорам, бинобар ин ман ҷавоб медиҳам / нимдоир: AVX2:

Лутфан парчамҳои оптимизатсияро, ки ҳангоми тартиб додан истифода мешаванд, муайян кунед, агар опсияи Базел "--config = opt" таъин шуда бошад. [Бо нобаёнӣ ин / arch: AVX]: / arch: AVX2

Саволи охирин дар бораи Эйген аст. Бо "y" ҷавоб диҳед. Он вақти тартибдиҳиро якбора коҳиш медиҳад.

Оё шумо мехоҳед, ки inline қавии худро барои баъзе компилятсияҳои C ++ барои коҳиш додани вақти тартибдиҳӣ рад кунед? [Y / n]: Y Eigen ба сатр хаттӣ навиштааст.

Конфигуратсия ба анҷом расид. Биёед созем.

Қадами 10: сохтани TensorFlow аз манбаъҳо

Боварӣ ҳосил кунед, ки мо дар ҷузвдони решаи коди сарчашма ҳастем:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Барои сохтан муддати дарозе лозим аст. Ман қатъиян тавсия медиҳам, ки нармафзори антивирусӣ, аз ҷумла ҳифзи Windows Defender Antivirus ҳифзи вақти воқеӣ.

Сохтмонро иҷро кунед:

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

Муддате нишаста истироҳат кунед.

Қадами 11: файли чархи TensorFlow барои Python 3.6 созед

Барои сохтани файли чархи python фармонро иҷро кунед:

мкдир .. \ баромад
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ берун

Ин ноком мешавад:

Мушкилоти маълум вуҷуд дорад. Ба ҷузвдони "bazel-bin \ tensorflow \ tools \ pip_package" нигаред. Он дорои файли "simple_console_for_windows.zip" бо дарозии сифр мебошад. Ин мушкилот дар он аст. Bazel як утилитаи 32-bit zip -ро дар бар мегирад, ки дар файли 2GB калонтар кор намекунад. Барои тафсилот ва ҳалли муваққатӣ ба истинодҳо нигаред:

  • 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

Қадамҳо барои ислоҳи мушкилот мавҷуданд:

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

Файли "simple_console_for_windows.zip-0.params" -ро кушоед ва сатрро бо "mnist.zip" хориҷ кунед:

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / example / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / sample / gan / mnist.zip
...
Ин ба ман кӯмак мекунад. Агар он ба шумо кӯмак накунад, танҳо сатрҳои дигарро бо файлҳои zip хориҷ кунед (тафсилотро дар инҷо бубинед). Ҳадафи ин фаъолият нигоҳ доштани simple_console_for_windows.zip аз дарозии камтар аз 2 ГБ мебошад.

Файли холии "simple_console_for_windows.zip" -ро нест кунед.

Баъд, папкаи хонагии худро аз назар гузаронед. Шумо бояд ҷузвдонеро бо номи "_bazel_" ёбед "Бинед. Дар ҳолати ман ин" _bazel_amsokol "аст. Он ҷузвдонҳои дорои файлҳои сохташударо дар бар мегирад. Дар ҳолати ман он" lx6zoh4k "аст. Бозгашт ба пӯшиши давидан (аз рӯи номҳои ҷузвдони шумо дуруст):

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

Файли "simple_console_for_windows.zip" -ро дастӣ созед:

беруна \ 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

Барои сохтани файли чархи python фармонро иҷро кунед:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ берун

Он файли tensorflow-1.11.0-cp36-cp36m-win_amd64.whl -ро дар ҷузвдони ".. \ out" месозад.

Қадами 12: файли чархи TensorFlow -ро барои Python 3.6 насб кунед ва натиҷаро санҷед

Барои насб кардани файли Python Wheel фармонро иҷро кунед:

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

Аз каталоги Tensorflow хориҷ шавед

CD ..

Барои санҷидани скрипти зеркашӣ дар инҷо ё бо роҳи нусхабардорӣ ва часпонидани он:

Ворид кардани Tensorflow ҳамчун tf hello = tf.constant ('Салом, TensorFlow!') Session = tf.Session () print (session.run (салом))

Агар система чунин натиҷа диҳад, ҳамааш хуб аст:

Салом TensorFlow!

Баромади ман:

Ҳоло шумо TensorFlow-ро дар компютери Windows бомуваффақият насб кардед.

Дар шарҳҳои дар поён овардашуда ба ман хабар диҳед, агар он барои шумо кор кунад. Ё агар шумо ягон камбудие дошта бошед. Ташаккури зиёд!