[Актуализация 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 Build Tools, включително Visual Studio 2015 Build Tools
  5. Инсталирайте Python 3.6 64-бита
  6. Инсталирайте NVIDIA CUDA 10.0 и cuDNN 7.3 (за ускорение на графичния процесор)
  7. Конфигурирайте среда за изграждане
  8. Clone 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, разархивиране и други портове на Unix-инструменти за изграждане на източници. Можете да опитате да намерите самостоятелни двоични файлове за всеки от тях, но предпочитам да използвате пакет MSYS2. Инсталирам го на

C: \ Bin \ msys64

папка за този урок. Трябва да добавите папка с инструменти към променлива среда% PATH%. В моя случай е „C: \ Bin \ msys64 \ usr \ bin“.

Стартирайте "MSYS2 MinGW 64-битов" пряк път от менюто "Старт". Изпълнете следната команда за актуализация (рестартирайте „MSYS2 MinGW 64-битов“, ако поиска):

Pacman -Syu

След това стартирайте:

pacman -Su

Инструментите за инсталиране са необходими за изграждането:

pacman -S кръпка разархивирайте

Затворете „MSYS2 MinGW 64-битов“ черупка от командата „изход“. Не ни е нужен вече.

Стъпка 3: Инсталирайте Visual Studio 2017 Build 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. Тествал съм този урок с леска 0,17.2. Преименувайте двоичния файл на bazel.exe и го преместете в директория на% PATH%, така че можете да стартирате Bazel, като въведете bazel във всяка директория. Вижте подробности за инсталирането на Bazel за Windows x64 в случай на проблеми.

Добавете BAZEL_SH глобална променлива среда за bash местоположение. Моят път е

C: \ Bin \ msys64 \ ЮЕсАр \ бин \ 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 (за ускорение на графичния процесор)

Този раздел е действителен, ако имате NVIDIA графична карта, която поддържа CUDA. В противен случай пропуснете този раздел.
Вижте стъпка по стъпка инсталирането на CUDA тук, ако имате нужда от помощ. Копирам и поставям това ръководство, но изрязвам някои подробности.

Отидете на https://developer.nvidia.com/cuda-downloads и изтеглете CUDA 10.0 Installer за Windows [вашата версия]. За мен версията е Windows 10.

Инсталирайте го на място по подразбиране с настройки по подразбиране, но премахнете отметката от опцията за интегриране на VisualStudio. Той ще актуализира вашия драйвер за графичен процесор, ако е необходимо, и рестартирайте.

Отидете да стартирате (Win + R) тип cmd

Следващата команда ще провери за nvcc версия и ще гарантира, че тя е зададена в променлива среда на пътя.

nvcc --версия

Следващо отидете на https://developer.nvidia.com/cudnn (Необходимо е членство).

След влизане изтеглете следното:

cuDNN v7.3.1 Библиотека за Windows [вашата версия] за мен Windows 10. Оттеглете папка и извлечете zip файл.

Влезте вътре в извлечена папка и копирайте всички файлове и папка от папка 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 Command Prompt“) от менюто Start.

След това трябва да създадете, активирате и конфигурирате Python среда. Изпълнете вътре командите „VS2015 x64 Native Tools Command Prompt“ (коригирайте пътеките според местоположенията си).

pip3 инсталирате -U virtualenv
virtualenv --system-site-пакети C: \ Потребители \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

Вашата обвивка трябва да изглежда така, след като се прилагат команди:

Инсталирайте задължителните пакети Python:

pip3 инсталирате шест колело
pip3 инсталирайте keras_applications == 1.0.5 --no-deps
pip3 инсталирайте keras_preprocessing == 1.0.3 --no-deps

Пуснете „pip3 list“, за да се уверите, че задължителните пакети са инсталирани:

Това е всичко за сега. Не затваряйте черупката.

Стъпка 8: Clone TensorFlow изходния код и прилагайте задължителна корекция

На първо място трябва да изберете папка, в която да клонирате изходния код на TensorFlow. В моя случай е „C: \ Users \ amsokol \ Development \ tensorflow-build“. Обратно към черупката и стартирайте:

cd C: \ Потребители \ amsokol \ Развитие \ tensorflow-build

Клонирайте изходния код:

git clone 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 = "eigen-eigen-fd6845384b86",
  build_file = clean_dep ("// Third_party: eigen.BUILD"),
  patch_file = clean_dep ("// трети_парти: eigen_half.patch"),
)
...

Свършен.

Стъпка 9: Конфигуриране на параметрите на сглобяване

Уверете се, че сме в основната папка на изходния код:

cd C: \ Потребители \ amsokol \ Развитие \ tensorflow-build \ tensorflow

Изпълнете конфигуратора:

python ./configure.py

Първо пита местоположението на Python. Натиснете Enter, за да оставите стойността по подразбиране:

