[بروزرسانی 1] ایجاد و نصب GPU / CPU TensorFlow برای ویندوز از کد منبع با Bazel و Python 3.6

این به روزرسانی داستان قبلی من است. چه خبر جدید در اینجا:

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

راهنماهایی در سایت رسمی وجود دارد. این بسیار جامع نیست ، اما گاهی مفید است.

خلاصه

  1. Git را برای ویندوز نصب کنید
  2. بازل را نصب کنید
  3. MSYS2 x64 و ابزارهای خط فرمان را نصب کنید
  4. Visual Studio 2017 Build Tools ، از جمله Visual Studio 2015 Build Tools را نصب کنید
  5. Python 3.6 64-bit را نصب کنید
  6. NVIDIA CUDA 10.0 و cuDNN 7.3 را نصب کنید (برای شتاب GPU)
  7. محیط ساخت را پیکربندی کنید
  8. کد منبع TensorFlow v1.11 را شبیه سازی کرده و پچ اجباری را اعمال کنید
  9. پارامترهای ساخت را پیکربندی کنید
  10. TensorFlow را از منابع بسازید
  11. یک پرونده چرخ TensorFlow برای پایتون 3.6 ایجاد کنید
  12. پرونده چرخ TensorFlow را برای پایتون 3.6 نصب کنید و نتیجه را بررسی کنید

مرحله 1: نصب Git برای ویندوز

Git را برای ویندوز بارگیری و نصب کنید. من آن را به اینجا مطمئن شوید مسیر git.exe به متغیر محیط٪ PATH٪ اضافه شده است. من Git را روی نصب می کنم

C: \ Bin \ Git

پوشه برای این آموزش.

مرحله 2: MSYS2 x64 و Command Line Tools را نصب کنید

توزیع 64 بیتی را در اینجا بارگیری و نصب کنید. Bazel از grep ، patch ، unzipand و پورت های دیگر ابزار Unix برای ساخت منابع استفاده می کند. می توانید برای هر یک از آنها باینری های مستقل پیدا کنید ، اما من ترجیح می دهم از بسته MSYS2 استفاده کنم. من آن را روی نصب می کنم

C: \ Bin \ msys64

پوشه برای این آموزش. شما باید یک پوشه ابزار به متغیر محیطی٪ PATH٪ اضافه کنید. در مورد من "C: \ Bin \ msys64 \ usr \ bin" است.

پیوند "MSYS2 MinGW 64-Bit" را از طریق منوی شروع شروع کنید. برای به روزرسانی ، دستور زیر را اجرا کنید (در صورت درخواست MSYS2 MinGW 64-bit را دوباره راه اندازی کنید):

Pacman Syu

سپس اجرا کنید:

Pacman -Su

ابزارهای نصب برای ساخت مورد نیاز است:

پچ Pacman را از حالت فشرده خارج کنید

پوسته 64 بیتی MSYS2 MinGW را با دستور "خروج" ببندید. دیگر نیازی به آن نداریم.

مرحله 3: Visual Studio 2017 Build Tools ، از جمله Visual Studio 2015 Build Tools را نصب کنید

برای ساخت TensorFlow v1.11 باید VC ++ 2015.3 v14.00 (v140) را برای مجموعه ابزار دسک تاپ از Visual Studio 2017 Build Tools نصب کنیم:

مرحله 4: بازل را نصب کنید

جدیدترین بازل را از اینجا بارگیری کنید. به دنبال فایل bazel- -windows-x86_64.exe. من این آموزش را با Bazel 0.17.2 تست کردم. نام باینری را به bazel.exe تغییر دهید و آن را به دایرکتوری در٪ PATH٪ منتقل کنید تا بتوانید Bazel را با تایپ bazel در هر دایرکتوری اجرا کنید. برای جزئیات بیشتر در مورد نصب Bazel برای ویندوز x64 ، لطفا به مشکلات مراجعه کنید.

متغیر جهانی محیط BAZEL_SH را برای موقعیت bash اضافه کنید. راه من این است

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

متغیر جهانی محیط BAZEL_VC را برای مجموعه ابزار "VC ++ 2015.3 v14.00 (v140) for desktop" اضافه کنید:

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

مرحله 5: Python 3.6 64-bit را نصب کنید

TensorFlow از پایتون 3.7 پشتیبانی نمی کند ، بنابراین شما باید نسخه 3.6 را نصب کنید.
به نظر می رسد TensorFlow v1.11 دیگر از Anaconda / Miniconda برای ساخت پشتیبانی نمی کند - من یک خطای عجیب دارم. به همین دلیل از محیط مجازی پایتون برای ایجاد استفاده می کنم.

Python 3.6 برای بارگیری در اینجا موجود است. آن را نصب کنید و محل python.exe را به متغیر٪ PATH٪ اضافه کنید.

مرحله 6: NVIDIA CUDA 10.0 و cuDNN 7.3 را نصب کنید (برای شتاب GPU)

