[अपडेट १] bazel और Pyupon 3.6 का उपयोग करके स्रोत कोड से विंडोज के लिए TensorFlow GPU / CPU का निर्माण और स्थापना कैसे करें

यह मेरी पिछली कहानी का अपडेट है। यहाँ क्या नया है:

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

आधिकारिक साइट पर गाइड है। यह कभी-कभी बहुत व्यापक नहीं है लेकिन उपयोगी है।

सारांश

  1. विंडोज के लिए गिट स्थापित करें
  2. Bazel स्थापित करें
  3. MSYS2 x64 और कमांड लाइन टूल इंस्टॉल करें
  4. Visual Studio 2017 Build Tools सहित Visual Studio 2015 Build Tools स्थापित करें
  5. पायथन 3.6 64-बिट्स स्थापित करें
  6. NVIDIA CUDA 10.0 और cuDNN 7.3 (GPU त्वरण के लिए) स्थापित करें
  7. निर्माण पर्यावरण को कॉन्फ़िगर करें
  8. क्लोन TensorFlow v1.11 स्रोत कोड और अनिवार्य पैच लागू होते हैं
  9. बिल्ड पैरामीटर को कॉन्फ़िगर करें
  10. सूत्रों से TensorFlow बनाएँ
  11. पायथन 3.6 के लिए TensorFlow व्हील फ़ाइल बनाएँ
  12. पायथन 3.6 के लिए TensorFlow व्हील फ़ाइल स्थापित करें और परिणाम जांचें

चरण 1: विंडोज के लिए गिट स्थापित करें

विंडोज के लिए Git को डाउनलोड और इंस्टॉल करें। मैं इसे यहां ले जाता हूं। सुनिश्चित करें कि git.exe का पथ% PATH% परिवेश चर में जोड़ा गया है। मैं Git को स्थापित करता हूं

C: \ बिन \ Git

इस ट्यूटोरियल के लिए फ़ोल्डर।

चरण 2: MSYS2 x64 और कमांड लाइन उपकरण स्थापित करें

यहां 64-बिट्स वितरण डाउनलोड और इंस्टॉल करें। Bazel स्रोतों का निर्माण करने के लिए यूनिक्स-टूल्स के grep, पैच, unzipand अन्य पोर्ट का उपयोग करता है। आप उनमें से प्रत्येक के लिए स्टैंड-अलोन बायनेरिज़ खोजने की कोशिश कर सकते हैं लेकिन मैं MSYS2 बंडल का उपयोग करना पसंद करता हूं। मैं इसे करने के लिए स्थापित करें

C: \ बिन \ msys64

इस ट्यूटोरियल के लिए फ़ोल्डर। आपको% PATH% परिवेश चर में टूल के साथ फ़ोल्डर जोड़ना होगा। यह मेरे मामले में "C: \ Bin \ msys64 \ usr \ bin" है।

स्टार्ट मेनू से "MSYS2 मिनगव 64-बिट" शॉर्टकट शुरू करें। अपडेट करने के लिए निम्नलिखित कमांड चलाएँ ("यदि पूछें तो" MSYS2 मिनग 64-बिट पुनः आरंभ करें):

pacman -Syu

तो भागो:

पचमन -सु

स्थापित करने के लिए उपकरण आवश्यक हैं:

pacman -S पैच अनज़िप

"निकास" कमांड द्वारा "MSYS2 मिनगव 64-बिट" शेल को बंद करें। हमें इसकी कोई आवश्यकता नहीं है

चरण 3: विजुअल स्टूडियो 2017 बिल्ड टूल्स सहित विजुअल स्टूडियो 2015 बिल्ड टूल्स स्थापित करें

हमें Visual Studio 2017 बिल्ड टूल से TensorFlow v1.11 बनाने के लिए "VC ++ 2015.3 v14.00 (v140) डेस्कटॉप के लिए टूलसेट" स्थापित करना होगा:

चरण 4: Bazel स्थापित करें