...
Имате инсталиран базал 0.17.2.
Моля, посочете местоположението на python. [По подразбиране е C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

След това пита местоположението на Python библиотека пътеки. Натиснете Enter, за да оставите стойността по подразбиране:

Traceback (последно последно обаждане):
  Файл "", ред 1, в 
AttributeError: модул 'site' няма атрибут 'getitepackages'
Намерени възможни пътеки към библиотеката на Python:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ либералните \ мястото на опаковки
Моля, въведете желания път на библиотеката Python, който да използвате. По подразбиране е [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-пакети]

Тогава тя пита за поддръжка на nGraph. Не ни трябват. Натиснете „n“:

Искате ли да изградите TensorFlow с поддръжка на nGraph? [y / N]: n
Няма поддръжка на nGraph за TensorFlow.

Тогава той пита за поддръжката на CUDA:

Искате ли да изградите TensorFlow с поддръжка на CUDA? [Y / N]:

Отговорете с „y“, ако ще използвате графично ускорение. В противен случай натиснете „n“.

В случай на Да за CUDA конфигураторът задава допълнителни въпроси:
Отговорете 10.0 като версия на CUDA SDK:
Моля, посочете версията на CUDA SDK, която искате да използвате. [Оставете празно по подразбиране до CUDA 9.0]: 10.0
Натиснете Enter, за да оставите местоположението на CUDA инструментариум по подразбиране:
Моля, посочете местоположението, където е инсталиран инструментарият за CUDA 10.0. Вижте README.md за повече подробности. [По подразбиране е C: / Program Files / 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: / Program Files / 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

Следващият въпрос е да зададете флагове за оптимизация. Имам 6-ти генерален процесор Intel, затова отговарям / арх: AVX2:

Моля, посочете оптимизационни флагове, които да се използват по време на компилация, когато е зададена опция "--config = opt" [По подразбиране е / arch: AVX]: / arch: AVX2

Последният въпрос е за eigen. Отговорете „у“. Той намалява драстично времето за компилиране.

Бихте ли искали да отмените eigen strong inline за някаква C ++ компилация, за да намалите времето за компилация? [Y / n]: y
Eigen силен инлайн отменен.

Конфигурацията е завършена. Да строим.

Стъпка 10: Създайте TensorFlow от източници

Уверете се, че сме в основната папка на изходния код:

cd C: \ Потребители \ amsokol \ Развитие \ tensorflow-build \ tensorflow
Изграждането отнема много време. Горещо препоръчвам да изключите антивирусен софтуер, включително защитата в реално време на Windows Defender Antivirus.

Изпълнете изграждането:

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

Седнете и се отпуснете по някое време.

Стъпка 11: Създайте колесен файл на TensorFlow за Python 3.6

Изпълнете команда, за да създадете Python колело файл:

mkdir .. \ вън
кошче за баница \ tensorflow \ инструменти \ pip_package \ build_pip_package .. \ out

Не успява:

Има известен проблем. Погледнете папката „bzel-bin \ tensorflow \ tools \ pip_package“. Той съдържа файл с нулева дължина „simple_console_for_windows.zip“. Това е проблема. Bazel съдържа 32-битова програма с цип, която не успява за файл с 2 GB по-голям размер. Вижте връзки за подробности и решение:

  • 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 / допринесоха / желание / питон / примери / Gan / mnist.zip = Базелската изход / x64_windows-отказване / бен / tensorflow / допринесоха / желание / питон / примери / Gan / mnist.zip
...
Помага ми. В случай, че не ви помогне, просто премахнете други линии с zip файлове (вижте подробности тук). Целта на тази дейност е да направи дължината на "simple_console_for_windows.zip" по-малка от 2 GB.

Изтрийте празния файл „simple_console_for_windows.zip“.

След това погледнете домашната си папка. Трябва да видите папката с име като "_bazel_ <потребителско име>". В моя случай е „_bazel_amsokol“. Съдържа папка с файлове за изграждане. В моя случай е „lx6zoh4k“. Обратно към черупката на изпълнение (правилно според имената на вашата папка):

cd C: \ Потребители \ 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_pac simple_console_for_windows.zip-0.params

Изпълнете команда, за да създадете Python колело файл:

cd C: \ Потребители \ amsokol \ Развитие \ tensorflow-build \ tensorflow
кошче за баница \ tensorflow \ инструменти \ pip_package \ build_pip_package .. \ out

Той създава файл tensorflow-1.11.0-cp36-cp36m-win_amd64.whl в папката ".. \ out".

Стъпка 12: Инсталирайте колелото на TensorFlow за Python 3.6 и проверете резултата

Изпълнете команда, за да инсталирате колелото на Python:

pip3 инсталиране .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

Оставете директорията „tensorflow“ (грешки се случват понякога, когато пускам скриптове на Python в папката с изходния код на Tensoflow - не знам причината):

cd ..

За да направите проверка за изтегляне на скрипт тук или копирайте и поставете:

внос tensorflow като tf
hello = tf.constant ('Здравей, TensorFlow!')
сесия = tf.Session ()
печат (session.run (здравей))

Ако системата изведе следното, тогава всичко е наред:

Здравейте, TensorFlow!

Моят резултат:

Вече успешно инсталирате TensorFlow на Windows машина.

Кажете ми в коментарите по-долу, ако е работил за вас. Или ако имате някакви грешки. Благодаря!