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

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

الإعداد لنظام التشغيل Windows

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

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

قم بتثبيت إصدار Python 3.9+ 64 بت لنظام التشغيل Windows . حدد النقطة كميزة اختيارية وأضفها إلى المتغير البيئي %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 لأدوات الحاوية اللازمة لإنشاء 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 GPU لتثبيت برامج التشغيل والبرامج الإضافية المطلوبة لتشغيل TensorFlow على وحدة معالجة الرسومات.

قم بتنزيل كود مصدر 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: الإصدار #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 بإنشاء برنامج "منشئ الحزم". ثم تقوم بتشغيل منشئ الحزمة لإنشاء الحزمة.

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

تم تحديث Tensorflow:master repo لبناء 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:

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  

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

استخدم هذا الخيار عند الإنشاء لتجنب مشكلات إنشاء الحزمة: 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. اعتمادًا على الاسم المقدم، سيتم إنشاء الحزمة. على سبيل المثال:

لإنشاء حزمة وحدة المعالجة المركزية Tensorflow:

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

لإنشاء حزمة ليلية، قم بتعيين tf_nightly بدلاً من tensorflow ، على سبيل المثال لإنشاء حزمة وحدة المعالجة المركزية الليلية:

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، أضف مجلدي 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"

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

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

إصدار نسخة بايثون مترجم بناء الأدوات
Tensorflow-2.16.1 3.9-3.12 كلانج 17.0.6 بازل 6.5.0
Tensorflow-2.15.0 3.9-3.11 إم إس في سي 2019 بازل 6.1.0
Tensorflow-2.14.0 3.9-3.11 إم إس في سي 2019 بازل 6.1.0
Tensorflow-2.12.0 3.8-3.11 إم إس في سي 2019 بازل 5.3.0
Tensorflow-2.11.0 3.7-3.10 إم إس في سي 2019 بازل 5.3.0
Tensorflow-2.10.0 3.7-3.10 إم إس في سي 2019 بازل 5.1.1
Tensorflow-2.9.0 3.7-3.10 إم إس في سي 2019 بازل 5.0.0
Tensorflow-2.8.0 3.7-3.10 إم إس في سي 2019 بازل 4.2.1
Tensorflow-2.7.0 3.7-3.9 إم إس في سي 2019 بازل 3.7.2
Tensorflow-2.6.0 3.6-3.9 إم إس في سي 2019 بازل 3.7.2
Tensorflow-2.5.0 3.6-3.9 إم إس في سي 2019 بازل 3.7.2
Tensorflow-2.4.0 3.6-3.8 إم إس في سي 2019 بازل 3.1.0
Tensorflow-2.3.0 3.5-3.8 إم إس في سي 2019 بازل 3.1.0
Tensorflow-2.2.0 3.5-3.8 إم إس في سي 2019 بازل 2.0.0
Tensorflow-2.1.0 3.5-3.7 إم إس في سي 2019 بازل 0.27.1-0.29.1
Tensorflow-2.0.0 3.5-3.7 إم إس في سي 2017 بازل 0.26.1
Tensorflow-1.15.0 3.5-3.7 إم إس في سي 2017 بازل 0.26.1
Tensorflow-1.14.0 3.5-3.7 إم إس في سي 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 كميك v3.6.3
Tensorflow-1.9.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.8.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.7.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.6.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.5.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.4.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.3.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.2.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.1.0 3.5 تحديث MSVC 2015 3 كميك v3.6.3
Tensorflow-1.0.0 3.5 تحديث MSVC 2015 3 كميك v3.6.3

GPU

إصدار نسخة بايثون مترجم بناء الأدوات cuDNN كودا
Tensorflow_gpu-2.10.0 3.7-3.10 إم إس في سي 2019 بازل 5.1.1 8.1 11.2
Tensorflow_gpu-2.9.0 3.7-3.10 إم إس في سي 2019 بازل 5.0.0 8.1 11.2
Tensorflow_gpu-2.8.0 3.7-3.10 إم إس في سي 2019 بازل 4.2.1 8.1 11.2
Tensorflow_gpu-2.7.0 3.7-3.9 إم إس في سي 2019 بازل 3.7.2 8.1 11.2
Tensorflow_gpu-2.6.0 3.6-3.9 إم إس في سي 2019 بازل 3.7.2 8.1 11.2
Tensorflow_gpu-2.5.0 3.6-3.9 إم إس في سي 2019 بازل 3.7.2 8.1 11.2
Tensorflow_gpu-2.4.0 3.6-3.8 إم إس في سي 2019 بازل 3.1.0 8.0 11.0
Tensorflow_gpu-2.3.0 3.5-3.8 إم إس في سي 2019 بازل 3.1.0 7.6 10.1
Tensorflow_gpu-2.2.0 3.5-3.8 إم إس في سي 2019 بازل 2.0.0 7.6 10.1
Tensorflow_gpu-2.1.0 3.5-3.7 إم إس في سي 2019 بازل 0.27.1-0.29.1 7.6 10.1
Tensorflow_gpu-2.0.0 3.5-3.7 إم إس في سي 2017 بازل 0.26.1 7.4 10
Tensorflow_gpu-1.15.0 3.5-3.7 إم إس في سي 2017 بازل 0.26.1 7.4 10
Tensorflow_gpu-1.14.0 3.5-3.7 إم إس في سي 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 كميك v3.6.3 7 9
Tensorflow_gpu-1.9.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 7 9
Tensorflow_gpu-1.8.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 7 9
Tensorflow_gpu-1.7.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 7 9
Tensorflow_gpu-1.6.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 7 9
Tensorflow_gpu-1.5.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 7 9
Tensorflow_gpu-1.4.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 6 8
Tensorflow_gpu-1.3.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 6 8
Tensorflow_gpu-1.2.0 3.5-3.6 تحديث MSVC 2015 3 كميك v3.6.3 5.1 8
Tensorflow_gpu-1.1.0 3.5 تحديث MSVC 2015 3 كميك v3.6.3 5.1 8
Tensorflow_gpu-1.0.0 3.5 تحديث MSVC 2015 3 كميك v3.6.3 5.1 8