البناء من المصدر على نظام التشغيل Windows

قم ببناء حزمة TensorFlow pip من المصدر وقم بتثبيتها على Windows.

الإعداد لنظام Windows

قم بتثبيت أدوات البناء التالية لتكوين بيئة تطوير Windows الخاصة بك.

تثبيت Python وتبعيات حزمة TensorFlow

ثبّت إصدار بايثون 3.9+ (64 بت) لنظام ويندوز . اختر 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، راجع إعدادات البناء المُجرّبة لنظام 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، ولكن يُمكن تثبيتها بشكل منفصل:

  1. انتقل إلى تنزيلات Visual Studio ،
  2. حدد أدوات لبرنامج Visual Studio أو أدوات أخرى وإطار العمل والعناصر القابلة لإعادة التوزيع ،
  3. التنزيل والتثبيت:
    • أدوات البناء لبرنامج Visual Studio 2022
    • ملفات Microsoft Visual C++ القابلة لإعادة التوزيع لبرنامج Visual Studio 2022

تثبيت LLVM

  1. انتقل إلى تنزيلات LLVM ،
  2. تنزيل وتثبيت LLVM المتوافق مع Windows في C:/Program Files/LLVM على سبيل المثال، LLVM-17.0.6-win64.exe

تثبيت دعم وحدة معالجة الرسومات (اختياري)

راجع دليل دعم وحدة معالجة الرسومات (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.

اختياري: إعداد المتغير البيئي

شغّل الأوامر التالية قبل تشغيل أمر البناء لتجنب مشاكل إنشاء الحزمة: (إذا تم إعداد الأوامر التالية أثناء تثبيت الحزم، يُرجى تجاهلها). شغّل الأمر 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 برنامج "منشئ الحزم". ثم تُشغّل برنامج "منشئ الحزم" لإنشاء الحزمة.

بناء منشئ الحزمة

تم تحديث مستودع tensorflow:master إلى الإصدار 2.x افتراضيًا. ثبّت Bazel واستخدم bazel build لإنشاء مُنشئ حزم TensorFlow.

bazel build //tensorflow/tools/pip_package:wheel

وحدة المعالجة المركزية فقط

استخدم bazel لإنشاء منشئ حزمة TensorFlow مع دعم وحدة المعالجة المركزية فقط:

البناء مع 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 مع دعم وحدة معالجة الرسومات:

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  

خيارات بناء بازل

استخدم هذا الخيار عند البناء لتجنب المشكلات المتعلقة بإنشاء الحزمة: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

راجع مرجع سطر أوامر Bazel لمعرفة خيارات البناء .

قد يستهلك بناء TensorFlow من المصدر قدرًا كبيرًا من ذاكرة الوصول العشوائي (RAM). إذا كان نظامك محدودًا بالذاكرة، فحدّ من استخدام Bazel لذاكرة الوصول العشوائي باستخدام: --local_ram_resources=2048 .

إذا كنت تقوم بالبناء مع دعم وحدة معالجة الرسوميات، أضف --copt=-nvcc_options=disable-warnings لقمع رسائل تحذير nvcc.

بناء الحزمة

لإنشاء حزمة pip، يجب تحديد علامة --repo_env=WHEEL_NAME. بناءً على الاسم المُدخل، سيتم إنشاء الحزمة. على سبيل المثال:

لبناء حزمة وحدة المعالجة المركزية 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 ، وبايثون في C:\Python\python.exe ، فاضبط PATH بما يلي:

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"

لدعم وحدة معالجة الرسوميات، أضف أدلة 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"

تكوينات البناء التي تم اختبارها

وحدة المعالجة المركزية

إصدار نسخة بايثون المُجمِّع أدوات البناء
tensorflow-2.20.0 3.9-3.13 كلانج 18.1.4 بازل 7.4.1
tensorflow-2.19.0 3.9-3.12 كلانج 18.1.4 بازل 6.5.0
tensorflow-2.18.0 3.9-3.12 كلانج 17.0.6 بازل 6.5.0
tensorflow-2.17.0 3.9-3.12 كلانج 17.0.6 بازل 6.5.0
tensorflow-2.16.1 3.9-3.12 كلانج 17.0.6 بازل 6.5.0
tensorflow-2.15.0 3.9-3.11 MSVC 2019 بازل 6.1.0
tensorflow-2.14.0 3.9-3.11 MSVC 2019 بازل 6.1.0
tensorflow-2.12.0 3.8-3.11 MSVC 2019 بازل 5.3.0
tensorflow-2.11.0 3.7-3.10 MSVC 2019 بازل 5.3.0
tensorflow-2.10.0 3.7-3.10 MSVC 2019 بازل 5.1.1
tensorflow-2.9.0 3.7-3.10 MSVC 2019 بازل 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 بازل 3.1.0
tensorflow-2.3.0 3.5-3.8 MSVC 2019 بازل 3.1.0
tensorflow-2.2.0 3.5-3.8 MSVC 2019 بازل 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 بازل 0.26.1
tensorflow-1.15.0 3.5-3.7 MSVC 2017 بازل 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 بازل 0.19.0-0.21.0
tensorflow-1.12.0 3.5-3.6 تحديث MSVC 2015 3 بازل 0.15.0
tensorflow-1.11.0 3.5-3.6 تحديث MSVC 2015 3 بازل 0.15.0
tensorflow-1.10.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.9.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.8.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.7.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.6.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.5.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.4.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.3.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.2.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.1.0 3.5 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3
tensorflow-1.0.0 3.5 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3

وحدة معالجة الرسومات

إصدار نسخة بايثون المُجمِّع أدوات البناء cuDNN كودا
tensorflow_gpu-2.10.0 3.7-3.10 MSVC 2019 بازل 5.1.1 8.1 11.2
tensorflow_gpu-2.9.0 3.7-3.10 MSVC 2019 بازل 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 بازل 3.1.0 8.0 11.0
tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019 بازل 3.1.0 7.6 10.1
tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019 بازل 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 بازل 0.26.1 7.4 10
tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017 بازل 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 بازل 0.15.0 7.2 9.0
tensorflow_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 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 تحديث MSVC 2015 3 سي ميك الإصدار 3.6.3 5.1 8