नवीनतम बेसल डाउनलोड करें। Bazel- -windows-x86_64.exe फ़ाइल के लिए देखें। मैंने इस ट्यूटोरियल को bazel 0.17.2 के साथ परीक्षण किया है। बाइनरी को bazel.exe पर नाम बदलें और इसे अपने% PATH% पर एक निर्देशिका में स्थानांतरित करें, ताकि आप किसी भी निर्देशिका में bazel लिखकर Bazel चला सकें। समस्याओं के मामले में Windows x64 के लिए Bazel स्थापना का विवरण देखें।

बैश स्थान के लिए BAZEL_SH वैश्विक पर्यावरण चर जोड़ें। मेरा रास्ता है

C: \ बिन \ msys64 \ usr \ बिन \ bash.exe

"VC ++ 2015.3 v14.00 (v140) टूलसेट डेस्कटॉप के लिए" टूल चेन स्थान के लिए BAZEL_VC वैश्विक पर्यावरण चर जोड़ें:

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

चरण 5: पायथन 3.6 64-बिट्स स्थापित करें

TensorFlow Python 3.7 का समर्थन नहीं कर रहा है, इसलिए आपको 3.6 संस्करण स्थापित करना होगा।
ऐसा लगता है कि TensorFlow v1.11 किसी भी अधिक के निर्माण के लिए एनाकोंडा / मिनिकोंडा का समर्थन नहीं कर रहा है - मुझे अजीब त्रुटि मिलती है। यही कारण है कि मैं निर्माण के लिए पायथन आभासी वातावरण का उपयोग करता हूं।

Python 3.6 यहां डाउनलोड के लिए उपलब्ध है। इसे स्थापित करें और% PATH% चर में python.exe में स्थान जोड़ें।

चरण 6: NVIDIA CUDA 10.0 और cuDNN 7.3 स्थापित करें (GPU त्वरण के लिए)

यह अनुभाग वास्तविक है यदि आपके पास NVIDIA ग्राफिक्स कार्ड है जो CUDA का समर्थन करता है। अन्यथा इस सेक्शन को छोड़ दें।
यदि आपको सहायता की आवश्यकता है, तो CUDA की स्थापना को चरण दर चरण देखें। मैंने उस गाइड को कॉपी-पेस्ट किया लेकिन कुछ विवरण काट दिए।

Https://developer.nvidia.com/cuda-downloads पर जाएं और विंडोज [आपके संस्करण] के लिए CUDA 10.0 इंस्टॉलर डाउनलोड करें। मेरे लिए, संस्करण विंडोज 10 है।

डिफ़ॉल्ट सेटिंग्स के साथ इसे डिफ़ॉल्ट स्थान पर स्थापित करें लेकिन VisualStudio एकीकरण विकल्प को अनचेक करें। यदि आवश्यक हो और रिबूट हो तो यह आपके जीपीयू ड्राइवर को अपडेट करेगा।

चलाने के लिए जाओ (Win + R) प्रकार cmd

निम्न कमांड nvcc संस्करण और बीमा के लिए जाँच करेगा कि यह पथ वातावरण चर में सेट है।

nvcc --version

अगला गोटो https://developer.nvidia.com/cudnn (सदस्यता आवश्यक)।

लॉगिन करने के बाद निम्न डाउनलोड करें:

cuDNN v7.3.1 विंडोज के लिए लाइब्रेरी [आपका संस्करण] मेरे लिए विंडोज 10. गोटो ने फोल्डर डाउनलोड किया और ज़िप फाइल को निकाला।

निकाले गए फ़ोल्डर के अंदर जाएं और सभी फ़ाइलों और फ़ोल्डर को क्यूडा फ़ोल्डर (जैसे बिन, शामिल, काम) से कॉपी करें और "C: \ Program Files \ NVIDIA GPU कम्प्यूटिंग टूलकिट \ CUDA \ v10.0" पर पेस्ट करें।

अंतिम चरण यहाँ PATH% पर्यावरण चर को% करने के लिए "C: \ Program Files \ NVIDIA GPU कम्प्यूटिंग टूलकिट \ CUDA \ v10.0 \ extras \ CUPTI \ libx64" जोड़ना है।

चरण 7: बिल्ड पर्यावरण कॉन्फ़िगर करें

प्रारंभ मेनू से x64 (“VS2015 x64 मूल उपकरण कमांड प्रॉम्प्ट” शॉर्टकट) के लिए VC ++ 2015 शेल प्रारंभ करें।

