[Абнаўленне 1] Стварэнне і ўстаноўка графічнага працэсара / працэсара TensorFlow для 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, у тым ліку інструменты зборкі Visual Studio 2015
  5. Усталюйце 64-разрадную версію Python 3.6
  6. Усталюйце NVIDIA CUDA 10.0 і cuDNN 7.3 (для паскарэння GPU)
  7. Наладзьце асяроддзе зборкі
  8. Клонуйце зыходны код TensorFlow v1.11 і ўжыце абавязковае выпраўленне
  9. Наладзьце параметры зборкі
  10. Пабудуйце TensorFlow з крыніц
  11. Стварыце файл колы TensorFlow для Python 3.6
  12. Усталюйце файл колы TensorFlow для Python 3.6 і праверце вынік

Крок 1: Усталюйце Git для Windows

Загрузіце і ўсталюйце Git для Windows. Я бяру яго тут. Пераканайцеся, што шлях да git.exe быў дададзены да зменнай асяроддзя% PATH%. Я ўсталёўваю Git на

C: \ Bin \ Git

Папка для гэтага падручніка.

Крок 2: Усталюйце MSYS2 x64 і інструменты каманднага радка

Загрузіце і ўсталюйце 64-разрадны дыстрыбутыў тут. Bazel выкарыстоўвае grep, patch, unzipand і іншыя парты з інструментаў Unix для стварэння крыніц. Вы можаце паспрабаваць знайсці аўтаномныя двайковыя файлы для кожнага з іх, але я аддаю перавагу выкарыстоўваць пакет MSYS2. Я ўсталёўваю яго на

C: \ Bin \ msys64

Папка для гэтага падручніка. Вам трэба дадаць тэчку інструментаў да зменнай асяроддзя% PATH%. У маім выпадку гэта "C: \ Bin \ msys64 \ usr \ bin".

Пачніце спасылку "MSYS2 MinGW 64-Bit" з меню "Пуск". Каб абнавіць, запусціце наступную каманду (перазапусціце MSYS2 MinGW 64-bit пры запыце):

Пакман Сю

Затым запусціце:

Пакман -су

Для зборкі неабходныя прылады ўстаноўкі:

Разархівуйце патч Pacman

Зачыніце 64-бітную абалонку MSYS2 MinGW камандай "выхад". Нам гэта ўжо не трэба.

Крок 3: Усталюйце інструменты зборкі Visual Studio 2017, у тым ліку інструменты зборкі Visual Studio 2015

Нам трэба ўсталяваць 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 звярніцеся да праблем.

Дадайце глабальную зменную асяроддзя BAZEL_SH для пазіцыі bash. Мой шлях ёсць

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

Дадайце глабальную зменную асяроддзя BAZEL_VC для набору інструментаў "VC ++ 2015.3 v14.00 (v140) для працоўнага стала":

C: \ Праграмныя файлы (x86) \ Microsoft Visual Studio 14.0 \ VC

Крок 5: Усталюйце 64-біт Python 3.6

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. Перайдзіце ў папку, якую вы загрузілі, і распакуйце паштовы файл.

Перайдзіце ў вынятую тэчку і скапіруйце ўсе файлы і тэчкі з папкі cuda (напрыклад, bin, include, lib) і ўстаўце іх у "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 "адзін.

Апошні крок - дадаць "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" да зменнай асяроддзя% PATH%.

Крок 7: Наладзьце асяроддзе зборкі

Запусціце абалонку VC ++ 2015 для x64 (ярлык «Камандны радок VS2015 x64 Native Tools») з меню «Пуск».

Далей вам трэба стварыць, актываваць і наладзіць асяроддзе Python. Выканайце наступныя каманды абалонкі ў «Камандным радку VS2015 x64 Native Tools» (выправіце шляхі ў адпаведнасці з вашымі пазіцыямі).

pip3 усталяваць -U virtualenv
virtualenv --system-site-пакеты C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

Ваша абалонка павінна выглядаць наступным чынам пасля ўжытых каманд:

Усталюйце абавязковыя пакеты Python:

pip3 ўсталяваць шэсць Numpy кола
pip3 усталяваць keras_applications == 1.0.5 --no-deps
pip3 усталяваць keras_preprocessing == 1.0.3 --no-deps

Запусціце "спіс pip3", каб пераканацца, што ўсталяваны абавязковыя пакеты:

На гэты момант усё. Не закрывайце міску.

Крок 8: Клонуйце зыходны код TensorFlow і ўжыце абавязковае выпраўленне

Па-першае, вам трэба выбраць тэчку, у якую вы хочаце кланаваць зыходны код TensorFlow. У маім выпадку гэта "C: \ Users \ amsokol \ Development \ tensorflow-build". Вярнуцца да абалонкі і запусціць:

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

Клон зыходнага кода:

Клон Git https://github.com/tensorflow/tensorflow

