[1-yangilash] Windows uchun TensorFlow GPU / CPU-ni bazel va Python 3.6 yordamida manba kodidan qanday qilib o'rnatish va o'rnatish.

Bu mening oldingi hikoyam uchun yangilanish. Bu erda nima yangi:

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

Rasmiy saytda ko'rsatma mavjud. Bu juda keng qamrovli emas, lekin ba'zida foydalidir.

Xulosa

  1. Windows uchun Git-ni o'rnating
  2. Bazel-ni o'rnating
  3. MSYS2 x64 va buyruq satri vositalarini o'rnating
  4. Visual Studio 2017 Build vositalari, shu jumladan Visual Studio 2015 Build Tools-ni o'rnating
  5. Python 3.6 64-bitni o'rnating
  6. NVIDIA CUDA 10.0 va cuDNN 7.3-ni o'rnating (GPU tezlashishi uchun)
  7. Yaratish muhitini sozlash
  8. Clone TensorFlow v1.11 kod kodini kiriting va majburiy tuzatishni qo'llang
  9. Yaratish parametrlarini sozlash
  10. Manbalardan TensorFlow yarating
  11. Python 3.6 uchun TensorFlow g'ildirak faylini yarating
  12. Python 3.6 uchun TensorFlow g'ildirak faylini o'rnating va natijani tekshiring

1-qadam: Windows uchun Git-ni o'rnating

Windows uchun Git-ni yuklab oling va o'rnating. Men bu erga olib boraman. Git.exe-ga% PATH% atrof-muhit o'zgaruvchisi qo'shilganligiga ishonch hosil qiling. Men Git-ni o'rnataman

C: \ Bin \ Git

ushbu darslik uchun papka.

2-qadam: MSYS2 x64 va buyruq satri vositalarini o'rnating

Bu erda 64 bitli tarqatishni yuklab oling va o'rnating. Bazel manbalarni yaratish uchun grep, patch, ochish va boshqa Unix-vositalarini ishlatadi. Siz ularning har biri uchun alohida ikkiliklarni topishga harakat qilishingiz mumkin, ammo men MSYS2 to'plamidan foydalanishni afzal ko'raman. Men uni o'rnataman

C: \ Bin \ msys64

ushbu darslik uchun papka. Siz% PATH% muhit o'zgaruvchisiga asboblar bilan papkani qo'shishingiz kerak. Bu mening holatimda "C: \ Bin \ msys64 \ usr \ bin".

"MSYS2 MinGW 64-bit" yorlig'ini Boshlash menyusidan boshlang. Yangilash uchun quyidagi buyruqni bajaring (agar so'ralsa, "MSYS2 MinGW 64-bitni qayta yoqing"):

pacman -Syu

Keyin ishlating:

pacman -Su

O'rnatish uchun vositalar quyidagilar uchun zarur:

pacman -S yamoqni ochish

"Chiqish" buyrug'i bilan "MSYS2 MinGW 64-bit" qobig'ini yoping. Bu bizga boshqa kerak emas.

3-qadam: Visual Studio 2017 Build vositalari, shu jumladan Visual Studio 2015 Build vositalari

TensorFlow v1.11-ni yaratish uchun Visual Studio 2017 Build Tools-dan "VC ++ 2015.3 v14.00 (v140) asboblar to'plamini" o'rnatishimiz kerak:

4-qadam: Bazel-ni o'rnating

So'nggi Bazel-ni yuklab oling. Bazel- -windows-x86_64.exe faylini qidiring. Men ushbu qo'llanmani bazel 0.17.2 yordamida sinab ko'rdim. Ikkilik nomni bazel.exe deb o'zgartiring va uni% PATH% katalogingizga o'tkazing, shunda siz bazelni istalgan katalogga kiritish orqali ishlata olasiz. Muammolar bo'lsa, Windows x64 uchun Bazelni o'rnatish tafsilotlarini ko'rib chiqing.

Boshning joylashuvi uchun BAZEL_SH global atrof-muhit o'zgaruvchisini qo'shing. Mening yo'lim

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

"VC ++ 2015.3 v14.00 (v140) ish stoli uchun asboblar to'plami" uchun zanjir joylashuvi uchun BAZEL_VC global muhitni qo'shing:

C: \ Dastur fayllari (x86) \ Microsoft Visual Studio 14.0 \ VC

5-qadam: Python 3.6 64-bitni o'rnating

