สร้างแพ็คเกจ pip ของ TensorFlow จากแหล่งที่มาและติดตั้งบน Windows
การตั้งค่าสำหรับ Windows
ติดตั้งเครื่องมือสร้างต่อไปนี้เพื่อกำหนดค่าสภาพแวดล้อมการพัฒนา Windows ของคุณ
ติดตั้งการขึ้นต่อกันของแพ็คเกจ Python และ TensorFlow
ติดตั้ง Python 3.9+ 64-บิตสำหรับ Windows เลือก pip เป็นคุณสมบัติเสริม และเพิ่มลงในตัวแปรสภาพแวดล้อม %PATH%
ของคุณ
ติดตั้งการพึ่งพาแพ็คเกจ pip ของ TensorFlow:
pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps
การขึ้นต่อกันแสดงอยู่ในไฟล์ setup.py
ใต้ REQUIRED_PACKAGES
ติดตั้งบาเซล
ติดตั้ง Bazel ซึ่งเป็นเครื่องมือสร้างที่ใช้ในการคอมไพล์ TensorFlow สำหรับเวอร์ชัน Bazel โปรดดู การกำหนดค่าบิลด์ที่ทดสอบแล้ว สำหรับ Windows กำหนดค่า Bazel เพื่อ สร้าง C++
เพิ่มตำแหน่งของไฟล์ปฏิบัติการ Bazel ให้กับตัวแปรสภาพแวดล้อม %PATH%
ของคุณ
ติดตั้ง MSYS2
ติดตั้ง MSYS2 สำหรับเครื่องมือ bin ที่จำเป็นในการสร้าง TensorFlow หากติดตั้ง MSYS2 ไว้ที่ C:\msys64
ให้เพิ่ม C:\msys64\usr\bin
ให้กับตัวแปรสภาพแวดล้อม %PATH%
ของคุณ จากนั้นใช้ cmd.exe
รัน:
pacman -Syu (requires a console restart) pacman -S git patch unzip pacman -S git patch unzip rsync
ติดตั้งเครื่องมือสร้าง Visual C++ 2022
ติดตั้ง เครื่องมือสร้าง Visual C++ 2022 สิ่งนี้มาพร้อมกับ Visual Studio Community 2022 แต่สามารถติดตั้งแยกกันได้:
- ไปที่ การดาวน์โหลด Visual Studio
- เลือก เครื่องมือสำหรับ Visual Studio หรือเครื่องมืออื่นๆ Framework และ Redistributables
- ดาวน์โหลดและติดตั้ง:
- สร้างเครื่องมือสำหรับ Visual Studio 2022
- Microsoft Visual C++ สามารถแจกจ่ายต่อได้สำหรับ Visual Studio 2022
ติดตั้ง LLVM
- ไปที่ การดาวน์โหลด LLVM
- ดาวน์โหลดและติดตั้ง LLVM ที่เข้ากันได้กับ Windows ใน C:/Program Files/LLVM เช่น LLVM-17.0.6-win64.exe
ติดตั้งการรองรับ GPU (ไม่จำเป็น)
ดูคู่มือ สนับสนุน Windows GPU เพื่อติดตั้งไดรเวอร์และซอฟต์แวร์เพิ่มเติมที่จำเป็นสำหรับการเรียกใช้ TensorFlow บน GPU
ดาวน์โหลดซอร์สโค้ด TensorFlow
ใช้ Git เพื่อโคลน พื้นที่เก็บข้อมูล TensorFlow ( git
ได้รับการติดตั้งด้วย MSYS2):
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
repo มีค่าเริ่มต้นเป็นสาขาการพัฒนา master
คุณยังสามารถตรวจสอบ สาขาการเผยแพร่ เพื่อสร้าง:
git checkout branch_name # r1.9, r1.10, etc.
ทางเลือก: การตั้งค่าตัวแปรสภาพแวดล้อม
รันคำสั่งต่อไปนี้ก่อนที่จะรันคำสั่ง build เพื่อหลีกเลี่ยงปัญหาในการสร้างแพ็คเกจ: (หากคำสั่งด้านล่างได้รับการตั้งค่าขณะติดตั้งแพ็คเกจ โปรดละเว้นคำสั่งเหล่านั้น) รัน set
เพื่อตรวจสอบว่าพาธทั้งหมดได้รับการตั้งค่าอย่างถูกต้องหรือไม่ ให้รัน echo %Environmental Variable%
เช่น echo %BAZEL_VC%
เพื่อตรวจสอบพาธที่ตั้งค่าไว้สำหรับตัวแปรสภาพแวดล้อมเฉพาะ
เส้นทาง 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
เส้นทาง 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)
ทางเลือก: กำหนดคอนฟิกบิลด์
บิวด์ TensorFlow ได้รับการกำหนดค่าโดยไฟล์ .bazelrc
ในไดเร็กทอรีรากของที่เก็บ คุณสามารถใช้สคริปต์ ./configure
หรือ ./configure.py
เพื่อปรับการตั้งค่าทั่วไปได้
หากคุณต้องการเปลี่ยนการกำหนดค่า ให้รันสคริปต์ ./configure
จากไดเร็กทอรีรากของที่เก็บ
python ./configure.py
สคริปต์นี้จะแจ้งให้คุณทราบตำแหน่งของการขึ้นต่อกันของ TensorFlow และขอตัวเลือกการกำหนดค่าบิวด์เพิ่มเติม (เช่น แฟล็กคอมไพเลอร์) ข้อมูลต่อไปนี้แสดงตัวอย่างการทำงานของ python ./configure.py
(เซสชันของคุณอาจแตกต่างกัน):
สร้างและติดตั้งแพ็คเกจ pip
แพ็คเกจ pip ถูกสร้างขึ้นในสองขั้นตอน คำสั่ง bazel build
จะสร้างโปรแกรม "package-builder" จากนั้นคุณรันตัวสร้างแพ็คเกจเพื่อสร้างแพ็คเกจ
สร้างตัวสร้างแพ็คเกจ
tensorflow:master repo ได้รับการอัพเดตเป็น build 2.x ตามค่าเริ่มต้น ติดตั้ง Bazel และใช้ bazel build
เพื่อสร้างตัวสร้างแพ็คเกจ TensorFlow
bazel build //tensorflow/tools/pip_package:wheel
CPU เท่านั้น
ใช้ bazel
เพื่อสร้างตัวสร้างแพ็คเกจ TensorFlow พร้อมรองรับ CPU เท่านั้น:
สร้างด้วย MSVC
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
สร้างด้วย CLANG
ใช้ --config= win_clang
เพื่อสร้าง TenorFlow ด้วย CLANG Compiler:
bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
รองรับจีพียู
หากต้องการสร้างตัวสร้างแพ็คเกจ TensorFlow พร้อมรองรับ GPU:
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
คำสั่งเพื่อล้างแคช Bazel เพื่อแก้ไขข้อผิดพลาดเนื่องจากข้อมูลแคชที่ไม่ถูกต้องหรือล้าสมัย การล้าง Bazel ด้วยแฟล็ก --expunge จะลบไฟล์อย่างถาวร
bazel clean bazel clean --expunge
ตัวเลือกการสร้าง Bazel
ใช้ตัวเลือกนี้เมื่อสร้างเพื่อหลีกเลี่ยงปัญหาในการสร้างแพ็คเกจ: tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
ดู การอ้างอิงบรรทัดคำสั่ง Bazel สำหรับ ตัวเลือกบิลด์
การสร้าง TensorFlow จากแหล่งที่มาสามารถใช้ RAM ได้จำนวนมาก หากระบบของคุณมีหน่วยความจำจำกัด ให้จำกัดการใช้ RAM ของ Bazel ด้วย: --local_ram_resources=2048
หากสร้างด้วยการรองรับ GPU ให้เพิ่ม --copt=-nvcc_options=disable-warnings
เพื่อระงับข้อความเตือน nvcc
สร้างแพ็คเกจ
ในการสร้างแพ็คเกจ pip คุณต้องระบุแฟล็ก --repo_env=WHEEL_NAME แพ็คเกจจะถูกสร้างขึ้นขึ้นอยู่กับชื่อที่ระบุ ตัวอย่างเช่น:
วิธีสร้างแพ็คเกจ CPU tensorflow:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
หากต้องการสร้างแพ็คเกจกลางคืน ให้ตั้งค่า tf_nightly
แทน tensorflow
เช่น สร้างแพ็คเกจ CPU ทุกคืน:
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
เป็นผลให้วงล้อที่สร้างจะอยู่ในตำแหน่ง
bazel-bin/tensorflow/tools/pip_package/wheel_house/
ติดตั้งแพ็คเกจ
ชื่อไฟล์ของไฟล์ .whl
ที่สร้างขึ้นจะขึ้นอยู่กับเวอร์ชัน TensorFlow และแพลตฟอร์มของคุณ ใช้ pip install
เพื่อติดตั้งแพ็คเกจ ตัวอย่างเช่น:
pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl
สร้างโดยใช้เชลล์ MSYS
TensorFlow สามารถสร้างได้โดยใช้เชลล์ MSYS ทำการเปลี่ยนแปลงตามรายการด้านล่าง จากนั้นทำตามคำแนะนำก่อนหน้าสำหรับบรรทัดคำสั่งเนทิฟของ Windows ( cmd.exe
)
ปิดใช้งานการแปลงเส้นทาง MSYS
MSYS แปลงอาร์กิวเมนต์ที่ดูเหมือนเส้นทาง Unix ไปเป็นเส้นทาง Windows โดยอัตโนมัติ และสิ่งนี้ใช้ไม่ได้กับ bazel
(ป้ายกำกับ //path/to:bin
ถือเป็นเส้นทางสัมบูรณ์ของ Unix เนื่องจากเริ่มต้นด้วยเครื่องหมายทับ)
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
กำหนดเส้นทางของคุณ
เพิ่มไดเร็กทอรีการติดตั้ง Bazel และ Python ให้กับตัวแปรสภาพแวดล้อม $PATH
ของคุณ หากติดตั้ง Bazel เป็น C:\tools\bazel.exe
และ Python เป็น C:\Python\python.exe
ให้ตั้ง PATH
ของคุณด้วย:
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"
สำหรับการรองรับ GPU ให้เพิ่มไดเร็กทอรี CUDA และ cuDNN bin ให้กับ $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"
ทดสอบการกำหนดค่าบิลด์แล้ว
ซีพียู
เวอร์ชัน | เวอร์ชันหลาม | คอมไพเลอร์ | สร้างเครื่องมือ |
---|---|---|---|
เทนเซอร์โฟลว์-2.17.0 | 3.9-3.12 | เสียงดังกราว 17.0.6 | บาเซล 6.5.0 |
เทนเซอร์โฟลว์-2.16.1 | 3.9-3.12 | เสียงดังกราว 17.0.6 | บาเซล 6.5.0 |
เทนเซอร์โฟลว์-2.15.0 | 3.9-3.11 | เอ็มเอสวีซี 2019 | บาเซล 6.1.0 |
เทนเซอร์โฟลว์-2.14.0 | 3.9-3.11 | เอ็มเอสวีซี 2019 | บาเซล 6.1.0 |
เทนเซอร์โฟลว์-2.12.0 | 3.8-3.11 | เอ็มเอสวีซี 2019 | บาเซล 5.3.0 |
เทนเซอร์โฟลว์-2.11.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 5.3.0 |
เทนเซอร์โฟลว์-2.10.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 5.1.1 |
เทนเซอร์โฟลว์-2.9.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 5.0.0 |
เทนเซอร์โฟลว์-2.8.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 4.2.1 |
เทนเซอร์โฟลว์-2.7.0 | 3.7-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 |
เทนเซอร์โฟลว์-2.6.0 | 3.6-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 |
เทนเซอร์โฟลว์-2.5.0 | 3.6-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 |
เทนเซอร์โฟลว์-2.4.0 | 3.6-3.8 | เอ็มเอสวีซี 2019 | บาเซล 3.1.0 |
เทนเซอร์โฟลว์-2.3.0 | 3.5-3.8 | เอ็มเอสวีซี 2019 | บาเซล 3.1.0 |
เทนเซอร์โฟลว์-2.2.0 | 3.5-3.8 | เอ็มเอสวีซี 2019 | บาเซล 2.0.0 |
เทนเซอร์โฟลว์-2.1.0 | 3.5-3.7 | เอ็มเอสวีซี 2019 | บาเซล 0.27.1-0.29.1 |
เทนเซอร์โฟลว์-2.0.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.26.1 |
เทนเซอร์โฟลว์-1.15.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.26.1 |
เทนเซอร์โฟลว์-1.14.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.24.1-0.25.2 |
เทนเซอร์โฟลว์-1.13.0 | 3.5-3.7 | MSVC 2015 อัปเดต 3 | บาเซล 0.19.0-0.21.0 |
เทนเซอร์โฟลว์-1.12.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | บาเซล 0.15.0 |
เทนเซอร์โฟลว์-1.11.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | บาเซล 0.15.0 |
เทนเซอร์โฟลว์-1.10.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.9.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.8.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.7.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.6.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.5.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.4.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.3.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.2.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.1.0 | 3.5 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
เทนเซอร์โฟลว์-1.0.0 | 3.5 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 |
จีพียู
เวอร์ชัน | เวอร์ชันหลาม | คอมไพเลอร์ | สร้างเครื่องมือ | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.10.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 5.1.1 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.9.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 5.0.0 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.8.0 | 3.7-3.10 | เอ็มเอสวีซี 2019 | บาเซล 4.2.1 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.7.0 | 3.7-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.6.0 | 3.6-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.5.0 | 3.6-3.9 | เอ็มเอสวีซี 2019 | บาเซล 3.7.2 | 8.1 | 11.2 |
เทนเซอร์โฟลว์_gpu-2.4.0 | 3.6-3.8 | เอ็มเอสวีซี 2019 | บาเซล 3.1.0 | 8.0 | 11.0 |
เทนเซอร์โฟลว์_gpu-2.3.0 | 3.5-3.8 | เอ็มเอสวีซี 2019 | บาเซล 3.1.0 | 7.6 | 10.1 |
เทนเซอร์โฟลว์_gpu-2.2.0 | 3.5-3.8 | เอ็มเอสวีซี 2019 | บาเซล 2.0.0 | 7.6 | 10.1 |
เทนเซอร์โฟลว์_gpu-2.1.0 | 3.5-3.7 | เอ็มเอสวีซี 2019 | บาเซล 0.27.1-0.29.1 | 7.6 | 10.1 |
เทนเซอร์โฟลว์_gpu-2.0.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.26.1 | 7.4 | 10 |
เทนเซอร์โฟลว์_gpu-1.15.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.26.1 | 7.4 | 10 |
เทนเซอร์โฟลว์_gpu-1.14.0 | 3.5-3.7 | เอ็มเอสวีซี 2017 | บาเซล 0.24.1-0.25.2 | 7.4 | 10 |
เทนเซอร์โฟลว์_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 อัปเดต 3 | บาเซล 0.19.0-0.21.0 | 7.4 | 10 |
เทนเซอร์โฟลว์_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | บาเซล 0.15.0 | 7.2 | 9.0 |
เทนเซอร์โฟลว์_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | บาเซล 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 7 | 9 |
เทนเซอร์โฟลว์_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 6 | 8 |
เทนเซอร์โฟลว์_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 6 | 8 |
เทนเซอร์โฟลว์_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 5.1 | 8 |
เทนเซอร์โฟลว์_gpu-1.1.0 | 3.5 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 5.1 | 8 |
เทนเซอร์โฟลว์_gpu-1.0.0 | 3.5 | MSVC 2015 อัปเดต 3 | ซีเมค v3.6.3 | 5.1 | 8 |