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 trên Windows.

Thiết lập cho Windows

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

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

Cài đặt phiên bản 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à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ụ thuộc được liệt kê trong tệp setup.py tạ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 xây dựng đã được thử nghiệm cho Windows. Cấu hình Bazel để xây dựng C++ .

Thêm vị trí 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 để có 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% . Sau đó, 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 Visual C++ Build Tools 2022

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

  1. Đi đến phần tải xuống của Visual Studio ,
  2. Chọn Công cụ cho Visual Studio hoặc các Công cụ, Khung và Redistributables khác ,
  3. Tải xuống và cài đặt:
    • Công cụ xây dựng cho Visual Studio 2022
    • Microsoft Visual C++ Redistributables cho Visual Studio 2022

Cài đặt LLVM

  1. Đi đến 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 cùng với MSYS2):

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

Kho lưu trữ mặc định là nhánh phát triển master . Bạn cũng có thể kiểm tra 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 build để tránh sự cố khi tạo gói: (Nếu các lệnh dưới đây được thiết lập 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 thiết lập chính xác chưa, chạy lệnh 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ể.

Vấn đề thiết lập đường dẫn Python 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 

Sự cố thiết lập đường dẫn Bazel/MSVC/CLANG 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: Cấu hình bản dựng

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ó thể sử dụng tập lệnh ./configure hoặc ./configure.py để đ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 nhập vị trí các phụ thuộc của 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ờ biên dịch). Sau đây là ví dụ chạy python ./configure.py (phiên làm việc 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 tạo ra một chương trình "package-builder". Sau đó, bạn chạy package-builder để 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 bản dựng 2.x theo mặc định. Cài đặt Bazel và sử dụng bazel build để tạo trình xây dựng gói TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

Chỉ CPU

Sử dụng bazel để tạo trình xây dựng 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 xây dựng 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

Lệnh xóa bộ nhớ đệ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, bazel clean với cờ --expunge sẽ xóa vĩnh viễn các tệp

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 vấn đề khi tạo gói: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

Xem tài liệu tham khảo dòng lệnh Bazel để biết các tùy chọn xây dựng .

Việc xây dựng TensorFlow từ mã nguồn có thể tiêu tốn rất 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 với sự hỗ trợ của GPU, hãy thêm --copt=-nvcc_options=disable-warnings để ẩn thông báo cảnh báo nvcc.

Xây dựng gói

Để xây dựng một 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 nightly, hãy đặt tf_nightly thay vì tensorflow , ví dụ để xây dựng gói nightly CPU:

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 .whl được tạo ra phụ 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 shell 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 hướng dẫn trước đó cho dòng lệnh gốc của Windows ( cmd.exe ).

Vô hiệu hóa chuyển đổi đường dẫn MSYS

MSYS tự động chuyển đổi các đối số trông giống đườ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 PATH 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 vào C:\Python\python.exe , hãy thiết lập 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"

Để hỗ trợ GPU, hãy thêm các thư mục bin CUDA và cuDNN vào $PATH của bạn:

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 xây dựng đã được thử nghiệm

Bộ xử lý

Phiên bản Phiên bản Python Trình biên dịch Xây dựng công cụ
tensorflow-2.20.0 3.9-3.13 CLANG 18.1.4 Bazel 7.4.1
tensorflow-2.19.0 3.9-3.12 CLANG 18.1.4 Bazel 6.5.0
tensorflow-2.18.0 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.17.0 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.16.1 3.9-3.12 CLANG 17.0.6 Bazel 6.5.0
tensorflow-2.15.0 3.9-3.11 MSVC 2019 Bazel 6.1.0
tensorflow-2.14.0 3.9-3.11 MSVC 2019 Bazel 6.1.0
tensorflow-2.12.0 3.8-3.11 MSVC 2019 Bazel 5.3.0
tensorflow-2.11.0 3.7-3.10 MSVC 2019 Bazel 5.3.0
tensorflow-2.10.0 3.7-3.10 MSVC 2019 Bazel 5.1.1
tensorflow-2.9.0 3.7-3.10 MSVC 2019 Bazel 5.0.0
tensorflow-2.8.0 3.7-3.10 MSVC 2019 Bazel 4.2.1
tensorflow-2.7.0 3,7-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.6.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.5.0 3,6-3,9 MSVC 2019 Bazel 3.7.2
tensorflow-2.4.0 3,6-3,8 MSVC 2019 Bazel 3.1.0
tensorflow-2.3.0 3,5-3,8 MSVC 2019 Bazel 3.1.0
tensorflow-2.2.0 3,5-3,8 MSVC 2019 Bazel 2.0.0
tensorflow-2.1.0 3,5-3,7 MSVC 2019 Bazel 0,27,1-0,29,1
tensorflow-2.0.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tensorflow-1.15.0 3,5-3,7 MSVC 2017 Bazel 0.26.1
tensorflow-1.14.0 3,5-3,7 MSVC 2017 Bazel 0.24.1-0.25.2
tensorflow-1.13.0 3,5-3,7 Bản cập nhật MSVC 2015 số 3 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Bazel 0.15.0
tensorflow-1.11.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Bazel 0.15.0
tensorflow-1.10.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.9.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.8.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.7.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.6.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.5.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.4.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.3.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.2.0 3,5-3,6 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.1.0 3,5 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3
tensorflow-1.0.0 3,5 Bản cập nhật MSVC 2015 số 3 Cmake v3.6.3

Bộ xử lý đồ họa

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