Xây dựng từ nguồn trên Windows, Xây dựng từ nguồn trên Windows

Xây dựng gói pip TensorFlow từ nguồn và cài đặt nó trên Windows.

Thiết lập cho Windows

Cài đặt các công cụ xây dựng sau để định cấu hình môi trường phát triển Windows của bạn.

Cài đặt Python và các phần phụ thuộc của gói TensorFlow

Cài đặt bản phát hành Python 3.9+ 64-bit cho Windows . Chọn pip làm tính năng tùy chọn và thêm nó vào biến môi trường %PATH% của bạn.

Cài đặt các phụ thuộc của gói pip TensorFlow:

pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps

Các phần phụ thuộc được liệt kê trong tệp setup.py bên dưới REQUIRED_PACKAGES .

Cài đặt Bazel

Cài đặt Bazel , công cụ xây dựng được sử dụng để biên dịch TensorFlow. Đối với phiên bản Bazel, hãy xem cấu hình bản dựng đã thử nghiệm dành cho Windows. Định cấu hình Bazel để xây dựng C++ .

Thêm vị trí của tệp thực thi Bazel vào biến môi trường %PATH% của bạn.

Cài đặt MSYS2

Cài đặt MSYS2 cho các công cụ bin cần thiết để xây dựng TensorFlow. Nếu MSYS2 được cài đặt vào C:\msys64 , hãy thêm C:\msys64\usr\bin vào biến môi trường %PATH% của bạn. Sau đó, sử dụng cmd.exe , chạy:

pacman -Syu (requires a console restart)
pacman -S git patch unzip
pacman -S git patch unzip rsync

Cài đặt Công cụ xây dựng Visual C++ 2022

Cài đặt công cụ xây dựng Visual C++ 2022 . Điều này đi kèm với Visual Studio Community 2022 nhưng có thể được cài đặt riêng:

  1. Đi tới phần tải xuống Visual Studio ,
  2. Chọn Tools for Visual Studio hoặc Other Tools, Framework và Redistributables ,
  3. Tải xuống và cài đặt:
    • Xây dựng công cụ cho Visual Studio 2022
    • Bản phân phối lại Microsoft Visual C++ cho Visual Studio 2022

Cài đặt LLVM

  1. Đi tới phần tải xuống LLVM ,
  2. Tải xuống và cài đặt LLVM tương thích với Windows trong C:/Program Files/LLVM, ví dụ: LLVM-17.0.6-win64.exe

Cài đặt hỗ trợ GPU (tùy chọn)

Xem hướng dẫn hỗ trợ GPU của Windows để cài đặt trình điều khiển và phần mềm bổ sung cần thiết để chạy TensorFlow trên GPU.

Tải xuống mã nguồn TensorFlow

Sử dụng Git để sao chép kho lưu trữ TensorFlow ( git được cài đặt với MSYS2):

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

Repo mặc định là nhánh phát triển master . Bạn cũng có thể kiểm tra một nhánh phát hành để xây dựng:

git checkout branch_name  # r1.9, r1.10, etc.

Tùy chọn: Thiết lập biến môi trường

Chạy các lệnh sau trước khi chạy lệnh xây dựng để tránh các vấn đề khi tạo gói: (Nếu các lệnh bên dưới được thiết lập trong khi cài đặt gói, vui lòng bỏ qua chúng). Chạy set để kiểm tra xem tất cả các đường dẫn đã được đặt chính xác chưa, chạy echo %Environmental Variable% ví dụ: echo %BAZEL_VC% để kiểm tra đường dẫn được thiết lập cho một Biến môi trường cụ thể

Đường dẫn Python thiết lập vấn đề tensorflow:issue#59943 , tensorflow:issue#9436 , tensorflow:issue#60083

set PATH=path/to/python;%PATH% # [e.g. (C:/Python311)]
set PATH=path/to/python/Scripts;%PATH% # [e.g. (C:/Python311/Scripts)] 
set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe 
set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages 
set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts 

Đường dẫn Bazel/MSVC/CLANG thiết lập vấn đề tensorflow:issue#54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files/Microsoft Visual Studio/2022/BuildTools 
set BAZEL_VC=C:/Program Files/Microsoft Visual Studio/2022/BuildTools/VC 
set Bazel_LLVM=C:/Program Files/LLVM (explicitly tell Bazel where LLVM is installed by BAZEL_LLVM, needed while using CLANG)
set PATH=C:/Program Files/LLVM/bin;%PATH% (Optional, needed while using CLANG as Compiler)

Tùy chọn: Định cấu hình bản dựng

