[อัปเดต 1] วิธีสร้างและติดตั้ง TensorFlow GPU / CPU สำหรับ Windows จากซอร์สโค้ดโดยใช้ bazel และ Python 3.6

นี่คือการอัปเดตสำหรับเรื่องราวก่อนหน้าของฉัน มีอะไรใหม่ที่นี่:

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

มีคำแนะนำในเว็บไซต์อย่างเป็นทางการ มันไม่ครอบคลุมมาก แต่มีประโยชน์บางครั้ง

สรุป

  1. ติดตั้ง Git สำหรับ Windows
  2. ติดตั้ง Bazel
  3. ติดตั้ง MSYS2 x64 และเครื่องมือบรรทัดคำสั่ง
  4. ติดตั้งเครื่องมือสร้างของ Visual Studio 2017 รวมถึงเครื่องมือสร้างของ Visual Studio 2015
  5. ติดตั้ง Python 3.6 64-bits
  6. ติดตั้ง NVIDIA CUDA 10.0 และ cuDNN 7.3 (สำหรับการเร่งความเร็ว GPU)
  7. กำหนดค่าสภาพแวดล้อมการสร้าง
  8. Clone TensorFlow v1.11 ซอร์สโค้ดและใช้แพทช์บังคับ
  9. กำหนดค่าพารามิเตอร์บิลด์
  10. สร้าง TensorFlow จากแหล่งที่มา
  11. สร้างไฟล์ล้อ TensorFlow สำหรับ Python 3.6
  12. ติดตั้งไฟล์ล้อ TensorFlow สำหรับ Python 3.6 และตรวจสอบผลลัพธ์

ขั้นตอนที่ 1: ติดตั้ง Git สำหรับ Windows

ดาวน์โหลดและติดตั้ง Git สำหรับ Windows ฉันเอาที่นี่ ต้องแน่ใจว่าเพิ่มพา ธ ไปยัง git.exe ในตัวแปรสภาพแวดล้อม% PATH% ฉันติดตั้ง Git ให้กับ

C: \ Bin \ Git

โฟลเดอร์สำหรับบทช่วยสอนนี้

ขั้นตอนที่ 2: ติดตั้ง MSYS2 x64 และเครื่องมือบรรทัดคำสั่ง

ดาวน์โหลดและติดตั้งการกระจาย 64 บิตที่นี่ Bazel ใช้ grep, patch, unzipand และพอร์ตอื่น ๆ ของ Unix-tools เพื่อสร้างแหล่งข้อมูล คุณสามารถลองหาไบนารีแบบเอกเทศสำหรับแต่ละไฟล์ได้ แต่ฉันชอบใช้ MSYS2 มัด ฉันติดตั้งมันเพื่อ

C: \ Bin \ msys64

โฟลเดอร์สำหรับบทช่วยสอนนี้ คุณต้องเพิ่มโฟลเดอร์ที่มีเครื่องมือในตัวแปรสภาพแวดล้อม% PATH% มันคือ“ C: \ Bin \ msys64 \ usr \ bin” ในกรณีของฉัน

เริ่มทางลัด“ MSYS2 MinGW 64 บิต” จากเมนูเริ่ม เรียกใช้คำสั่งต่อไปนี้เพื่ออัปเดต (รีสตาร์ท“ MSYS2 MinGW 64-bit” หากถาม):

pacman -Syu

จากนั้นเรียกใช้:

pacman -Su

เครื่องมือติดตั้งมีความจำเป็นสำหรับการสร้าง:

pacman -S คลายซิปแพทช์

ปิด“ เชลล์ MSYS2 MinGW 64 บิต” โดยคำสั่ง“ exit” เราไม่ต้องการมันอีกแล้ว

ขั้นตอนที่ 3: ติดตั้งเครื่องมือสร้าง Visual Studio 2017 รวมถึงเครื่องมือสร้าง Visual Studio 2015

เราต้องติดตั้งชุดเครื่องมือ“ VC ++ 2015.3 v14.00 (v140) สำหรับเดสก์ท็อป” จากเครื่องมือสร้าง Visual Studio 2017 เพื่อสร้าง TensorFlow v1.11:

ขั้นตอนที่ 4: ติดตั้ง Bazel

ดาวน์โหลดบาเซิลล่าสุดได้ที่นี่ ค้นหา bazel- ไฟล์ -windows-x86_64.exe ฉันได้ทดสอบบทช่วยสอนนี้ด้วย bazel 0.17.2 เปลี่ยนชื่อไบนารีเป็น bazel.exe และย้ายไปยังไดเรกทอรีบน% PATH% ของคุณเพื่อให้คุณสามารถเรียกใช้ Bazel โดยพิมพ์ bazel ในไดเรกทอรีใด ๆ ดูรายละเอียดการติดตั้ง Bazel สำหรับ Windows x64 ในกรณีที่เกิดปัญหา

เพิ่มตัวแปรสภาวะแวดล้อมส่วนกลาง BAZEL_SH สำหรับตำแหน่ง bash เส้นทางของฉันคือ