आगे आपको पायथन पर्यावरण को बनाना, सक्रिय करना और कॉन्फ़िगर करना होगा। नीचे "VS2015 x64 मूल उपकरण कमांड प्रॉम्प्ट" शेल कमांड के अंदर चलाएं (आपके स्थानों के अनुसार सही पथ)।

pip3 स्थापित -U virtualenv
virtualenv - सिस्टेम-साइट-संकुल C: \ Users \ amsokol \ tanorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ स्क्रिप्ट \ activate.bat

आपके शेल को इस तरह दिखना चाहिए कि कमांड लागू होने के बाद:

अनिवार्य पायथन पैकेज स्थापित करें:

pip3 छह सिपाही पहिया स्थापित करें
pip3 स्थापित करें keras_applications == 1.0.5 --no-deps
pip3 इंस्टॉल करें keras_preprocessing == 1.0.3 --no-deps

अनिवार्य पैकेज स्थापित करने के लिए "pip3 सूची" चलाएं:

अभी के लिए इतना ही। खोल को बंद न करें।

चरण 8: क्लोन TensorFlow स्रोत कोड और अनिवार्य पैच लागू करें

सबसे पहले आपको फ़ोल्डर चुनना होगा जहां TensorFlow source code को क्लोन करना है। यह मेरे मामले में "C: \ Users \ amsokol \ Development \ tanorflow-build" है। वापस शेल और चलाने के लिए:

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

क्लोन स्रोत कोड:

git क्लोन https://github.com/tensorflow/tensorflow

1.11 संस्करण का नवीनतम चेकआउट:

cd टेंसरफ़्लो
git चेकआउट v1.11.0

अब हमारे पास स्रोत हैं।

ईजन थर्ड-पार्टी लाइब्रेरी में एक BUG है। हमें निर्माण से पहले इसे ठीक करना होगा।
  • यहां पैच डाउनलोड करें और फ़ाइल नाम eigen_half.patch के साथ तीसरे_पार्टी फ़ोल्डर में सहेजें
  • पैच_फाइल = clean_dep ("// third_party: eigen_half.patch") जोड़ें, लाइन को eigen_archive सेक्शन को टेंसरफ़्लो / वर्कस्पेस.बीज़ल फ़ाइल में जोड़ें।

टेनसफ़्लो / वर्कस्पेस में परिणाम। bzl फाइल इस तरह होनी चाहिए:

...
tf_http_archive (
  नाम = "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"
  stri_prefix = "eigen-eigen-fd6845384b86",
  build_file = clean_dep ("// third_party: eigen.BUILD"),
  पैच_फाइल = क्लीन_डेप ("// थर्ड_पार्टी: ईजेन_फॉल.पच")
)
...

किया हुआ।

चरण 9: बिल्ड पैरामीटर को कॉन्फ़िगर करें

सुनिश्चित करें कि हम स्रोत कोड रूट फ़ोल्डर में हैं:

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

रन कॉन्फ़िगरेशन:

python ./configure.py

पहले यह पायथन का स्थान पूछता है। डिफ़ॉल्ट मान छोड़ने के लिए Enter दबाएँ:

...
आपने bazel 0.17.2 स्थापित किया है।
कृपया अजगर का स्थान निर्दिष्ट करें। [डिफ़ॉल्ट है C: \ Users \ amsokol \ Tenorflow-v1.11 \ Scripts \ python.exe]:

इसके बाद पायथन पुस्तकालय के रास्तों का स्थान पूछता है। डिफ़ॉल्ट मान छोड़ने के लिए Enter दबाएँ:

ट्रेसबैक (सबसे हालिया कॉल अंतिम):
  फ़ाइल "", लाइन 1, में <मॉड्यूल>
विशेषता: मॉड्यूल 'साइट' में कोई विशेषता नहीं है 'getitepackages'
संभव पायथन पुस्तकालय पथ मिले:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ लिब \ साइट-संकुल
कृपया उपयोग करने के लिए वांछित पाइथन लाइब्रेरी पथ इनपुट करें। डिफ़ॉल्ट [C: \ Users \ amsokol \ Tenorflow-v1.11 \ Lib \ साइट-संकुल]

फिर यह nGraph समर्थन के बारे में पूछता है। हमें इसकी आवश्यकता नहीं है प्रेस "एन":

