[تحديث 1] كيفية إنشاء وتثبيت TensorFlow GPU / CPU لـ Windows من التعليمات البرمجية المصدر باستخدام bazel و Python 3.6

هذا هو تحديث قصتي السابقة. ما الجديد هنا:

  • TensorFlow v1.11
  • كودا v10.0
  • cuDNN v7.3

هناك دليل على الموقع الرسمي. انها ليست شاملة جدا ولكنها مفيدة في بعض الأحيان.

ملخص

  1. تثبيت بوابة لنظام التشغيل Windows
  2. تثبيت بازيل
  3. تثبيت MSYS2 إلى x64 وأدوات سطر الأوامر
  4. قم بتثبيت أدوات إنشاء Visual Studio 2017 بما في ذلك أدوات إنشاء Visual Studio 2015
  5. تثبيت Python 3.6 64 بت
  6. تثبيت NVIDIA CUDA 10.0 و cuDNN 7.3 (لتسريع وحدة معالجة الرسومات)
  7. تكوين بيئة البناء
  8. Clone TensorFlow v1.11 شفرة المصدر وتطبيق التصحيح الإلزامي
  9. تكوين بناء المعلمات
  10. بناء TensorFlow من المصادر
  11. إنشاء ملف عجلة TensorFlow لبيثون 3.6
  12. تثبيت ملف عجلة TensorFlow لبايثون 3.6 والتحقق من النتيجة

الخطوة 1: تثبيت Git لنظام التشغيل Windows

قم بتنزيل وتثبيت Git لنظام التشغيل Windows. أنا أعتبر هنا. تأكد من إضافة المسار إلى git.exe إلى متغير البيئة٪ PATH٪. أقوم بتثبيت Git إلى

C: \ بن \ جيت

مجلد لهذا البرنامج التعليمي.

الخطوة 2: تثبيت MSYS2 x64 وأدوات سطر الأوامر

قم بتنزيل وتثبيت توزيع 64 بت هنا. يستخدم Bazel منافذ grep و patch و unzipand الأخرى من أدوات Unix لبناء المصادر. يمكنك محاولة العثور على ثنائيات قائمة بذاتها لكل منها ، لكنني أفضل استخدام حزمة MSYS2. أنا تثبيته على

C: \ بن \ msys64

مجلد لهذا البرنامج التعليمي. يجب عليك إضافة مجلد بالأدوات إلى متغير البيئة٪ PATH٪. إنه "C: \ Bin \ msys64 \ usr \ bin" في حالتي.

بدء اختصار "MSYS2 MinGW 64 بت" من قائمة ابدأ. قم بتشغيل الأمر التالي لتحديثه (أعد تشغيل "MSYS2 MinGW 64-bit" إذا طلب ذلك):

بكمن -سو

ثم اركض:

بكمن-سو

أدوات التثبيت ضرورية للبناء:

بكمن -S التصحيح بفك

إغلاق "MSYS2 MinGW 64 بت" قذيفة عن طريق "خروج" القيادة. نحن لسنا بحاجة بعد الآن.

الخطوة 3: تثبيت أدوات إنشاء Visual Studio 2017 بما في ذلك أدوات إنشاء Visual Studio 2015

يتعين علينا تثبيت مجموعة أدوات "VC ++ 2015.3 v14.00 (v140) لسطح المكتب" من Visual Studio 2017 Build Tools لإنشاء TensorFlow v1.11:

الخطوة 4: تثبيت بازيل

قم بتنزيل أحدث بازل هنا. ابحث عن ملف bazel- -windows-x86_64.exe. لقد اختبرت هذا البرنامج التعليمي مع bazel 0.17.2. أعد تسمية الملف الثنائي إلى bazel.exe وانقله إلى دليل على٪ PATH٪ ، بحيث يمكنك تشغيل Bazel بكتابة bazel في أي دليل. راجع تفاصيل تثبيت Bazel لنظام التشغيل Windows x64 في حالة حدوث مشكلات.

إضافة متغير البيئة العالمية BAZEL_SH لموقع bash. طريقي هو

C: \ بن \ msys64 \ البيرة \ بن \ bash.exe