TensorFlow Python 3.7-ni qo'llab-quvvatlamaydi, shuning uchun siz 3.6 versiyasini o'rnatishingiz kerak.
TensorFlow v1.11 endi Anaconda / Miniconda-ni qayta qurish uchun qo'llab-quvvatlamaydi - men g'alati xatoga yo'l qo'yaman. Shuning uchun men Python virtual muhitini qurishda foydalanaman.

Python 3.6 dasturini bu erda yuklab olish mumkin. Uni o'rnating va python.exe manziliga% PATH% o'zgaruvchiga qo'shing.

6-qadam: NVIDIA CUDA 10.0 va cuDNN 7.3-ni o'rnating (GPU tezlashishi uchun)

Agar sizda CUDA-ni qo'llab-quvvatlaydigan NVIDIA Grafik kartangiz bo'lsa, ushbu bo'lim haqiqiydir. Aks holda ushbu qismni o'tkazib yuboring.
Agar sizga yordam kerak bo'lsa, CUDA-ning bosqichma-bosqich o'rnatilishini bu erda ko'rib chiqing. Men ushbu qo'llanmani nusxa ko'chirdim, lekin ba'zi tafsilotlarni kesib tashladim.

Https://developer.nvidia.com/cuda-downloads saytiga o'ting va Windows uchun CUDA 10.0 Installer-ni yuklab oling [sizning versiyangiz]. Men uchun versiya Windows 10.

Standart sozlamalar bilan uni odatiy joyga o'rnating, lekin VisualStudio integratsiya variantini olib tashlang. Agar kerak bo'lsa, u sizning GPU drayveringizni yangilaydi va qayta yoqadi.

Run (Win + R) turiga o'ting cmd

Quyidagi buyruq nvcc versiyasini tekshiradi va uning yo'l muhitidagi o'zgaruvchiga o'rnatilganligiga ishonch hosil qiladi.

nvcc - o'zgartirish

Keyingi goto https://developer.nvidia.com/cudnn (a'zolik talab qilinadi).

Kirishdan keyin quyidagilarni yuklab oling:

cuDNN v7.3.1 Windows uchun kutubxona [sizning versiyangiz] men uchun Windows 10. Goto-ni yuklab olgan papka va ZIP-fayl.

Ajratilgan papkaga o'ting va barcha fayllar va papkalarni cuda papkasidan nusxa ko'chiring (masalan, bin, shu jumladan, lib) va "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0" -ga qo'ying.

Bu erda oxirgi qadam bu "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" ni% PATH% atrof-muhit o'zgaruvchisiga qo'shish.

7-qadam: Yaratilgan muhitni sozlash

Boshlash menyusidan x64 uchun VC ++ 2015 qobig'ini ishga tushiring ("VS2015 x64 Native Tools Command Prompt" yorlig'i).

Keyinchalik siz Python muhitini yaratishingiz, faollashtirishingiz va sozlashingiz kerak. Quyidagi "VS2015 x64 Native Tools Command Prompt" qobiq buyruqlari ichida ishlating (joylashuvingizga qarab to'g'ri yo'llarni tanlang).

pip3 o'rnatish -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Skriptlar \ activ.bat

Sizning qobig'ingiz buyruqlar qo'llanilgandan keyin quyidagicha ko'rinishi kerak:

Python-ning majburiy paketlarini o'rnating:

pip3 oltita naychali g'ildirakni o'rnatadi
pip3 o'rnatish keras_applications == 1.0.5 - no-deps
pip3 o'rnatish keras_preprocessing == 1.0.3 - no-deps

Majburiy paketlar o'rnatilishini ta'minlash uchun "pip3 list" ni ishga tushiring:

Hozir hammasi shu. Qobiqni yopmang.

8-qadam: Clone TensorFlow manba kodini kiriting va majburiy patchni qo'llang

Avvalo TensorFlow manba kodini klonlashtirish uchun papkani tanlashingiz kerak. Bu mening vaziyatimda "C: \ Users \ amsokol \ Development \ tensorflow-build". Qobiq va orqaga qaytish:

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

Clone manbali kodi:

git kloni https://github.com/tensorflow/tensorflow

1.11 versiyasining so'nggi versiyasi:

CD tensor oqimi
git chiqish v1.11.0

Endi bizda manbalar mavjud.

Eigen uchinchi tomon kutubxonasida BUG mavjud. Qurishdan oldin uni tuzatishimiz kerak.
  • Patch-ni bu yerdan yuklab oling va fayl nomi bilan eigen_half.patch-ni uchinchi_party papkasiga saqlang
  • Patch_file = clean_dep ("// uchinchi tomon: eigen_half.patch"), tensorflow / workspace.bzl fayliga eigen_archive qismiga qator qo'shing.

Tensorflow / workspace.bzl faylidagi natija quyidagicha bo'lishi kerak:

...
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 = toza_dep ("// uchinchi tomon: eigen.BUILD"),
  patch_file = toza_dep ("// uchinchi tomon: eigen_half.patch"),
)
...

