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

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

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

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

قم بتثبيت بايثون وحزمة TensorFlow التابعة لها.

قم بتثبيت إصدار Python 3.9+ 64 بت لنظام التشغيل Windows . حدد 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

قم بتثبيت 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

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

راجع دليل دعم وحدة معالجة الرسومات في نظام التشغيل Windows لتثبيت برامج التشغيل والبرامج الإضافية المطلوبة لتشغيل 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 (قد تختلف جلسة العمل الخاصة بك):

قم ببناء وتثبيت حزمة pip

يتم بناء حزمة pip على مرحلتين. يقوم أمر bazel build بإنشاء برنامج "package-builder". ثم تقوم بتشغيل برنامج package-builder لإنشاء الحزمة.

قم ببناء أداة بناء الحزم

تم تحديث مستودع 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:

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  

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

استخدم هذا الخيار عند الإنشاء لتجنب مشاكل إنشاء الحزمة: 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 تلقائيًا بتحويل الوسائط التي تبدو كمسارات يونكس إلى مسارات ويندوز، وهذا لا يعمل مع 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 الثنائية إلى $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.21.0 3.10-3.13 CLANG 18.1.4 بازل 7.4.1
tensorflow-2.20.0 3.9-3.13 CLANG 18.1.4 بازل 7.4.1
tensorflow-2.19.0 3.9-3.12 CLANG 18.1.4 بازل 6.5.0
tensorflow-2.18.0 3.9-3.12 CLANG 17.0.6 بازل 6.5.0
tensorflow-2.17.0 3.9-3.12 CLANG 17.0.6 بازل 6.5.0
tensorflow-2.16.1 3.9-3.12 CLANG 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 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 كودا
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 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