أضف متغير البيئة العالمية BAZEL_VC لمجموعة أدوات "VC ++ 2015.3 v14.00 (v140) لسطح المكتب":

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

الخطوة 5: تثبيت Python 3.6 64 بت

TensorFlow لا يدعم Python 3.7 لذلك يجب عليك تثبيت الإصدار 3.6.
يبدو أن TensorFlow v1.11 لا يدعم Anaconda / Miniconda للبناء بعد الآن - لقد حدث خطأ غريب. لهذا السبب أستخدم بيئة 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. سيتم تحديث برنامج التشغيل GPU الخاص بك إذا لزم الأمر وإعادة التشغيل.

انتقل إلى تشغيل (Win + R) اكتب cmd

سيقوم الأمر التالي بالتحقق من إصدار nvcc والتأكد من تعيينه في متغير بيئة المسار.

nvcc - الإصدار

انتقل إلى https://developer.nvidia.com/cudnn (العضوية المطلوبة).

بعد تسجيل الدخول ، قم بتنزيل ما يلي:

cuDNN v7.3.1 Library for 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 shell لـ x64 (اختصار "موجه أوامر الأدوات الأصلية VS2015 x64") من قائمة ابدأ.

بعد ذلك ، يجب عليك إنشاء وتنشيط وتكوين بيئة Python. قم بتشغيل أوامر shell "VS2015 x64 Native Tools Command Prompt" أدناه (قم بتصحيح المسارات وفقًا لمواقعك).

pip3 تثبيت -U virtualenv
virtualenv - حزم موقع النظام C: \ المستخدمين \ amsokol \ tensorflow-v1.11
C: \ المستخدمين \ amsokol \ tensorflow-v1.11 \ مخطوطات \ activate.bat

يجب أن تبدو صدفةك بعد تطبيق الأوامر:

تثبيت حزم بيثون الإلزامية:

pip3 تثبيت ستة عجلة numpy
pip3 تثبيت keras_applications == 1.0.5 - لا- deps
pip3 تثبيت keras_preprocessing == 1.0.3 - لا- deps

قم بتشغيل "قائمة pip3" لضمان تثبيت الحزم الإلزامية:

هذا كل شئ حتى الان. لا تغلق قذيفة.

الخطوة 8: استنساخ شفرة المصدر TensorFlow وتطبيق التصحيح الإلزامي

بادئ ذي بدء ، يجب عليك اختيار المجلد الذي ترغب في استنساخ شفرة مصدر TensorFlow فيه. إنه "C: \ Users \ amsokol \ Development \ tensorflow-build" في حالتي. العودة إلى قذيفة وتشغيل:

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

استنساخ شفرة المصدر:

بوابة استنساخ https://github.com/tensorflow/tensorflow

الخروج أحدث إصدار 1.11:

مؤتمر نزع السلاح tensorflow
بوابة الخروج v1.11.0

الآن لدينا مصادر.

