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

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

تنظیمات برای ویندوز

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

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

یک نسخه ۶۴ بیتی پایتون ۳.۹+ برای ویندوز نصب کنید. pip را به عنوان یک ویژگی اختیاری انتخاب کنید و آن را به متغیر محیطی %PATH% خود اضافه کنید.

وابستگی‌های بسته TensorFlow pip را نصب کنید:

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، به تنظیمات ساخت آزمایش شده برای ویندوز مراجعه کنید. Bazel را برای ساخت ++C پیکربندی کنید.

محل فایل اجرایی Bazel را به متغیر محیطی %PATH% خود اضافه کنید.

نصب MSYS2

برای ابزارهای مورد نیاز برای ساخت TensorFlow، MSYS2 را نصب کنید . اگر 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++ نسخه ۲۰۲۲ را نصب کنید. این ابزار همراه با Visual Studio Community 2022 ارائه می‌شود، اما می‌توان آن را جداگانه نیز نصب کرد:

  1. به بخش دانلودهای ویژوال استودیو بروید،
  2. ابزارهایی را برای ویژوال استودیو یا سایر ابزارها، چارچوب و توزیع مجدد انتخاب کنید،
  3. دانلود و نصب:
    • ابزارهای ساخت برای ویژوال استودیو ۲۰۲۲
    • توزیع مجدد مایکروسافت ویژوال سی پلاس پلاس برای ویژوال استودیو ۲۰۲۲

نصب LLVM

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

نصب پشتیبانی از پردازنده گرافیکی (اختیاری)

برای نصب درایورها و نرم‌افزارهای اضافی مورد نیاز برای اجرای TensorFlow روی GPU، به راهنمای پشتیبانی GPU ویندوز مراجعه کنید.

کد منبع TensorFlow را دانلود کنید

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

ساخت و نصب بسته pip

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

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

مخزن tensorflow:master به طور پیش‌فرض برای build 2.x به‌روزرسانی شده است. Bazel را نصب کنید و bazel build برای ایجاد سازنده بسته TensorFlow استفاده کنید.

bazel build //tensorflow/tools/pip_package:wheel

فقط پردازنده

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 بسازید

برای ساخت TenorFlow با کامپایلر CLANG از --config= win_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 clean با پرچم --expunge فایل‌ها را به طور دائم حذف می‌کند.

bazel clean 
bazel clean --expunge  

گزینه‌های ساخت Bazel

برای جلوگیری از بروز مشکلات در ایجاد بسته، هنگام ساخت از این گزینه استفاده کنید: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

برای گزینه‌های ساخت، به مرجع خط فرمان Bazel مراجعه کنید.

ساخت TensorFlow از منبع می‌تواند مقدار زیادی رم مصرف کند. اگر سیستم شما با محدودیت حافظه مواجه است، استفاده از رم Bazel را با استفاده از دستور زیر محدود کنید: --local_ram_resources=2048 .

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

ساخت بسته

برای ساخت یک بسته pip، باید پرچم --repo_env=WHEEL_NAME را مشخص کنید. بسته به نام ارائه شده، بسته ایجاد خواهد شد. به عنوان مثال:

برای ساخت پکیج CPU تنسورفلو:

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

برای ساخت بسته nightly، به جای tensorflow ، tf_nightly را تنظیم کنید، مثلاً برای ساخت بسته nightly 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="*"

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

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

پیکربندی‌های ساخت آزمایش‌شده

پردازنده

