[Актуализация 1] Как да създадете и инсталирате TensorFlow GPU / CPU за Windows от изходния код, използвайки bazel и Python 3.6

Това е актуализация за предишната ми история. Какво е новото тук:
- TensorFlow v1.11
- CUDA v10.0
- cuDNN v7.3
На официален сайт има водач. Понякога не е много изчерпателен, но полезен.
резюме
- Инсталирайте Git за Windows
- Инсталирайте Bazel
- Инсталирайте MSYS2 x64 и инструменти за команден ред
- Инсталирайте Visual Studio 2017 Build Tools, включително Visual Studio 2015 Build Tools
- Инсталирайте Python 3.6 64-бита
- Инсталирайте NVIDIA CUDA 10.0 и cuDNN 7.3 (за ускорение на графичния процесор)
- Конфигурирайте среда за изграждане
- Clone TensorFlow v1.11 изходен код и приложи задължителна корекция
- Конфигурирайте параметрите на сглобяване
- Изградете TensorFlow от източници
- Създайте колесен файл за TensorFlow за Python 3.6
- Инсталирайте колелото на 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-
Добавете 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 машина.
Кажете ми в коментарите по-долу, ако е работил за вас. Или ако имате някакви грешки. Благодаря!