क्या आप nGraph समर्थन के साथ TensorFlow का निर्माण करना चाहते हैं? [y / N]: एन
TensorFlow के लिए कोई nGraph समर्थन सक्षम नहीं किया जाएगा।

फिर यह CUDA समर्थन के बारे में पूछता है:

क्या आप CUDA समर्थन के साथ TensorFlow का निर्माण करना चाहते हैं? [Y n]:

उत्तर "y" यदि आप GPU त्वरण का उपयोग करने जा रहे हैं। अन्यथा "n" दबाएं।

हाँ पर CUDA के लिए विन्यासकर्ता अतिरिक्त प्रश्न पूछता है:
10.0 CUDA SDK संस्करण के रूप में उत्तर दें:
कृपया CUDA SDK संस्करण निर्दिष्ट करें जिसका आप उपयोग करना चाहते हैं। [CUDA 9.0 को डिफ़ॉल्ट करने के लिए खाली छोड़ दें]: 10.0
डिफ़ॉल्ट CUDA टूलकिट स्थान छोड़ने के लिए Enter दबाएँ:
कृपया उस स्थान को निर्दिष्ट करें जहां CUDA 10.0 टूलकिट स्थापित है। अधिक जानकारी के लिए README.md का संदर्भ लें। [डिफ़ॉल्ट है C: / प्रोग्राम फाइल्स / NVIDIA GPU कम्प्यूटिंग टूलकिट / CUDA / v10.0]]
उत्तर 7.3.1 cuDNN संस्करण के रूप में:
कृपया वह cuDNN संस्करण निर्दिष्ट करें जिसका आप उपयोग करना चाहते हैं। [CuDNN 7.0 पर डिफ़ॉल्ट करने के लिए खाली छोड़ दें]: 7.3.1
डिफ़ॉल्ट cuDNN लाइब्रेरी स्थान छोड़ने के लिए Enter दबाएँ:
कृपया वह स्थान निर्दिष्ट करें जहां cuDNN 7 लाइब्रेरी स्थापित है। अधिक जानकारी के लिए README.md का संदर्भ लें। [डिफ़ॉल्ट है C: / प्रोग्राम फाइल्स / NVIDIA GPU कम्प्यूटिंग टूलकिट / CUDA / v10.0]]
अगला सवाल CUDA कम्प्यूट क्षमताओं के साथ निर्माण करने के बारे में है। आप अपने डिवाइस की गणना क्षमता यहां पा सकते हैं: https://developer.nvidia.com/cuda-gpus। मेरे पास GTX 1070 है, इसलिए मैं 6.1 का जवाब देता हूं:
कृपया अल्पविराम से अलग किए गए कूडा कम्प्यूट क्षमताओं की एक सूची निर्दिष्ट करें जिसे आप बनाना चाहते हैं।
आप अपने डिवाइस की कम्प्यूट क्षमता को यहां पा सकते हैं: https://developer.nvidia.com/cuda-gpus।
कृपया ध्यान दें कि प्रत्येक अतिरिक्त गणना क्षमता आपके निर्माण समय और द्विआधारी आकार में काफी वृद्धि करती है। [डिफ़ॉल्ट है: 3.5,7.0]: 6.1

अगला सवाल अनुकूलन झंडे सेट करना है। मेरे पास 6th Gen Intel CPU है, जिसके कारण मैं उत्तर देता हूं / आर्च: AVX2:

संकलन के दौरान उपयोग करने के लिए कृपया अनुकूलन झंडे निर्दिष्ट करें जब bazel विकल्प "--config = opt" निर्दिष्ट हो [डिफ़ॉल्ट है / आर्क: AVX]: / arch: AVX2

अंतिम प्रश्न आइजन के बारे में है। उत्तर "y"। यह नाटकीय रूप से संकलन समय को कम करता है।

क्या आप संकलन समय को कम करने के लिए कुछ C ++ संकलन के लिए eigen मजबूत इनलाइन को ओवरराइड करना चाहेंगे? [य / न]: य
Eigen मजबूत इनलाइन ओवरराइड।

विन्यास पूरा हुआ। चलो बनाते है।

चरण 10: सूत्रों से TensorFlow बनाएँ

