[Cập nhật 2] Cách xây dựng và cài đặt GPU / CPU TensorFlow cho Windows từ mã nguồn bằng bazel và Python 3.6

Đây là một bản cập nhật cho câu chuyện trước đây của tôi. Có gì mới ở đây:

  • TenorFlow v1.12
  • CUDA v10.0
  • cuDNN v7.4
  • bazel 0.19.0
  • Hỗ trợ Apache

Có hướng dẫn trên trang web chính thức. Nó không phải là rất toàn diện nhưng rất hữu ích.

Tóm lược

  1. Cài đặt Git cho Windows
  2. Cài đặt Bazel
  3. Cài đặt MSYS2 x64 và các công cụ dòng lệnh
  4. Cài đặt Visual Studio 2017 Build Tools bao gồm Visual Studio 2015 Build Tools
  5. Cài đặt Python 3.6 64 bit
  6. Cài đặt NVIDIA CUDA 10.0 và cuDNN 7.4 (để tăng tốc GPU)
  7. Cấu hình môi trường xây dựng
  8. Clone TensorFlow v1.12 mã nguồn và áp dụng bản vá bắt buộc
  9. Cấu hình tham số xây dựng
  10. Xây dựng TensorFlow từ các nguồn
  11. Tạo tệp bánh xe TensorFlow cho Python 3.6
  12. Cài đặt tệp bánh xe TensorFlow cho Python 3.6 và kiểm tra kết quả

Bước 1: Cài đặt Git cho Windows

Tải xuống và cài đặt Git cho Windows. Tôi mang nó đến đây. Hãy chắc chắn đường dẫn đến git.exe được thêm vào biến môi trường% PATH%. Tôi cài đặt Git cho

C: \ Thùng \ Git

thư mục cho hướng dẫn này.

Bước 2: Cài đặt MSYS2 x64 và các công cụ dòng lệnh

Tải xuống và cài đặt phân phối 64 bit tại đây. Bazel sử dụng grep, patch, giải nén các cổng khác của công cụ Unix để xây dựng nguồn. Bạn có thể cố gắng tìm các nhị phân độc lập cho mỗi trong số chúng nhưng tôi thích sử dụng gói MSYS2. Tôi cài đặt nó vào

C: \ Thùng \ msys64

thư mục cho hướng dẫn này. Bạn phải thêm thư mục với các công cụ vào biến môi trường% PATH%. Đó là một tên C: \ Bin \ msys64 \ usr \ bin, trong trường hợp của tôi.

Bắt đầu Phím tắt MSYS2 MinGW 64-bit từ Menu bắt đầu. Chạy lệnh sau để cập nhật (khởi động lại MS MS2 MinGW 64-bit nếu nó yêu cầu):

pacman -Syu

Sau đó chạy:

pacman -Su

Cài đặt công cụ là cần thiết để xây dựng:

pacman -S patch giải nén

Đóng lớp vỏ MSYS2 MinGW 64-bit bằng lệnh thoát Thoát. Chúng tôi không cần nó nữa.

Bước 3: Cài đặt Công cụ xây dựng Visual Studio 2017 bao gồm Công cụ xây dựng Visual Studio 2015

Chúng tôi phải cài đặt bộ công cụ của Cameron VC ++ 2015.3 v14.00 (v140) cho máy tính để bàn, từ Visual Studio 2017 Build Tools để xây dựng TensorFlow v1.11:

Bước 4: Cài đặt Bazel

Tải về Basel mới nhất tại đây. Tìm tệp bazel- -windows-x86_64.exe. Tôi đã thử nghiệm hướng dẫn này với bazel 0.19.0. Đổi tên nhị phân thành bazel.exe và di chuyển nó vào một thư mục trên% PATH% của bạn, để bạn có thể chạy Bazel bằng cách nhập bazel vào bất kỳ thư mục nào. Xem chi tiết cài đặt Bazel cho Windows x64 trong trường hợp có vấn đề.

Thêm biến môi trường toàn cầu BAZEL_SH cho vị trí bash. Con đường của tôi là

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

Thêm biến môi trường toàn cầu BAZEL_VC cho bộ công cụ của VC VC 2015 2015 v14.00 (v140) cho vị trí chuỗi công cụ máy tính để bàn:

C: \ Tệp chương trình (x86) \ Microsoft Visual Studio 14.0 \ VC

Bước 5: Cài đặt Python 3.6 64 bit

TensorFlow không hỗ trợ Python 3.7 nên bạn phải cài đặt phiên bản 3.6.
Anaconda / Minicondais không chính thức hỗ trợ xây dựng từ các nguồn. Đó là lý do tại sao tôi sử dụng môi trường ảo Python để xây dựng.