اگر کارت گرافیک NVIDIA دارید که از CUDA پشتیبانی می کند ، این بخش فعلی است. در غیر این صورت ، از این بخش صرف نظر کنید.
در صورت نیاز به کمک ، نصب مرحله به مرحله CUDA در اینجا موجود است. من در حال کپی کردن این راهنما هستم اما برخی از جزئیات را برش می دهم.

به https://developer.nvidia.com/cuda-downloads بروید و نصب کننده CUDA 10.0 را برای ویندوز [نسخه خود] بارگیری کنید. برای من نسخه ویندوز 10 است.

آن را در فهرست پیش فرض با تنظیمات پیش فرض نصب کنید ، اما گزینه ادغام VisualStudio را غیرفعال کنید. در صورت لزوم درایور GPU به روز می شود و دوباره راه اندازی می شود.

دستور cmd (Win + R) را اجرا کنید

دستور زیر نسخه nvcc را بررسی می کند و تنظیم آن را در متغیر محیط مسیر تضمین می کند.

nvcc - برگرداندن

به https://developer.nvidia.com/cudnn بروید (عضویت لازم است).

پس از ورود به سیستم ، بارگیری کنید:

cuDNN v7.3.1 Library for Windows [نسخه شما] برای من Windows 10. به پوشه ای که بارگیری کرده اید بروید و فایل zip را استخراج کنید.