Bajarildi

9-qadam: Yaratish parametrlarini sozlash

Biz dastlabki kod papkasida ekanligimizga ishonch hosil qiling:

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

Konfiguratorni ishga tushirish:

python ./configure.py

Avval Python manzilini so'raydi. Standart qiymatni qoldirish uchun Enter tugmasini bosing:

...
Sizda bazel 0.17.2 o'rnatilgan.
Iltimos, pitonning joylashishini ko'rsating. [Asl qiymati C: \ Users \ amsokol \ tensorflow-v1.11 \ Skriptlar \ python.exe]:

Keyin Python kutubxonasi yo'llarining joylashishini so'raydi. Standart qiymatni qoldirish uchun Enter tugmasini bosing:

Traceback (eng so'nggi qo'ng'iroq oxirgi):
  Fayl "", 1-qator,  da
AttributeError: 'site' moduli 'getitepackages' atributiga ega emas
Python kutubxonasining mumkin bo'lgan yo'llari topildi:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ sayt-paketlari
Iltimos, foydalanmoqchi bo'lgan Python kutubxonasi yo'lini kiriting. Odatiy bo'lib: [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

Keyin nGraph-ni qo'llab-quvvatlash haqida so'raydi. Bizga kerak emas. "N" tugmachasini bosing:

NGraph yordamida TensorFlow-ni qurmoqchimisiz? [y / N]: n
TensorFlow uchun nGraph-ni yoqib bo'lmaydi.

Keyin CUDA-ni qo'llab-quvvatlash haqida so'raydi:

CUDA yordamida TensorFlow-ni qurmoqchimisiz? [y / N]:

Agar GPU tezlashishini ishlatmoqchi bo'lsangiz, "y" deb javob bering. Aks holda "n" tugmasini bosing.

Ha bo'lsa, CUDA konfiguratori qo'shimcha savollarni beradi:
10.0 CUDA SDK versiyasi sifatida javob bering:
Siz foydalanmoqchi bo'lgan CUDA SDK versiyasini ko'rsating. [CUDA 9.0-ga standart sifatida bo'sh qoldiring]: 10.0
Standart CUDA asboblar manzilini qoldirish uchun Enter ni bosing:
Iltimos, CUDA 10.0 asboblar to'plami o'rnatilgan joyni ko'rsating. To'liq ma'lumotlar uchun README.md-ga murojaat qiling. [Asl qiymati: C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
7.3.1 javobi cuDNN versiyasi sifatida:
Iltimos, ishlatmoqchi bo'lgan cuDNN versiyasini ko'rsating. [CuDNN 7.0 standart holatiga bo'sh qoldiring]: 7.3.1
Kutubxonaning odatiy joylashuvini qoldirish uchun Enter ni bosing:
Iltimos, cuDNN 7 kutubxonasi joylashgan joyni ko'rsating. To'liq ma'lumotlar uchun README.md-ga murojaat qiling. [Asl qiymati: C: / Program Files / NVIDIA GPU Computing Toolkit / CUDA / v10.0]:
Keyingi savol CUDA yordamida hisoblash imkoniyatlari haqida. Qurilmangizni hisoblash qobiliyatini quyidagi havolada topishingiz mumkin: https://developer.nvidia.com/cuda-gpus. Menda GTX 1070 bor, shuning uchun men 6.1-ga javob beraman:
Siz bilan qurmoqchi bo'lgan vergul bilan ajratilgan Cuda hisoblash qobiliyatlari ro'yxatini ko'rsating.
Qurilmangizni hisoblash qobiliyatini quyidagi havolada topishingiz mumkin: https://developer.nvidia.com/cuda-gpus.
Shuni esda tutingki, har bir qo'shimcha hisoblash qobiliyati sizning qurish vaqtingizni va ikkilik hajmini sezilarli darajada oshiradi. [Odatiy: 3.5,7.0]: 6.1

Keyingi savol - optimallashtirish bayroqchalarini o'rnatish. Menda 6-chi Intel CPU bor, shuning uchun men javob beraman / arch: AVX2:

Iltimos, kompilyatsiya paytida ishlatiladigan optimallashtirish bayroqlarini ko'rsating - "--config = opt" bazel optsiyasi aniqlanganda [Default is / arch: AVX]: / arch: AVX2

So'nggi savol eigen haqida. "Y" ga javob bering. Bu kompilyatsiya vaqtini keskin kamaytiradi.

Kompilyatsiya vaqtini qisqartirish uchun ba'zi C ++ kompilyatsiyasi uchun eigen kuchli qatorini bekor qilmoqchimisiz? [Y / n]: y
Eigen kuchli chiziqcha bekor qilindi.

Sozlash tugadi. Qurishga ruxsat bering.

10-qadam: manbalardan TensorFlow-ni yarating

Biz dastlabki kod papkasida ekanligimizga ishonch hosil qiling:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
Qurish uzoq vaqt talab etadi. Men antivirus dasturlarini, shu jumladan Windows Defender Antivirusni real vaqtda himoya qilishni o'chirib qo'yishni maslahat beraman.

Qurilishni ishga tushirish:

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

Orqangizga o'tiring va biroz vaqt dam oling.

11-qadam: Python 3.6 uchun TensorFlow g'ildirak faylini yarating

Python g'ildirak faylini yaratish uchun buyruqni ishga tushiring:

mkdir .. \ tashqarida
bazel-bin \ tensorflow \ vositalari \ pip_package \ build_pip_package .. \ tashqariga

Muvaffaqiyatsiz:

Ma'lum bir muammo bor. "Bazel-bin \ tensorflow \ tools \ pip_package" jildiga qarang. Unda nol uzunlikdagi "simple_console_for_windows.zip" fayl mavjud. Muammo shu. Bazel 32 bitli ZIP dasturini o'z ichiga oladi, u 2GB kattaroq faylga mos kelmaydi. Tafsilotlar va echimlar uchun havolalarni ko'ring:

  • 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

Muammoni hal qilish uchun qadamlar mavjud:

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

"Simple_console_for_windows.zip-0.params" faylini oching va "mnist.zip" qatorini olib tashlang:

...
runfiles / org_tensorflow / tensorflow / hissa qo'shish / python / misollar / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / hissa qo'shish / istak / python / misollar / gan / mnist.zip
...
Bu menga yordam beradi. Agar bu sizga yordam bermasa, shunchaki zip-fayllar bilan boshqa qatorlarni olib tashlashingiz mumkin (batafsil ma'lumotni bu erda ko'ring). Ushbu faoliyatning maqsadi - "simple_console_for_windows.zip" uzunligini 2GB dan kam qilish.

Bo'sh "simple_console_for_windows.zip" faylini o'chiring.

Keyingi uy papkangizga qarang. Siz "_bazel_

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

"Simple_console_for_windows.zip" faylini qo'lda yarating:

tashqi \ bazel_tools \ tools \ zip \ fermuar \ 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 g'ildirak faylini yaratish uchun buyruqni ishga tushiring:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
bazel-bin \ tensorflow \ vositalari \ pip_package \ build_pip_package .. \ tashqariga

Bu ".. \ out" papkasida tensorflow-1.11.0-cp36-cp36m-win_amd64.whl faylini yaratadi.

12-qadam: Python 3.6 uchun TensorFlow g'ildirak faylini o'rnating va natijani tekshiring

Python g'ildirak faylini o'rnatish uchun buyruqni ishga tushiring:

pip3 o'rnatish .. \ tashqariga \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

"Tensorflow" katalogini qoldiring (ba'zan Tensoflow manba kodi papkasida Python skriptlarini ishga tushirganimda xatolar yuz beradi - sababini bilmayman):

CD ..

Tekshirish uchun skriptni bu erda yoki nusxa ko'chiring va ishga tushiring:

import tensorflow tf sifatida
salom = tf.constant ('Salom, TensorFlow!')
session = tf.Session ()
bosib chiqarish (session.run (salom))

Agar tizim quyidagilardan iborat bo'lsa, unda hamma narsa yaxshi:

Salom, TensorFlow!

Mening chiqishim:

Endi TensorFlow-ni Windows kompyuteriga muvaffaqiyatli o'rnatdingiz.

Agar u siz uchun ishlagan bo'lsa, menga quyidagi izohlarda xabar bering. Yoki sizda biron bir xato bo'lsa. Rahmat!