Các bản dựng TensorFlow được cấu hình bởi tệp .bazelrc trong thư mục gốc của kho lưu trữ. Các tập lệnh ./configure hoặc ./configure.py có thể được sử dụng để điều chỉnh các cài đặt chung.

Nếu bạn cần thay đổi cấu hình, hãy chạy tập lệnh ./configure từ thư mục gốc của kho lưu trữ.

python ./configure.py

Tập lệnh này sẽ nhắc bạn về vị trí của các phần phụ thuộc TensorFlow và yêu cầu các tùy chọn cấu hình bản dựng bổ sung (ví dụ: cờ trình biên dịch). Phần sau đây hiển thị mẫu chạy python ./configure.py (phiên của bạn có thể khác):

Xây dựng và cài đặt gói pip

Gói pip được xây dựng theo hai bước. Lệnh bazel build sẽ tạo chương trình "trình tạo gói". Sau đó, bạn chạy trình xây dựng gói để tạo gói.

Xây dựng trình xây dựng gói

tensorflow:master repo đã được cập nhật lên build 2.x theo mặc định. Cài đặt Bazel và sử dụng bazel build để tạo trình tạo gói TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

chỉ dành cho CPU

Sử dụng bazel để tạo trình tạo gói TensorFlow chỉ hỗ trợ CPU:

Xây dựng với MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
Xây dựng với CLANG

Sử dụng --config= win_clang để xây dựng TenorFlow bằng Trình biên dịch CLANG:

bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

hỗ trợ GPU

Để tạo trình tạo gói TensorFlow có hỗ trợ GPU:

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Các lệnh xóa bộ đệm bazel để giải quyết lỗi do dữ liệu được lưu trong bộ nhớ đệm không hợp lệ hoặc lỗi thời, làm sạch bazel bằng cờ --expunge sẽ xóa tệp vĩnh viễn

bazel clean 
bazel clean --expunge  

Tùy chọn xây dựng Bazel

Sử dụng tùy chọn này khi xây dựng để tránh các sự cố khi tạo gói: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Xem tham chiếu dòng lệnh Bazel để biết các tùy chọn xây dựng .

Xây dựng TensorFlow từ nguồn có thể sử dụng nhiều RAM. Nếu hệ thống của bạn bị hạn chế về bộ nhớ, hãy giới hạn mức sử dụng RAM của Bazel bằng: --local_ram_resources=2048 .

Nếu xây dựng có hỗ trợ GPU, hãy thêm --copt=-nvcc_options=disable-warnings để chặn các thông báo cảnh báo nvcc.

Xây dựng gói

Để xây dựng gói pip, bạn cần chỉ định cờ --repo_env=WHEEL_NAME. Tùy thuộc vào tên được cung cấp, gói sẽ được tạo. Ví dụ:

Để xây dựng gói CPU tensorflow:

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu

Để xây dựng gói hàng đêm, hãy đặt tf_nightly thay vì tensorflow , ví dụ: để xây dựng gói CPU hàng đêm:

bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu

Kết quả là, bánh xe được tạo ra sẽ được đặt ở

bazel-bin/tensorflow/tools/pip_package/wheel_house/

Cài đặt gói

Tên tệp của tệp .whl được tạo tùy thuộc vào phiên bản TensorFlow và nền tảng của bạn. Sử dụng pip install để cài đặt gói, ví dụ:

pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl

Xây dựng bằng cách sử dụng trình bao MSYS

TensorFlow cũng có thể được xây dựng bằng shell MSYS. Thực hiện các thay đổi được liệt kê bên dưới, sau đó làm theo các hướng dẫn trước đó cho dòng lệnh gốc của Windows ( cmd.exe ).

Tắt chuyển đổi đường dẫn MSYS