Праверце апошнюю версію 1.11:

кампакт-дыск
git checkout v1.11.0

Цяпер у нас ёсць крыніцы.

Ёсць памылка ў іх уласнай бібліятэцы. Нам трэба выправіць гэта перад будаўніцтвам.
  • Загрузіце патч сюды і захавайце яго з імем файла 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: Модуль "Сайт" не мае атрыбута "getsitepackages" Знойдзены магчымы шлях да бібліятэкі Python: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-пакеты Калі ласка, увядзіце патрэбны шлях да бібліятэкі Python. Стандартным з'яўляецца [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-пакеты]

Тады вас папросяць падтрымаць nGraph. Нам гэта не трэба. Націсніце "n":

Вы хочаце пабудаваць TensorFlow з падтрымкай nGraph? [Да / Н]: n Падтрымка nGraph не актывавана для TensorFlow.

Тады ён просіць падтрымкі CUDA:

Вы хочаце пабудаваць TensorFlow з падтрымкай CUDA? [Д / Н]:

Адкажыце "y", калі хочаце выкарыстоўваць паскарэнне GPU. У адваротным выпадку націсніце "n".

Калі так для канфігуратара CUDA, задаюцца дадатковыя пытанні:
Адказ 10.0 як версія CUDA SDK:
Укажыце версію CUDA SDK, якую вы хочаце выкарыстоўваць. [Пакіньце пустым па змаўчанні CUDA 9.0]: 10.0
Націсніце Enter, каб выйсці з месца па змаўчанні набору інструментаў CUDA:
Укажыце, дзе ўсталяваны набор інструментаў CUDA 10.0. Для атрымання дадатковай інфармацыі наведайце README.md. [Па змаўчанні C: / Programs / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Адказ 7.3.1 як версія cuDNN:
Укажыце патрэбную версію CuDNN. [Пакіньце пустым, каб выкарыстоўваць cuDNN 7.0 па змаўчанні]: 7.3.1
Націсніце Enter, каб выйсці са стандартнага месцазнаходжання бібліятэкі cuDNN:
Калі ласка, увядзіце месца, дзе ўсталявана бібліятэка cuDNN 7. Для атрымання дадатковай інфармацыі наведайце README.md. [Па змаўчанні C: / Programs / NVIDIA GPU Computing Toolkit / 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

Наступнае пытанне - усталяваць сцягі аптымізацыі. У мяне працэсар Intel 6-га пакалення, таму я адказваю / arch: AVX2:

Укажыце сцягі аптымізацыі, якія будуць выкарыстоўвацца падчас кампіляцыі, калі ўказана базельская опцыя "--config = opt". [Па змаўчанні / arch: AVX]: / arch: AVX2

Апошняе пытанне - пра Айген. Адкажыце "у". Гэта рэзка скарачае час кампіляцыі.

Вы хочаце перавызначыць сваю ўласную інлайн-версію для некаторых кампіляцый 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 Wheel:

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

Не атрымліваецца:

Існуе вядомая праблема. Паглядзіце папку "bazel-bin \ tensorflow \ tools \ pip_package". Ён змяшчае файл "simple_console_for_windows.zip" нулявой даўжыні. У гэтым праблема. Bazel уключае 32-бітную ўтыліту, якая не працуе на 2 ГБ большага файла. Глядзіце спасылкі для атрымання падрабязнасцей і абыходных шляхоў:

  • 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

Ёсць крокі для ліквідацыі праблемы:

Кампакт-дыск. \ bazel-bin \ tensorflow \ tools \ pip_package

Адкрыйце файл "simple_console_for_windows.zip-0.params" і выдаліце ​​радок з "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / examples / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / contrib / eager / python / examples / 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_packa simple_console_for_windows.zip-0.params

Выканайце каманду для стварэння файла Python Wheel:

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

Ён стварае файл tensorflow-1.11.0-cp36-cp36m-win_amd64.whl у тэчцы ".. \ out".

Крок 12: усталюйце файл колы TensorFlow для Python 3.6 і праверце вынік

Выканайце каманду, каб усталяваць файл Python Wheel:

pip3 усталяваць .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

Выйдзіце з каталога Tensorflow

дыск ..

Каб праверыць тут сцэнар загрузкі альбо запусціць яго шляхам капіявання і ўстаўкі:

Імпартаваць Tensorflow як tf hello = tf.constant ('Прывітанне, TensorFlow!') Session = tf.Session () print (session.run (hello))

Калі сістэма выводзіць наступнае, усё ў парадку:

Прывітанне, TensorFlow!

Мой выхад:

Цяпер вы паспяхова ўсталявалі TensorFlow на кампутары з Windows.

Дайце мне ведаць у каментарах ніжэй, калі гэта вам спадабалася. Ці калі ў вас ёсць якія-небудзь недахопы. Вялікі дзякуй!