به پوشه استخراج شده بروید و همه پرونده ها و پوشه ها را از پوشه مختلف کپی کنید (به عنوان مثال 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") از فهرست شروع کنید.

در مرحله بعدی ، شما باید یک محیط Python ایجاد ، فعال و پیکربندی کنید. دستورات پوسته زیر را در "VS2015 x64 Native Tools Command Prompt" اجرا کنید (مسیرها را با توجه به موقعیت های خود اصلاح کنید).

pip3 نصب -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activ.bat

پوسته شما پس از اجرای دستورات باید به این شکل باشد:

بسته های اجباری پایتون را نصب کنید:

pip3 شش چرخ را نصب کنید
pip3 keras_applications == 1.0.5 - no-deps را نصب کنید
pip3 نصب keras_preprocessing == 1.0.3 - no-deps

برای اطمینان از نصب بسته های اجباری ، "pip3 list" را اجرا کنید:

فعلاً همین است. کاسه را نبندید.

مرحله 8: کد منبع TensorFlow را شبیه سازی کنید و پچ اجباری را اعمال کنید

ابتدا باید پوشه ای را انتخاب کنید که می خواهید کد منبع TensorFlow در آن شبیه سازی شود. در مورد من "C: \ Users \ amsokol \ Development \ tensorflow-build" است. به پوسته برگردید و اجرا کنید:

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

کد منبع کلون:

Git کلون https://github.com/tensorflow/tensorflow

پرداخت آخرین نسخه 1.11:

cd tensorflow
git checkout v1.11.0

اکنون منابع داریم.

در کتابخانه شخص ثالث خود یک اشکال وجود دارد. ما باید آن را قبل از ساخت درست کنیم.
  • پچ را از اینجا بارگیری کنید و آن را با نام پرونده 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" ، urls = ["https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz" ، "https://bitbucket.org /eigen/eigen/get/fd6845384b86.tar.gz "،] ، sha256 =" d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9 "، نوار_پیشوند" ، نوار_پیشوند " ("// حزب_ثالث: eigen_half.patch") ،) ...

انجام شده.

مرحله 9: پارامترهای ساخت را پیکربندی کنید

اطمینان حاصل کنید که ما در پوشه ریشه کد منبع هستیم:

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

تنظیم کننده را اجرا کنید:

python ./configure.py

ابتدا موقعیت پایتون از شما خواسته می شود. Enter را فشار دهید تا مقدار پیش فرض حفظ شود:

... شما بازل 0.17.2 را نصب کرده اید.
لطفاً مکان پایتون را مشخص کنید. [استاندارد C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

سپس مسیر کتابخانه پایتون از شما خواسته می شود. Enter را فشار دهید تا مقدار پیش فرض حفظ شود:

ردیابی (آخرین تماس آخرین): پرونده " "، خط 1 ، در AttributeError: ماژول "Site" هیچ ویژگی "getitepackages" ندارد مسیرهای کتابخانه پایتون را پیدا کرد: C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages لطفا مسیر کتابخانه Python مورد نظر را وارد کنید. استاندارد [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages] است

سپس از شما nGraph درخواست پشتیبانی می کند. ما به آن نیازی نداریم "n" را فشار دهید:

آیا می خواهید TensorFlow را با پشتیبانی nGraph بسازید؟ [Y / N]: n پشتیبانی از گراف برای TensorFlow فعال نیست.

سپس از CUDA پشتیبانی می خواهد:

آیا می خواهید TensorFlow را با پشتیبانی CUDA بسازید؟ [Y / N]:

اگر می خواهید از شتاب GPU استفاده کنید ، "y" را پاسخ دهید. در غیر این صورت ، "n" را فشار دهید.

اگر برای تنظیم کننده CUDA بله ، س additionalالات دیگری مطرح می شود:
10.0 را به عنوان نسخه CUDA SDK پاسخ دهید:
لطفاً نسخه CUDA SDK را که می خواهید استفاده کنید نشان دهید. [استفاده از CUDA 9.0 را به طور پیش فرض خالی بگذارید]: 10.0
Enter را فشار دهید تا از مکان پیش فرض جعبه ابزار CUDA خارج شوید:
لطفاً محلی را که جعبه ابزار CUDA 10.0 در آن نصب شده مشخص کنید. برای اطلاعات بیشتر به README.md مراجعه کنید. [پیش فرض C: / Programs / NVIDIA GPU Computing Toolkit / CUDA / v10.0 است]:
پاسخ 7.3.1 به عنوان نسخه cuDNN:
لطفاً نسخه مورد نظر را برای cuDNN نشان دهید. [برای استفاده از cuDNN 7.0 به طور پیش فرض خالی بگذارید]: 7.3.1
برای خروج از مکان پیش فرض کتابخانه cuDNN ، Enter را فشار دهید:
لطفاً محلی را که کتابخانه cuDNN 7 نصب شده است وارد کنید. برای اطلاعات بیشتر به README.md مراجعه کنید. [پیش فرض C: / Programs / 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 6 دارم ، بنابراین جواب می دهم: AVX2:

اگر گزینه Basel "--config = opt" مشخص شده است ، لطفاً پرچم های بهینه سازی را برای استفاده در هنگام گردآوری مشخص کنید. [پیش فرض است / قوس: AVX]: / arch: AVX2

آخرین سوال در مورد ایژن است. پاسخ با "y". زمان کامپایل را به شدت کاهش می دهد.

آیا می خواهید خط مقدماتی قوی خود را برای برخی از مجموعه های C ++ نادیده بگیرید تا زمان تلفیق کاهش یابد؟ [Y / n]: Y Eigen به شدت درون خطی را بازنویسی می کند.

پیکربندی انجام شد. بیا بسازیم

مرحله 10: ساخت TensorFlow از منابع

اطمینان حاصل کنید که ما در پوشه ریشه کد منبع هستیم:

cd C: \ Users \ amsokol \ Development \ tensorflow-build \ tensorflow
مدت زمان زیادی طول می کشد تا خلق شود. من اکیداً توصیه می کنم نرم افزار آنتی ویروس از جمله Windows Defender Antivirus protection در زمان واقعی را خاموش کنید.

ساخت ساخت:

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

مدتی بنشینید و آرام باشید.

مرحله 11: یک پرونده چرخ TensorFlow برای پایتون 3.6 ایجاد کنید

برای ایجاد یک فایل Python Wheel دستور را اجرا کنید:

mkdir .. \ out
bazel-bin \ tensorflow \ tools \ pip_package \ build_pip_package .. \ out

شکست می خورد:

یک مشکل شناخته شده وجود دارد. به پوشه "bazel-bin \ tensorflow \ tools \ pip_package" نگاه کنید. این شامل فایل "simple_console_for_windows.zip" با طول صفر است. این مسئله Bazel شامل یک ابزار فشرده 32 بیتی است که در پرونده بزرگتر 2 گیگابایتی خراب می شود. برای جزئیات و راه حل ها به پیوندها مراجعه کنید:

  • https://github.com/tensorflow/tensorflow/issues/20332
  • https://stackoverflow.com/questions/52394305/ بسته بندی-ایجاد-لوله-برای-تنش-با-پشتیبانی-از- gpu- نتایج-در -0- بایت- ساده- co

برای رفع مشکل مراحل وجود دارد:

سی دی \ bazel-bin \ tensorflow \ tools \ pip_package

پرونده "simple_console_for_windows.zip-0.params" را باز کرده و خط را با "mnist.zip" حذف کنید:

...
runfiles / org_tensorflow / tensorflow / contrib / eager / python / مثالها / gan / mnist.zip = bazel-out / x64_windows-opt / bin / tensorflow / مشارکت / مشتاق / پایتون / نمونه / gan / mnist.zip
...
بهم کمک میکنه. اگر کمکی به شما نمی کند ، به سادگی سایر خطوط را با پرونده های 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" را به صورت دستی ایجاد کنید:

external \ 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_package / کنسول_ ساده برای ویندوز.zip-0.params

برای ایجاد یک فایل Python Wheel دستور را اجرا کنید:

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 Wheel را اجرا کنید:

pip3 نصب کنید .. \ out \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

از فهرست Tensorflow خارج شوید

سی دی ..

برای بررسی اسکریپت بارگیری در اینجا یا اجرای آن با کپی و جایگذاری:

وارد کردن Tensorflow به عنوان tf سلام = tf.constant ('سلام ، TensorFlow!') جلسه = tf.Session () چاپ (session.run (سلام))

اگر سیستم خروجی زیر را داشته باشد ، همه چیز خوب است:

سلام TensorFlow!

خروجی من:

اکنون TensorFlow را با موفقیت روی رایانه ویندوز نصب کرده اید.

اگر به نفع شما بود ، در کامنتهای زیر به من اطلاع دهید. یا اگر نقصی دارید. خیلی ممنون!