सुनिश्चित करें कि हम स्रोत कोड रूट फ़ोल्डर में हैं:

cd C: \ Users \ amsokol \ Development \ Tenorflow-build \ Tenorflow
बिल्ड में लंबा समय लगता है। मैं विंडोज डिफेंडर एंटीवायरस रीयल-टाइम सुरक्षा सहित एंटीवायरस सॉफ़्टवेयर को बंद करने की दृढ़ता से सलाह देता हूं।

रन बनाएँ:

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

कुछ देर आराम करके बैठें।

चरण 11: पायथन 3.6 के लिए TensorFlow व्हील फ़ाइल बनाएँ

पायथन व्हील फ़ाइल बनाने के लिए कमांड चलाएँ:

mkdir .. बाहर
bazel-bin \ tanorflow \ tools \ pip_package \ build_pip_package .. \ out

यह विफल रहा:

एक ज्ञात मुद्दा है। "Bazel-bin \ Tetorflow \ Tools \ pip_package" फ़ोल्डर देखें। इसमें शून्य लंबाई "simple_console_for_windows.zip" फ़ाइल है। यही समस्या है। Bazel में 32-बिट ज़िप उपयोगिता है जो फ़ाइल 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

समस्या को ठीक करने के लिए चरण हैं:

सीडी। \ bazel-bin \ tanorflow \ tools \ pip_package

"Simple_console_for_windows.zip-0.params" फ़ाइल खोलें और लाइन को हटाएं जिसमें "mnist.zip" है:

...
runfiles / org_tensorflow / tensorflow / योगदान / उत्सुक / अजगर / उदाहरण / गण / mnist.zip = Bazel बाहर / x64_windows-ऑप्ट / bin / tensorflow / योगदान / उत्सुक / अजगर / उदाहरण / गण / mnist.zip
...
इससे मुझे मदद मिलती है। मामले में यह ज़िप फ़ाइलों के साथ अन्य लाइनों को हटाने में आपकी मदद नहीं करता है (विवरण यहां देखें)। इस गतिविधि का उद्देश्य "simple_console_for_windows.zip" लंबाई को कम से कम 2GB करना है।

खाली "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.exe zc.exe vcC bazel-out / x64_windows-opt / bin / tanorflow / tools / pip_package / simple_console_for -windows.zip @ bazel-out / x64_windows- ऑप्ट / बिन / टेंसरफ़्लो / टूल / पाइप / उपकरण simple_console_for_windows.zip-0.params

पायथन व्हील फ़ाइल बनाने के लिए कमांड चलाएँ:

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

यह ".. \" आउट फ़ोल्डर में टेंसरफ़्लो-1.11.0-cp36-cp36m-win_amd64.whl फ़ाइल बनाता है।

चरण 12: पायथन 3.6 के लिए TensorFlow व्हील फ़ाइल स्थापित करें और परिणाम जांचें

पायथन व्हील फ़ाइल स्थापित करने के लिए कमांड चलाएँ:

pip3 इंस्टॉल करें .. \ आउट \ टेंसोफ़्लो-1.11.0-cp36-cp36m-win_amd64.whl

"टेंसरफ़्लो" निर्देशिका छोड़ें (त्रुटि तब कभी-कभी होती है जब मैं टेंसोफ़्लो स्रोत कोड फ़ोल्डर के अंदर पायथन स्क्रिप्ट चलाता हूं - मुझे कारण पता नहीं है):

सीडी ..

यहाँ चेक स्क्रिप्ट डाउनलोड करने या कॉपी-पेस्ट करने और चलाने के लिए:

आयात tforflow tf के रूप में
हैलो = tf.constant ('हैलो, TensorFlow!')
सत्र = tf.Session ()
प्रिंट (session.run (नमस्ते))

यदि सिस्टम निम्न आउटपुट करता है, तो सब कुछ ठीक है:

हैलो, TensorFlow!

मेरा आउटपुट:

आपने अब विंडोज मशीन पर TensorFlow को सफलतापूर्वक स्थापित कर लिया है।

अगर यह आपके लिए काम करता है तो मुझे नीचे टिप्पणी में बताएं। या अगर आपको कोई त्रुटि मिली है। धन्यवाद!