Python 3.6 có sẵn để tải về tại đây. Cài đặt nó và thêm vị trí vào python.exe vào biến% PATH%.

Bước 6: Cài đặt NVIDIA CUDA 10.0 và cuDNN 7.4 (để tăng tốc GPU)

Phần này là thực tế nếu bạn có Thẻ đồ họa NVIDIA hỗ trợ CUDA. Nếu không thì bỏ qua phần này.
Xem từng bước cài đặt CUDA tại đây nếu bạn cần trợ giúp. Tôi sao chép-dán hướng dẫn đó nhưng cắt một số chi tiết.

Truy cập https://developer.nvidia.com/cuda-doads và tải xuống CUDA 10.0 Installer cho Windows [phiên bản của bạn]. Đối với tôi, phiên bản là Windows 10.

Cài đặt nó ở vị trí mặc định với cài đặt mặc định nhưng bỏ chọn tùy chọn tích hợp VisualStudio. Nó sẽ cập nhật trình điều khiển GPU của bạn nếu cần và khởi động lại.

Đi để chạy (Win + R) loại cmd

Lệnh sau sẽ kiểm tra phiên bản nvcc và đảm bảo rằng nó được đặt trong biến môi trường đường dẫn.

chuyển đổi nvcc

Goto tiếp theo https://developer.nvidia.com/cudnn (Yêu cầu thành viên).

Sau khi đăng nhập tải về như sau:

cuDNN v7.4.1 Thư viện cho Windows [phiên bản của bạn] cho tôi Windows 10. Thư mục đã tải xuống và giải nén tệp zip.

Đi vào bên trong thư mục được trích xuất và sao chép tất cả các tệp và thư mục từ thư mục cuda (ví dụ: bin, bao gồm, lib) và dán vào Bộ C: \ Chương trình tập tin \ Bộ công cụ tính toán GPU NVIDIA \ CUDA \ v10.0.

Bước cuối cùng ở đây là thêm Bộ công cụ tính toán GPU C: \ Chương trình \ Bộ xử lý GPU NVIDIA \ CUDA \ v10.0 \ ngoại hạng

Bước 7: Cấu hình môi trường xây dựng

