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 pippip3 install -U six numpy wheel packagingpip3 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:
- Hãy truy cập vào trang tải xuống Visual Studio .
- 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 .
- 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
- Hãy truy cập trang tải xuống LLVM .
- 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.gitcd 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=1export 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 separatorexport 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 |