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

Tạo gói TensorFlow bằng pip từ mã nguồn và cài đặt nó trên Windows.

Cài đặt 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 trở lên 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 gói phụ thuộc của TensorFlow bằng pip :

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

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

Cài đặt Bazel

Cài đặt Bazel , công cụ biên dịch được sử dụng để biên dịch TensorFlow. Để biết phiên bản Bazel, hãy xem các cấu hình biên dịch đã được kiểm thử cho Windows. Cấu hình Bazel để biên dịch 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 để có các công cụ nhị phân cần thiết để xây dựng TensorFlow. Nếu MSYS2 được cài đặt tại 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 lệnh sau:

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 bộ công cụ biên dịch Visual C++ 2022. Bộ công cụ này có sẵn trong Visual Studio Community 2022 nhưng cũng có thể được cài đặt riêng:

  1. Hãy truy cập vào trang tải xuống Visual Studio .
  2. Chọn Công cụ cho Visual Studio hoặc các Công cụ khác, Khung và Gói phân phối lại .
  3. Tải xuống và cài đặt:
    • Công cụ xây dựng cho Visual Studio 2022
    • Microsoft Visual C++ Redistributables for Visual Studio 2022

Cài đặt LLVM

  1. Hãy truy cập trang tải xuống LLVM .
  2. Tải xuống và cài đặt LLVM tương thích với Windows vào thư mục 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 sử dụng nhánh phát triển master . Bạn cũng có thể chọn nhánh phát hành (release branch) để biên dịch:

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

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

Chạy các lệnh sau trước khi chạy lệnh build để tránh các sự cố khi tạo gói: (Nếu các lệnh bên dưới đã được thiết lập trong quá trình 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ể.

Lỗi 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 

Lỗi 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

Việc cấu hình các bản dựng TensorFlow được thực hiện thông qua 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 thông thường.

Nếu 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ẽ yêu cầu bạn chỉ định vị trí của các thư viện phụ thuộc của TensorFlow và hỏi về các tùy chọn cấu hình biên dịch bổ sung (ví dụ: cờ trình biên dịch). Sau đây là một ví dụ về cách chạy python ./configure.py (phiên làm việc của bạn có thể khác):

Biên dịch và cài đặt gói pip

Quá trình tạo gói pip diễn ra qua hai bước. Lệnh bazel build tạo ra chương trình "package-builder". Sau đó, bạn chạy chương trình package-builder để tạo gói.

Xây dựng trình tạo gói

Kho lưu trữ tensorflow:master đã được cập nhật để mặc định xây dựng phiên bản 2.x. Hãy 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 biên dịch gói TensorFlow với hỗ trợ chỉ dành cho CPU:

Biên dịch bằng 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 bằng CLANG

Sử dụng --config= win_clang để biên dịch TenorFlow với 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 biên dịch 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 để dọn dẹp bộ nhớ cache của Bazel nhằm khắc phục lỗi do dữ liệu được lưu trong bộ nhớ cache không hợp lệ hoặc lỗi thời, lệnh `bazel clean` với cờ `--expunge` sẽ xóa vĩnh viễn các tệp.

bazel clean 
bazel clean --expunge  

Các tùy chọn xây dựng Bazel

Hãy 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 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 biên dịch 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 lệnh: --local_ram_resources=2048 .

Nếu biên dịch với hỗ trợ GPU, hãy thêm --copt=-nvcc_options=disable-warnings để tắt các thông báo cảnh báo của nvcc.

Xây dựng gói

Để tạo 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 TensorFlow cho CPU:

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 cho CPU:

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

Do đó, bánh xe được tạo ra sẽ nằm ở vị trí

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

Cài đặt gói phần mềm

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

Biên dịch bằng trình shell MSYS

Bạn cũng có thể biên dịch TensorFlow bằng cách sử dụ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 đó dành 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 như đường dẫn Unix thành đườ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 Unix vì nó bắt đầu bằng dấu gạch chéo.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

Hãy thiết lập CON ĐƯỜ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 tại C:\tools\bazel.exe và Python tại C:\Python\python.exe , hãy thiết lập PATH bằng lệnh sau:

# 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 của 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"

Đã kiểm thử các cấu hình bản dựng

CPU

Phiên bản Phiên bản Python Trình biên dịch Xây dựng công cụ
tensorflow-2.21.0 3.10-3.13 CLANG 18.1.4 Bazel 7.4.1
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 3 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Bazel 0.15.0
tensorflow-1.11.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Bazel 0.15.0
tensorflow-1.10.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.9.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.8.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.7.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.6.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.5.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.4.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.3.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.2.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.1.0 3.5 Bản cập nhật MSVC 2015 3 Cmake v3.6.3
tensorflow-1.0.0 3.5 Bản 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
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 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 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 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3,5-3,6 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 Bản cập nhật MSVC 2015 3 Cmake v3.6.3 5.1 8