نسخه نسخه پایتون کامپایلر ابزارهای ساخت
تنسورفلو-۲.۲۱.۰ ۳.۱۰-۳.۱۳ کلنگ ۱۸.۱.۴ بازل ۷.۴.۱
تنسورفلو-۲.۲۰.۰ ۳.۹-۳.۱۳ کلنگ ۱۸.۱.۴ بازل ۷.۴.۱
تنسورفلو-۲.۱۹.۰ ۳.۹-۳.۱۲ کلنگ ۱۸.۱.۴ بازل ۶.۵.۰
تنسورفلو-۲.۱۸.۰ ۳.۹-۳.۱۲ کلنگ ۱۷.۰.۶ بازل ۶.۵.۰
تنسورفلو-۲.۱۷.۰ ۳.۹-۳.۱۲ کلنگ ۱۷.۰.۶ بازل ۶.۵.۰
تنسورفلو-۲.۱۶.۱ ۳.۹-۳.۱۲ کلنگ ۱۷.۰.۶ بازل ۶.۵.۰
تنسورفلو-۲.۱۵.۰ ۳.۹-۳.۱۱ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۶.۱.۰
تنسورفلو-۲.۱۴.۰ ۳.۹-۳.۱۱ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۶.۱.۰
تنسورفلو-۲.۱۲.۰ ۳.۸-۳.۱۱ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۳.۰
تنسورفلو-۲.۱۱.۰ ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۳.۰
تنسورفلو-۲.۱۰.۰ ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۱.۱
تنسورفلو-۲.۹.۰ ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۰.۰
تنسورفلو-۲.۸.۰ ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۴.۲.۱
تنسورفلو-۲.۷.۰ ۳.۷-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲
تنسورفلو-۲.۶.۰ ۳.۶-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲
تنسورفلو-۲.۵.۰ ۳.۶-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲
تنسورفلو-۲.۴.۰ ۳.۶-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۱.۰
تنسورفلو-۲.۳.۰ ۳.۵-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۱.۰
تنسورفلو-۲.۲.۰ ۳.۵-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۲.۰.۰
تنسورفلو-۲.۱.۰ ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۹ بازل 0.27.1-0.29.1
تنسورفلو-۲.۰.۰ ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل ۰.۲۶.۱
تنسورفلو-۱.۱۵.۰ ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل ۰.۲۶.۱
تنسورفلو-۱.۱۴.۰ ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل 0.24.1-0.25.2
تنسورفلو-۱.۱۳.۰ ۳.۵-۳.۷ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۹.۰-۰.۲۱.۰
تنسورفلو-۱.۱۲.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۵.۰
تنسورفلو-۱.۱۱.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۵.۰
تنسورفلو-۱.۱۰.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۹.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۸.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۷.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۶.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۵.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۴.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۳.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۲.۰ ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۱.۰ ۳.۵ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳
تنسورفلو-۱.۰.۰ ۳.۵ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳

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

نسخه نسخه پایتون کامپایلر ابزارهای ساخت cuDNN کودا
tensorflow_gpu-2.10.0 ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۱.۱ ۸.۱ ۱۱.۲
tensorflow_gpu-2.9.0 ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۵.۰.۰ ۸.۱ ۱۱.۲
tensorflow_gpu-2.8.0 ۳.۷-۳.۱۰ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۴.۲.۱ ۸.۱ ۱۱.۲
tensorflow_gpu-2.7.0 ۳.۷-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲ ۸.۱ ۱۱.۲
tensorflow_gpu-2.6.0 ۳.۶-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲ ۸.۱ ۱۱.۲
tensorflow_gpu-2.5.0 ۳.۶-۳.۹ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۷.۲ ۸.۱ ۱۱.۲
tensorflow_gpu-2.4.0 ۳.۶-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۱.۰ ۸.۰ ۱۱.۰
tensorflow_gpu-2.3.0 ۳.۵-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۳.۱.۰ ۷.۶ ۱۰.۱
tensorflow_gpu-2.2.0 ۳.۵-۳.۸ ام‌اس‌وی‌سی ۲۰۱۹ بازل ۲.۰.۰ ۷.۶ ۱۰.۱
tensorflow_gpu-2.1.0 ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۹ بازل 0.27.1-0.29.1 ۷.۶ ۱۰.۱
tensorflow_gpu-2.0.0 ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل ۰.۲۶.۱ ۷.۴ ۱۰
tensorflow_gpu-1.15.0 ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل ۰.۲۶.۱ ۷.۴ ۱۰
tensorflow_gpu-1.14.0 ۳.۵-۳.۷ ام‌اس‌وی‌سی ۲۰۱۷ بازل 0.24.1-0.25.2 ۷.۴ ۱۰
tensorflow_gpu-1.13.0 ۳.۵-۳.۷ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۹.۰-۰.۲۱.۰ ۷.۴ ۱۰
tensorflow_gpu-1.12.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۵.۰ ۷.۲ ۹.۰
tensorflow_gpu-1.11.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 بازل ۰.۱۵.۰ ۷ ۹
tensorflow_gpu-1.10.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.9.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.8.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.7.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.6.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.5.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۷ ۹
tensorflow_gpu-1.4.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۶ ۸
tensorflow_gpu-1.3.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۶ ۸
tensorflow_gpu-1.2.0 ۳.۵-۳.۶ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۵.۱ ۸
tensorflow_gpu-1.1.0 ۳.۵ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۵.۱ ۸
tensorflow_gpu-1.0.0 ۳.۵ به‌روزرسانی سوم MSVC 2015 سی‌میک نسخه ۳.۶.۳ ۵.۱ ۸