يوجد خطأ في مكتبة الجهة الخارجية eigen. لدينا لإصلاحها قبل البناء.
  • قم بتنزيل التصحيح هنا وحفظ باستخدام اسم الملف 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 (
  اسم = "eigen_archive" ،
  عناوين url = [
"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 ("// third_party: eigen_half.patch") ،
)
...

فعله.

الخطوة 9: تكوين معلمات البناء

تأكد من أننا في مجلد جذر الكود المصدري:

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

تشغيل مكون:

الثعبان. / تكوين

أولاً يسأل موقع بيثون. اضغط Enter لترك القيمة الافتراضية:

...
لديك bazel 0.17.2 مثبتة.
يرجى تحديد موقع بايثون. [الافتراضي هو C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

ثم يسأل موقع مسارات مكتبة بايثون. اضغط Enter لترك القيمة الافتراضية:

تتبع (آخر مكالمة أخيرة):
  ملف "" ، السطر 1 ، في 
AttributeError: الوحدة النمطية 'site' لا تحتوي على سمة 'getitepackages'
العثور على مسارات مكتبة بايثون المحتملة:
  C: \ المستخدمين \ amsokol \ tensorflow-v1.11 \ ليب \ حزم الموقع
يرجى إدخال مسار مكتبة بايثون المطلوب استخدامه. الافتراضي هو [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-package]

ثم يسأل عن دعم nGraph. نحن لسنا في حاجة إليها. اضغط على "n":

هل ترغب في بناء TensorFlow بدعم nGraph؟ [ص / ن]: ن
لن يتم تمكين دعم nGraph لـ TensorFlow.

ثم يسأل عن دعم CUDA:

هل ترغب في بناء TensorFlow بدعم CUDA؟ [ص / N]:

أجب ب "ص" إذا كنت ستستخدم تسريع GPU. وإلا اضغط على "n".

في حالة الإجابة على Yes for CUDA configurator يطرح أسئلة إضافية:
الإجابة 10.0 كإصدار CUDA SDK:
يرجى تحديد إصدار CUDA SDK الذي تريد استخدامه. [اتركه فارغًا حتى الافتراضي إلى CUDA 9.0]: 10.0
اضغط على Enter لترك موقع مجموعة أدوات CUDA الافتراضي:
يرجى تحديد الموقع الذي تم تثبيت مجموعة أدوات CUDA 10.0 عليه. الرجوع إلى README.md لمزيد من التفاصيل. [الافتراضي هو C: / ملفات البرنامج / 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: / ملفات البرنامج / 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 Core من الجيل السادس لهذا أجب / أقوس: AVX2:

يرجى تحديد علامات التحسين لاستخدامها أثناء الترجمة عند تحديد خيار bazel "--config = opt" [الافتراضي هو / arch: AVX]: / arch: AVX2

السؤال الأخير هو حول eigen. أجب ب "ص". فهو يقلل من وقت الترجمة بشكل كبير.

هل تريد تجاوز eigen مضمنة قوية لبعض ترجمة C ++ لتقليل وقت الترجمة؟ [Y / n]: ص
إيجن مضمنة قوية تجاوز.

اكتمل التكوين. هيا نبني.

الخطوة 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 لبايثون 3.6

قم بتشغيل الأمر لإنشاء ملف عجلة Python:

mkdir .. \ خارج
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

فشل:

هناك مشكلة معروفة. انظر إلى مجلد "bazel-bin \ tensorflow \ tools \ pip_package". يحتوي على ملف "simple_console_for_windows.zip" بطول صفر. هذه هي المشكلة. Bazel يحتوي على 32 بت أداة zip يفشل لملف 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

هناك خطوات لإصلاح المشكلة:

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

افتح ملف "simple_console_for_windows.zip-0.params" وحذف السطر الذي يحتوي على "mnist.zip":

...
runfiles / org_tensorflow / tensorflow / contrib / حريصة / الثعبان / أمثلة / قان / mnist.zip = بازل المغادرة / x64_windows التقيد / بن / tensorflow / contrib / حريصة / الثعبان / أمثلة / قان / mnist.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 \ أدوات \ 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_package simple_console_for_windows.zip-0.params

قم بتشغيل الأمر لإنشاء ملف عجلة Python:

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 لبايثون 3.6 وتحقق من النتيجة

قم بتشغيل الأمر لتثبيت ملف عجلة Python:

تثبيت pip3 .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

اترك دليل "tensorflow" (تحدث الأخطاء أحيانًا عندما أقوم بتشغيل نصوص Python داخل مجلد شفرة مصدر Tensoflow - لا أعرف السبب):

قرص مضغوط ..

لإجراء التحقق من تنزيل البرنامج النصي هنا أو نسخ ولصق وتشغيل:

استيراد tensorflow كما TF
مرحبًا = tf.constant ('مرحبًا ، TensorFlow!')
الجلسة = tf.Session ()
طباعة (session.run (مرحبا))

إذا خرج النظام بما يلي ، فكل شيء على ما يرام:

مرحبا ، TensorFlow!

بلدي الإخراج:

لقد قمت الآن بتثبيت TensorFlow بنجاح على جهاز Windows.

اسمحوا لي أن أعرف في التعليقات أدناه إذا كان يعمل من أجلك. أو إذا حصلت على أي أخطاء. شكر!