MSYS tự động chuyển đổi các đối số trông giống như đường dẫn Unix sang đường dẫn Windows và điều này không hoạt động với bazel . (Nhãn //path/to:bin được coi là đường dẫn tuyệt đối của Unix vì nó bắt đầu bằng dấu gạch chéo.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Đặt ĐƯỜNG của bạn

Thêm thư mục cài đặt Bazel và Python vào biến môi trường $PATH của bạn. Nếu Bazel được cài đặt vào C:\tools\bazel.exe và Python thành C:\Python\python.exe , hãy đặt PATH của bạn bằng:

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"

Để được hỗ trợ GPU, hãy thêm thư mục bin CUDA và cuDNN vào $PATH :

export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"

Cấu hình bản dựng đã được thử nghiệm

CPU

Phiên bản Phiên bản Python Trình biên dịch Xây dựng công cụ
tenorflow-2.17.0 3,9-3,12 LÊN 17.0.6 Bazel 6.5.0
tenorflow-2.16.1 3,9-3,12 LÊN 17.0.6 Bazel 6.5.0
tenorflow-2.15.0 3,9-3,11 MSVC 2019 Bazel 6.1.0
tenorflow-2.14.0 3,9-3,11 MSVC 2019 Bazel 6.1.0
tenorflow-2.12.0 3,8-3,11 MSVC 2019 Bazel 5.3.0
tenorflow-2.11.0 3,7-3,10 MSVC 2019 Bazel 5.3.0
tenorflow-2.10.0 3,7-3,10 MSVC 2019 Bazel 5.1.1
tenorflow-2.9.0 3,7-3,10 MSVC 2019 Bazel 5.0.0
tenorflow-2.8.0 3,7-3,10 MSVC 2019 Bazel 4.2.1
tenorflow-2.7.0 3,7-3,9 MSVC 2019 Bazel 3.7.2
tenorflow-2.6.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tenorflow-2.5.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tenorflow-2.4.0 3,6-3,8 MSVC 2019 Bazel 3.1.0
tenorflow-2.3.0 3,5-3,8 MSVC 2019 Bazel 3.1.0
tenorflow-2.2.0 3,5-3,8 MSVC 2019 Bazel 2.0.0
tenorflow-2.1.0 3,5-3,7 MSVC 2019 Bazel 0,27,1-0,29,1
tenorflow-2.0.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tenorflow-1.15.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tenorflow-1.14.0 3,5-3,7 MSVC 2017 Bazel 0,24,1-0,25,2
tenorflow-1.13.0 3,5-3,7 Cập nhật MSVC 2015 3 Bazel 0,19,0-0,21,0
tenorflow-1.12.0 3,5-3,6 Cập nhật MSVC 2015 3 Bazel 0.15.0
tenorflow-1.11.0 3,5-3,6 Cập nhật MSVC 2015 3 Bazel 0.15.0
tenorflow-1.10.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.9.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.8.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.7.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.6.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.5.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.4.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.3.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.2.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.1.0 3,5 Cập nhật MSVC 2015 3 Cmake v3.6.3
tenorflow-1.0.0 3,5 Cập nhật MSVC 2015 3 Cmake v3.6.3

GPU

Phiên bản Phiên bản Python Trình biên dịch Xây dựng công cụ cuDNN CUDA
tenorflow_gpu-2.10.0 3,7-3,10 MSVC 2019 Bazel 5.1.1 8.1 11.2
tenorflow_gpu-2.9.0 3,7-3,10 MSVC 2019 Bazel 5.0.0 8.1 11.2
tenorflow_gpu-2.8.0 3,7-3,10 MSVC 2019 Bazel 4.2.1 8.1 11.2
tenorflow_gpu-2.7.0 3,7-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tenorflow_gpu-2.6.0 3,6-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tenorflow_gpu-2.5.0 3,6-3,9 MSVC 2019 Bazel 3.7.2 8.1 11.2
tenorflow_gpu-2.4.0 3,6-3,8 MSVC 2019 Bazel 3.1.0 8,0 11.0
tenorflow_gpu-2.3.0 3,5-3,8 MSVC 2019 Bazel 3.1.0 7,6 10.1
tenorflow_gpu-2.2.0 3,5-3,8 MSVC 2019 Bazel 2.0.0 7,6 10.1
tenorflow_gpu-2.1.0 3,5-3,7 MSVC 2019 Bazel 0,27,1-0,29,1 7,6 10.1
tenorflow_gpu-2.0.0 3,5-3,7 MSVC 2017 Bazel 0.26.1 7.4 10
tenorflow_gpu-1.15.0 3,5-3,7 MSVC 2017 Bazel 0.26.1 7.4 10
tenorflow_gpu-1.14.0 3,5-3,7 MSVC 2017 Bazel 0,24,1-0,25,2 7.4 10
tenorflow_gpu-1.13.0 3,5-3,7 Cập nhật MSVC 2015 3 Bazel 0,19,0-0,21,0 7.4 10
tenorflow_gpu-1.12.0 3,5-3,6 Cập nhật MSVC 2015 3 Bazel 0.15.0 7.2 9,0
tenorflow_gpu-1.11.0 3,5-3,6 Cập nhật MSVC 2015 3 Bazel 0.15.0 7 9
tenorflow_gpu-1.10.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.9.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.8.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.7.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.6.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.5.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tenorflow_gpu-1.4.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 6 8
tenorflow_gpu-1.3.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 6 8
tenorflow_gpu-1.2.0 3,5-3,6 Cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8
tenorflow_gpu-1.1.0 3,5 Cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8
tenorflow_gpu-1.0.0 3,5 Cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8