ساخت از منبع در ویندوز، ساخت از منبع در ویندوز

یک بسته Pip TensorFlow از منبع بسازید و آن را روی ویندوز نصب کنید.

راه اندازی برای ویندوز

ابزارهای ساخت زیر را برای پیکربندی محیط توسعه ویندوز خود نصب کنید.

وابستگی های بسته Python و TensorFlow را نصب کنید

یک نسخه Python 3.9+ 64 بیتی را برای ویندوز نصب کنید. 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، تنظیمات ساخت تست شده برای ویندوز را ببینید. 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. به دانلودهای ویژوال استودیو بروید،
  2. ابزارهای ویژوال استودیو یا ابزارهای دیگر، چارچوب و قابل توزیع مجدد را انتخاب کنید،
  3. دانلود و نصب کنید:
    • ابزارهای ساخت ویژوال استودیو 2022
    • Microsoft Visual C++ Redistributables برای Visual Studio 2022

LLVM را نصب کنید

  1. به دانلودهای LLVM بروید،
  2. دانلود و نصب LLVM سازگار با ویندوز در C:/Program Files/LLVM به عنوان مثال، LLVM-17.0.6-win64.exe

نصب پشتیبانی از GPU (اختیاری)

برای نصب درایورها و نرم افزارهای اضافی مورد نیاز برای اجرای TensorFlow بر روی یک GPU، به راهنمای پشتیبانی از 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% برای بررسی مسیر تنظیم شده برای یک متغیر محیطی خاص اجرا کنید.

راه‌اندازی مسیر پایتون مسئله 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 نشان داده شده است (ممکن است جلسه شما متفاوت باشد):

پکیج پیپ را بسازید و نصب کنید

پکیج پیپ در دو مرحله ساخته شده است. یک دستور bazel build یک برنامه "package-builder" ایجاد می کند. سپس Package-builder را برای ایجاد بسته اجرا می کنید.

پکیج ساز را بسازید

tensorflow:master repo به‌طور پیش‌فرض برای ساخت 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 استفاده کنید:

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 استفاده کند. اگر سیستم شما دارای محدودیت حافظه است، استفاده از رم Bazel را با استفاده از: --local_ram_resources=2048 محدود کنید.

در صورت ساخت با پشتیبانی از GPU، --copt=-nvcc_options=disable-warnings برای سرکوب پیام های هشدار nvcc اضافه کنید.

بسته را بسازید

برای ساخت یک بسته پیپ، باید پرچم --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 ساخته شود. تغییرات فهرست شده در زیر را انجام دهید، سپس دستورالعمل های قبلی را برای خط فرمان بومی ویندوز ( cmd.exe ) دنبال کنید.

تبدیل مسیر MSYS را غیرفعال کنید

MSYS به طور خودکار آرگومان هایی را که شبیه مسیرهای یونیکس هستند به مسیرهای ویندوز تبدیل می کند، و این با bazel کار نمی کند. (برچسب //path/to:bin یک مسیر مطلق یونیکس در نظر گرفته می شود زیرا با یک اسلش شروع می شود.)

export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"

PATH خود را تنظیم کنید

دایرکتوری های نصب 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، دایرکتوری های 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"

تنظیمات ساخت تست شده

CPU

نسخه نسخه پایتون کامپایلر ابزار بسازید
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 بازل 4.2.1
tensorflow-2.7.0 3.7-3.9 MSVC 2019 بازل 3.7.2
tensorflow-2.6.0 3.6-3.9 MSVC 2019 بازل 3.7.2
tensorflow-2.5.0 3.6-3.9 MSVC 2019 بازل 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 بازل 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 بازل 0.24.1-0.25.2
tensorflow-1.13.0 3.5-3.7 به روز رسانی MSVC 2015 3 Bazel 0.19.0-0.21.0
tensorflow-1.12.0 3.5-3.6 به روز رسانی MSVC 2015 3 Bazel 0.15.0
tensorflow-1.11.0 3.5-3.6 به روز رسانی MSVC 2015 3 Bazel 0.15.0
tensorflow-1.10.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.9.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.8.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.7.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.6.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.5.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.4.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.3.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.2.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.1.0 3.5 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3
tensorflow-1.0.0 3.5 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3

پردازنده گرافیکی

نسخه نسخه پایتون کامپایلر ابزار بسازید 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 بازل 4.2.1 8.1 11.2
tensorflow_gpu-2.7.0 3.7-3.9 MSVC 2019 بازل 3.7.2 8.1 11.2
tensorflow_gpu-2.6.0 3.6-3.9 MSVC 2019 بازل 3.7.2 8.1 11.2
tensorflow_gpu-2.5.0 3.6-3.9 MSVC 2019 بازل 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 بازل 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 بازل 0.24.1-0.25.2 7.4 10
tensorflow_gpu-1.13.0 3.5-3.7 به روز رسانی MSVC 2015 3 بازل 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 به روز رسانی MSVC 2015 3 Bazel 0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3.5-3.6 به روز رسانی MSVC 2015 3 Bazel 0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 به روز رسانی MSVC 2015 3 Cmake نسخه 3.6.3 5.1 8