C: \ Bin \ msys64 \ usr \ bin \ 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 สำหรับการสร้าง

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 สำหรับ Windows [รุ่นของคุณ] สำหรับฉันรุ่นคือ Windows 10

ติดตั้งในตำแหน่งเริ่มต้นด้วยการตั้งค่าเริ่มต้น แต่ไม่เลือกตัวเลือกการรวม VisualStudio มันจะอัปเดตไดรเวอร์ GPU ของคุณหากต้องการและรีบูต

ไปที่ Run (Win + R) พิมพ์ cmd

คำสั่งต่อไปนี้จะตรวจสอบเวอร์ชัน nvcc และประกันว่ามันถูกตั้งค่าในตัวแปรสภาพแวดล้อมของเส้นทาง

nvcc - รุ่น

goto ถัดไป 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 \ พิเศษ \ CUPTI \ libx64” ไปยังตัวแปรสภาพแวดล้อม% PATH%

ขั้นตอนที่ 7: กำหนดค่าสภาพแวดล้อมการสร้าง

เริ่มต้นเชลล์ VC ++ 2015 สำหรับทางลัด x64 (“ VS2015 x64 เครื่องมือพร้อมรับคำสั่งเครื่องมือพื้นเมือง”) จากเมนูเริ่ม

ต่อไปคุณต้องสร้างเปิดใช้งานและกำหนดค่าสภาพแวดล้อม Python ทำงานภายในคำสั่งเชลล์พร้อมรับคำสั่งเครื่องมือ“ VS2015 x64 Native Command Command” ด้านล่าง (พา ธ ที่ถูกต้องตามตำแหน่งของคุณ)

pip3 ติดตั้ง -U virtualenv
virtualenv --system-site-packages C: \ Users \ amsokol \ tensorflow-v1.11
C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ activate.bat

เชลล์ของคุณควรมีลักษณะเช่นนั้นหลังจากใช้คำสั่งแล้ว:

ติดตั้งแพ็คเกจ Python ที่จำเป็น:

pip3 ติดตั้งหกล้อ numpy
pip3 ติดตั้ง keras_applications == 1.0.5 - ไม่มีการติดตั้ง
pip3 ติดตั้ง keras_preprocessing == 1.0.3 - ไม่ลบ

เรียกใช้“ รายการ pip3” เพื่อให้แน่ใจว่ามีการติดตั้งแพ็คเกจบังคับ:

นั่นคือทั้งหมดที่สำหรับตอนนี้. อย่าปิดเปลือก

ขั้นตอนที่ 8: Clone TensorFlow source code และใช้ patch ที่จำเป็น

ก่อนอื่นคุณต้องเลือกโฟลเดอร์ที่จะทำการโคลนซอร์สโค้ดของ TensorFlow มันคือ“ C: \ Users \ amsokol \ Development \ tensorflow-build” ในกรณีของฉัน กลับไปที่เชลล์และรัน:

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

รหัสที่มาโคลน:

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

ชำระเงินล่าสุด 1.11 เวอร์ชัน:

ซีดีแรงดึง
git checkout 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 (
  name = "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

เรียกใช้ตัวกำหนดค่า:

python ./configure.py

ก่อนอื่นจะถามตำแหน่งของ Python กด Enter เพื่อออกจากค่าเริ่มต้น:

...
คุณติดตั้ง Bazel 0.17.2 แล้ว
โปรดระบุตำแหน่งของงูหลาม [ค่าเริ่มต้นคือ C: \ Users \ amsokol \ tensorflow-v1.11 \ Scripts \ python.exe]:

จากนั้นจะถามตำแหน่งของเส้นทางของไลบรารี Python กด Enter เพื่อออกจากค่าเริ่มต้น:

Traceback (การโทรล่าสุดครั้งล่าสุด):
  ไฟล์ "" บรรทัดที่ 1 ใน <โมดูล>
AttributeError: โมดูล 'เว็บไซต์' ไม่มีแอตทริบิวต์ 'getsitepackages'
พบเส้นทางห้องสมุด Python ที่เป็นไปได้:
  C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ เว็บไซต์แพคเกจ
โปรดป้อนเส้นทางของไลบรารี Python ที่ต้องการใช้ ค่าเริ่มต้นคือ [C: \ Users \ amsokol \ tensorflow-v1.11 \ Lib \ site-packages]

จากนั้นจะถามเกี่ยวกับการสนับสนุน nGraph เราไม่ต้องการมัน กด“ n”:

คุณต้องการสร้าง TensorFlow ด้วยการสนับสนุน nGraph หรือไม่? [y / N]: n
จะไม่เปิดใช้งานการสนับสนุน nGraph สำหรับ TensorFlow

จากนั้นจะถามเกี่ยวกับการสนับสนุน CUDA:

คุณต้องการสร้าง TensorFlow ด้วยการสนับสนุน CUDA หรือไม่ [Y / N]:

ตอบ“ y” ถ้าคุณต้องการเร่งความเร็วด้วย GPU มิฉะนั้นกด“ n”

ในกรณีที่ใช่สำหรับตัวกำหนดค่า CUDA ถามคำถามเพิ่มเติม:
ตอบ 10.0 เป็นรุ่น CUDA SDK:
โปรดระบุรุ่น CUDA SDK ที่คุณต้องการใช้ [ปล่อยว่างไว้ที่ค่าตั้งต้นของ CUDA 9.0]: 10.0
กด Enter เพื่อออกจากตำแหน่งชุดเครื่องมือ CUDA เริ่มต้น:
โปรดระบุตำแหน่งที่ติดตั้งชุดเครื่องมือ CUDA 10.0 อ้างถึง README.md สำหรับรายละเอียดเพิ่มเติม [ค่าเริ่มต้นคือ C: / ไฟล์โปรแกรม / ชุดเครื่องมือคำนวณ GPU ของ NVIDIA / CUDA / v10.0]:
ตอบ 7.3.1 เป็นเวอร์ชัน cuDNN:
โปรดระบุรุ่น cuDNN ที่คุณต้องการใช้ [ปล่อยว่างไว้ที่ค่าเริ่มต้นเป็น cuDNN 7.0]: 7.3.1
กด Enter เพื่อออกจากตำแหน่งไลบรารี cuDNN เริ่มต้น:
โปรดระบุตำแหน่งที่ติดตั้งไลบรารี cuDNN 7 อ้างถึง README.md สำหรับรายละเอียดเพิ่มเติม [ค่าเริ่มต้นคือ C: / ไฟล์โปรแกรม / ชุดเครื่องมือคำนวณ GPU ของ NVIDIA / 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 นั่นเป็นเหตุผลที่ฉันตอบ / arch: AVX2:

โปรดระบุแฟล็กการปรับให้เหมาะสมที่จะใช้ระหว่างการรวบรวมเมื่อระบุตัวเลือก bazel "--config = opt" [ค่าเริ่มต้นคือ / arch: AVX]: / arch: AVX2

คำถามสุดท้ายเกี่ยวกับไอเกน ตอบ“ y” มันช่วยลดเวลารวบรวมอย่างมาก

คุณต้องการที่จะแทนที่ eigen ที่แข็งแกร่งแบบอินไลน์สำหรับการรวบรวม C ++ บางส่วนเพื่อลดเวลาในการรวบรวมหรือไม่? [Y / n]: y
Eigen ถูกแทนที่แบบอินไลน์ที่แข็งแกร่ง

การกำหนดค่าเสร็จสมบูรณ์ ให้สร้าง

ขั้นตอนที่ 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 สำหรับ Python 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 มียูทิลิตี้ zip ขนาด 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

มีขั้นตอนในการแก้ไขปัญหา:

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

เปิดไฟล์“ simple_console_for_windows.zip-0.params” แล้วลบบรรทัดที่มี“ mnist.zip”:

...
runfiles / org_tensorflow / tensorflow / contrib / กระตือรือร้น / หลาม / ตัวอย่าง / กัน / mnist.zip = Bazel ออก / x64_windows-opt / bin / tensorflow / contrib / กระตือรือร้น / หลาม / ตัวอย่าง / กัน / mnist.zip
...
มันช่วยฉัน ในกรณีที่ไม่ได้ช่วยให้คุณลบบรรทัดอื่น ๆ ด้วยไฟล์ 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 \ zip.exe vcC bazel-out / x64_windows-opt / bin / tensorflow / tools / pip_package / simple_console_for_windows.zip @ bazel-out / x64_windows-opt / bin / tensorflow / เครื่องมือ / pip_package simple_console_for_windows.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 สำหรับ Python 3.6 และตรวจสอบผลลัพธ์

เรียกใช้คำสั่งเพื่อติดตั้งไฟล์ Python wheel:

pip3 ติดตั้ง .. \ ออก \ tensorflow-1.11.0-cp36-cp36m-win_amd64.whl

ออกจากไดเรกทอรี“ tensorflow” (เกิดข้อผิดพลาดบางครั้งเมื่อฉันเรียกใช้สคริปต์ Python ภายในโฟลเดอร์ซอร์สโค้ด Tensoflow - ฉันไม่รู้เหตุผล):

ซีดี ..

หากต้องการตรวจสอบสคริปต์ดาวน์โหลดที่นี่หรือคัดลอกและวาง:

นำเข้า tensorflow เป็น TF
hello = tf.constant ('สวัสดี TensorFlow!')
เซสชัน = tf.Session ()
พิมพ์ (session.run (สวัสดี))

หากระบบแสดงผลลัพธ์ต่อไปนี้แสดงว่าทุกอย่างเรียบร้อยดี:

สวัสดี TensorFlow!

ผลลัพธ์ของฉัน:

คุณได้ติดตั้ง TensorFlow บนเครื่อง Windows สำเร็จแล้ว

โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่างหากได้ผลสำหรับคุณ หรือถ้าคุณมีข้อผิดพลาด ขอบคุณ!