สร้างจากซอร์สบน Windows, สร้างจากซอร์สบน Windows

สร้างแพ็คเกจ TensorFlow pip จากแหล่งที่มาและติดตั้งบน 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

ติดตั้ง 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++ Build Tools 2022

ติดตั้ง เครื่องมือสร้าง Visual C++ 2022 ซึ่งมาพร้อมกับ Visual Studio Community 2022 แต่สามารถติดตั้งแยกต่างหากได้:

  1. ไปที่ การดาวน์โหลด Visual Studio
  2. เลือก เครื่องมือสำหรับ Visual Studio หรือเครื่องมืออื่นๆ กรอบงานและสิ่งที่แจกจ่ายต่อได้
  3. ดาวน์โหลดและติดตั้ง:
    • เครื่องมือสร้างสำหรับ Visual Studio 2022
    • Microsoft Visual C++ Redistributables สำหรับ Visual Studio 2022

ติดตั้ง LLVM

  1. ไปที่ การดาวน์โหลด LLVM
  2. ดาวน์โหลดและติดตั้ง LLVM ที่เข้ากันได้กับ Windows ใน C:/Program Files/LLVM เช่น LLVM-17.0.6-win64.exe

ติดตั้งการรองรับ GPU (ทางเลือก)

ดูคำแนะนำ การสนับสนุน GPU ของ Windows เพื่อติดตั้งไดรเวอร์และซอฟต์แวร์เพิ่มเติมที่จำเป็นสำหรับการรัน TensorFlow บน GPU

ดาวน์โหลดซอร์สโค้ด TensorFlow

ใช้ Git เพื่อโคลน ที่เก็บ TensorFlow ( git ได้รับการติดตั้งด้วย MSYS2):

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

รีโพจะตั้งค่าเริ่มต้นเป็นสาขาการพัฒนา 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 หรือ ./configure.py สามารถใช้เพื่อปรับการตั้งค่าทั่วไปได้

หากคุณจำเป็นต้องเปลี่ยนการกำหนดค่า ให้เรียกใช้สคริปต์ ./configure จากไดเร็กทอรีรูทของที่เก็บข้อมูล

python ./configure.py

สคริปต์นี้จะแจ้งให้คุณทราบตำแหน่งของการอ้างอิง TensorFlow และขอตัวเลือกการกำหนดค่าการสร้างเพิ่มเติม (เช่น แฟล็กคอมไพเลอร์) ต่อไปนี้จะแสดงตัวอย่างการรัน python ./configure.py (เซสชันของคุณอาจแตกต่างกัน):

สร้างและติดตั้งแพ็กเกจ pip

แพ็กเกจ pip ถูกสร้างขึ้นในสองขั้นตอน คำสั่ง bazel build จะสร้างโปรแกรม "package-builder" จากนั้นคุณรัน 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

รองรับ GPU

ในการสร้างแพ็คเกจสร้าง TensorFlow พร้อมการรองรับ GPU ให้ทำดังนี้:

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

คำสั่งในการล้างแคช bazel เพื่อแก้ไขข้อผิดพลาดอันเนื่องมาจากข้อมูลแคชที่ไม่ถูกต้องหรือล้าสมัย bazel clean พร้อมแฟล็ก --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 separator
export PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"

สำหรับการรองรับ GPU ให้เพิ่มไดเร็กทอรี bin ของ CUDA และ cuDNN ลงใน $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"

ทดสอบการกำหนดค่าการสร้าง

ซีพียู

เวอร์ชัน เวอร์ชัน Python คอมไพเลอร์ สร้างเครื่องมือ
เทนเซอร์โฟลว์-2.20.0 3.9-3.13 แคลง 18.1.4 บาเซล 7.4.1
เทนเซอร์โฟลว์-2.19.0 3.9-3.12 แคลง 18.1.4 บาเซล 6.5.0
เทนเซอร์โฟลว์-2.18.0 3.9-3.12 แคลง 17.0.6 บาเซล 6.5.0
เทนเซอร์โฟลว์-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 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.9.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.8.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.7.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.6.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.5.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.4.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.3.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.2.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.1.0 3.5 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3
เทนเซอร์โฟลว์-1.0.0 3.5 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3

จีพียู

เวอร์ชัน เวอร์ชัน Python คอมไพเลอร์ สร้างเครื่องมือ cuDNN คูด้า
เทนเซอร์โฟลว์_จีพียู-2.10.0 3.7-3.10 เอ็มเอสวีซี 2019 บาเซล 5.1.1 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.9.0 3.7-3.10 เอ็มเอสวีซี 2019 บาเซล 5.0.0 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.8.0 3.7-3.10 เอ็มเอสวีซี 2019 บาเซล 4.2.1 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.7.0 3.7-3.9 เอ็มเอสวีซี 2019 บาเซล 3.7.2 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.6.0 3.6-3.9 เอ็มเอสวีซี 2019 บาเซล 3.7.2 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.5.0 3.6-3.9 เอ็มเอสวีซี 2019 บาเซล 3.7.2 8.1 11.2
เทนเซอร์โฟลว์_จีพียู-2.4.0 3.6-3.8 เอ็มเอสวีซี 2019 บาเซล 3.1.0 8.0 11.0
เทนเซอร์โฟลว์_จีพียู-2.3.0 3.5-3.8 เอ็มเอสวีซี 2019 บาเซล 3.1.0 7.6 10.1
เทนเซอร์โฟลว์_จีพียู-2.2.0 3.5-3.8 เอ็มเอสวีซี 2019 บาเซล 2.0.0 7.6 10.1
เทนเซอร์โฟลว์_จีพียู-2.1.0 3.5-3.7 เอ็มเอสวีซี 2019 บาเซล 0.27.1-0.29.1 7.6 10.1
เทนเซอร์โฟลว์_จีพียู-2.0.0 3.5-3.7 เอ็มเอสวีซี 2017 บาเซล 0.26.1 7.4 10
เทนเซอร์โฟลว์_จีพียู-1.15.0 3.5-3.7 เอ็มเอสวีซี 2017 บาเซล 0.26.1 7.4 10
เทนเซอร์โฟลว์_จีพียู-1.14.0 3.5-3.7 เอ็มเอสวีซี 2017 บาเซล 0.24.1-0.25.2 7.4 10
เทนเซอร์โฟลว์_จีพียู-1.13.0 3.5-3.7 MSVC 2015 อัปเดต 3 บาเซล 0.19.0-0.21.0 7.4 10
เทนเซอร์โฟลว์_จีพียู-1.12.0 3.5-3.6 MSVC 2015 อัปเดต 3 บาเซล 0.15.0 7.2 9.0
เทนเซอร์โฟลว์_จีพียู-1.11.0 3.5-3.6 MSVC 2015 อัปเดต 3 บาเซล 0.15.0 7 9
เทนเซอร์โฟลว์_จีพียู-1.10.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.9.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.8.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.7.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.6.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.5.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 7 9
เทนเซอร์โฟลว์_จีพียู-1.4.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 6 8
เทนเซอร์โฟลว์_จีพียู-1.3.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 6 8
เทนเซอร์โฟลว์_จีพียู-1.2.0 3.5-3.6 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 5.1 8
เทนเซอร์โฟลว์_จีพียู-1.1.0 3.5 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 5.1 8
เทนเซอร์โฟลว์_จีพียู-1.0.0 3.5 MSVC 2015 อัปเดต 3 Cmake เวอร์ชัน 3.6.3 5.1 8