Khởi động shell VC ++ 2015 cho x64 (Phím tắt công cụ gốc của VS VS5 x64 Lệnh Prompt ') từ Menu bắt đầu.

Tiếp theo bạn phải tạo, kích hoạt và cấu hình môi trường Python. Chạy bên trong Lệnh VS VS5 x64 Lệnh công cụ gốc Dấu nhắc lệnh shell shell bên dưới (đường dẫn chính xác theo vị trí của bạn).

cài đặt pip3 -U virtualenv
virtualenv --system-site-gói C: \ Users \ amsokol \ tenorflow-v1.12
C: \ Users \ amsokol \ tenorflow-v1.12 \ Sc scripts \ activ.bat

Shell của bạn sẽ trông như thế sau khi các lệnh được áp dụng:

Cài đặt các gói Python bắt buộc:

Pip3 cài đặt sáu bánh xe numpy
cài đặt pip3 keras_appluggest == 1.0.5 --no-deps
cài đặt pip3 keras_pre Processing == 1.0.3 --no-deps

Chạy danh sách Pip3 Pip3 để đảm bảo các gói bắt buộc được cài đặt:

Đó là tất cả cho đến bây giờ. Đừng đóng vỏ.

Bước 8: Sao chép mã nguồn TensorFlow và áp dụng bản vá bắt buộc

Trước hết, bạn phải chọn thư mục nơi sao chép mã nguồn TensorFlow. Đó là tên C: \ Users \ amsokol \ Development \ tenorflow-build, trong trường hợp của tôi. Quay lại vỏ và chạy:

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

Mã nguồn bản sao:

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

Thanh toán mới nhất của phiên bản 1.12:

dòng chảy cd
kiểm tra git v1.12.0

Bây giờ chúng tôi có nguồn.

Có một BUG trong thư viện bên thứ ba eigen. Chúng tôi phải sửa nó trước khi xây dựng.
  • Tải xuống bản vá tại đây và lưu với tên tệp eigen_half.patch vào thư mục third_party
  • Thêm patch_file = clean_dep (Hồi // third_party: eigen_half.patch,), dòng vào phần eigen_archive vào tệp tenorflow / workspace.bzl.

Kết quả trong tệp tenorflow / workspace.bzl sẽ như thế này:

...
tf_http_archive (
    tên = "eigen_archive",
    build_file = clean_dep ("// third_party: eigen.BUILD"),
    sha256 = "d956415d784fa4e42b6a2a45c32556d6aec9d0a3d8ef48baee2522ab762556a9",
    dải_prefix = "eigen-eigen-fd6845384b86",
    url = [
"https://mirror.bazel.build/bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
"https://bitbucket.org/eigen/eigen/get/fd6845384b86.tar.gz",
    ],
    patch_file = clean_dep ("// third_party: eigen_half.patch"),
)
...

Làm xong.

Bước 9: Cấu hình tham số bản dựng

Đảm bảo chúng tôi đang ở trong thư mục gốc mã nguồn:

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

Chạy cấu hình:

con trăn

Đầu tiên nó hỏi vị trí của Python. Nhấn Enter để để lại giá trị mặc định:

...
Bạn đã cài đặt bazel 0.19.0.
Vui lòng chỉ định vị trí của trăn. [Mặc định là C: \ Users \ amsokol \ tenorflow-v1.12 \ Sc scripts \ python.exe]:

Sau đó, nó hỏi vị trí của các đường dẫn thư viện Python. Nhấn Enter để để lại giá trị mặc định:

TracBack (cuộc gọi gần đây nhất vừa qua):
  Tệp "", dòng 1, trong 
AttributionError: mô-đun 'trang web' không có thuộc tính 'getitepackages'
Tìm thấy đường dẫn thư viện Python có thể:
  C: \ Users \ amsokol \ tenorflow-v1.12 \ Lib \ site-gói
Vui lòng nhập đường dẫn thư viện Python mong muốn để sử dụng. Mặc định là [C: \ Users \ amsokol \ tenorflow-v1.12 \ Lib \ site-gói]

Sau đó, nó hỏi về hỗ trợ Apache Ignite. Nhấn vào y y nếu bạn cần nó:

Bạn có muốn xây dựng TensorFlow với hỗ trợ Apache Ignite không? [Y / n]: y

Sau đó, nó hỏi về hỗ trợ JIT XLA. Báo chí Nv:

Bạn có muốn xây dựng TensorFlow với hỗ trợ XLA JIT không? [y / N]: n
Bật hỗ trợ JIT XLA làm tăng lỗi biên dịch Biên dịch C ++ của quy tắc ‘// tenorflow / Trình biên dịch / tf2xla: cpu_feft_r nb, Lỗi không thành công. Tôi chưa tìm thấy sửa chữa.

Sau đó, nó hỏi về hỗ trợ ROCm. Chúng tôi không cần nó nếu chúng tôi chọn hỗ trợ CUDA. Báo chí Nv:

Bạn có muốn xây dựng TensorFlow với sự hỗ trợ của ROCm không? [y / N]: n

Sau đó, nó hỏi về hỗ trợ CUDA:

Bạn có muốn xây dựng TensorFlow với sự hỗ trợ CUDA không? [y / N]:

Trả lời y lòng nếu bạn sẽ sử dụng tăng tốc GPU. Nếu không thì nhấn Nv.

Trong trường hợp trên Có cho cấu hình CUDA đặt câu hỏi bổ sung:
Trả lời 10.0 dưới dạng phiên bản CUDA SDK:
Vui lòng chỉ định phiên bản CUDA SDK bạn muốn sử dụng. [Để trống để mặc định thành CUDA 9.0]: 10.0
Nhấn Enter để rời khỏi vị trí bộ công cụ CUDA mặc định:
Vui lòng chỉ định vị trí nơi bộ công cụ CUDA 10.0 được cài đặt. Tham khảo README.md để biết thêm chi tiết. [Mặc định là C: / Tệp chương trình / Bộ công cụ tính toán GPU NVIDIA / CUDA / v10.0]:
Nhấn Enter để để mặc định cho cuDNN 7:
Vui lòng chỉ định phiên bản cuDNN bạn muốn sử dụng. [Để trống để mặc định cho cuDNN 7]:
Nhấn Enter để để lại vị trí thư viện cuDNN mặc định:
Vui lòng chỉ định vị trí nơi thư viện cuDNN 7 được cài đặt. Tham khảo README.md để biết thêm chi tiết. [Mặc định là C: / Tệp chương trình / Bộ công cụ tính toán GPU NVIDIA / CUDA / v10.0]:
Câu hỏi tiếp theo là về khả năng tính toán CUDA để xây dựng với. Bạn có thể tìm thấy khả năng tính toán của thiết bị của mình tại: https://developer.nvidia.com/cuda-gpus. Tôi có GTX 1070 mà tại sao tôi trả lời 6.1:
Vui lòng chỉ định danh sách các khả năng tính toán Cuda được phân tách bằng dấu phẩy mà bạn muốn xây dựng.
Bạn có thể tìm thấy khả năng tính toán của thiết bị của mình tại: https://developer.nvidia.com/cuda-gpus.
Xin lưu ý rằng mỗi khả năng tính toán bổ sung làm tăng đáng kể thời gian xây dựng và kích thước nhị phân của bạn. [Mặc định là: 3.5,7.0]: 6.1

Câu hỏi tiếp theo là đặt cờ tối ưu hóa. Tôi có CPU Intel thế hệ thứ 6 mà tại sao tôi trả lời / arch: AVX2:

Vui lòng chỉ định các cờ tối ưu hóa để sử dụng trong quá trình biên dịch khi tùy chọn bazel "--config = opt" được chỉ định [Mặc định là / arch: AVX]: / arch: AVX2

Câu hỏi cuối cùng là về bản địa. Trả lời y lòng. Nó làm giảm đáng kể thời gian biên dịch.

Bạn có muốn ghi đè nội tuyến mạnh cho một số trình biên dịch C ++ để giảm thời gian biên dịch không? [Y / n]: y
Eigen mạnh mẽ ghi đè nội tuyến.

Cấu hình hoàn thành. Nào cùng xây.

Bước 10: Xây dựng TensorFlow từ các nguồn

Có một BUG trong bazel 0.19.0. Xem ở đây chi tiết trước. Để khắc phục, chúng tôi phải thêm chuỗi nhập khẩu /tensorflow/tools/bazel.rc, trên dòng trên cùng của (ẩn tệp) Hồi /tensorflow/.bazelrc Trong trường hợp của tôi, C: /Users/amsokol/Development/tensorflow-build/tensorflow/.bazelrc Tập tin là:
nhập C: /Users/amsokol/Development/tensorflow-build/tensorflow/tools/bazel.rc
nhập C: /Users/amsokol/Development/tensorflow-build/tensorflow/.tf_configure.bazelrc

Đảm bảo chúng tôi đang ở trong thư mục gốc mã nguồn:

cd C: \ Users \ amsokol \ Development \ tenorflow-build \ tenorflow
Xây dựng mất nhiều thời gian. Tôi thực sự khuyên bạn nên tắt phần mềm chống vi-rút bao gồm bảo vệ thời gian thực Windows Defender Antivirus.

Chạy xây dựng:

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

Ngồi lại và thư giãn một thời gian.

Bước 11: Tạo tệp bánh xe TensorFlow cho Python 3.6

Chạy lệnh để tạo tệp bánh xe Python:

mkdir .. \ ra
bazel-bin \ tenorflow \ tools \ pip_package \ build_pip_package .. \ out

Nó tạo ra tập tin tenorflow-1.12.0-cp36-cp36m-win_amd64.whl trong thư mục.

Bước 12: Cài đặt tệp bánh xe TensorFlow cho Python 3.6 và kiểm tra kết quả

Chạy lệnh để cài đặt tệp bánh xe Python:

cài đặt pip3 .. \ out \ tenorflow-1.12.0-cp36-cp36m-win_amd64.whl

Rời khỏi thư mục mười chục dòng mười (đôi khi xảy ra lỗi khi tôi chạy các tập lệnh Python bên trong thư mục mã nguồn Tensoflow - Tôi không biết lý do):

cd ..

Để kiểm tra tập lệnh tải xuống tại đây hoặc sao chép-dán và chạy:

nhập hàng chục như tf
xin chào = tf.constant ('Xin chào, TensorFlow!')
phiên = tf.Session ()
in (session.run (xin chào))

Nếu hệ thống xuất ra các mục sau, thì mọi thứ đều ổn:

Xin chào, TensorFlow!

Đầu ra của tôi:

Bạn cũng có thể chạy tập lệnh Python này để đảm bảo phiên bản của TensorFlow đã cài đặt:

# TensorFlow và tf.keras
nhập hàng chục như tf
từ máy ảnh nhập hàng chục
in (tf .__ phiên bản__)
in (máy ảnh .__ phiên bản__)

Bạn phải nhận được đầu ra sau:

1.12.0
2.1.6-tf

Bây giờ bạn đã cài đặt thành công TensorFlow 1.12 trên máy Windows.

Hãy cho tôi biết trong các ý kiến ​​dưới đây nếu nó làm việc cho bạn. Hoặc nếu bạn có bất kỳ lỗi nào. Cảm ơn!