Google I/O is a wrap! Catch up on TensorFlow sessions View sessions

بناء من المصدر

قم ببناء حزمة TensorFlow pip من المصدر وتثبيتها على Ubuntu Linux و macOS. على الرغم من أن التعليمات قد تعمل مع أنظمة أخرى ، إلا أنه يتم اختبارها ودعمها فقط لنظامي التشغيل Ubuntu و macOS.

الإعداد لنظامي Linux و macOS

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

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

أوبونتو

sudo apt install python3-dev python3-pip

macOS

يتطلب Xcode 9.2 أو أحدث.

التثبيت باستخدام مدير حزمة Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
# if you are on macOS 10.12 (Sierra) use export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew install python

قم بتثبيت تبعيات حزمة TensorFlow pip (إذا كنت تستخدم بيئة افتراضية ، فاحذف الوسيطة --user ):

pip install -U --user pip numpy wheel packaging
pip install -U --user keras_preprocessing --no-deps

تثبيت Bazel

لإنشاء TensorFlow ، ستحتاج إلى تثبيت Bazel. يعد Bazelisk طريقة سهلة لتثبيت Bazel ويقوم تلقائيًا بتنزيل إصدار Bazel الصحيح لـ TensorFlow. لسهولة الاستخدام ، أضف Bazelisk مثل bazel القابل للتنفيذ في PATH .

إذا لم يكن Bazelisk متاحًا ، فيمكنك تثبيت Bazel يدويًا. تأكد من تثبيت إصدار Bazel مدعوم: أي إصدار بين _TF_MIN_BAZEL_VERSION و _TF_MAX_BAZEL_VERSION كما هو محدد في tensorflow/configure.py .

تثبيت دعم GPU (اختياري ، Linux فقط)

لا يوجد دعم GPU لنظام macOS.

اقرأ دليل دعم GPU لتثبيت برامج التشغيل والبرامج الإضافية المطلوبة لتشغيل TensorFlow على وحدة معالجة الرسومات.

قم بتنزيل الكود المصدري TensorFlow

استخدم Git لاستنساخ مستودع TensorFlow :

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

الريبو الافتراضي لفرع التطوير master . يمكنك أيضًا التحقق من فرع التحرير لإنشاء:

git checkout branch_name  # r2.2, r2.3, etc.

تكوين البناء

قم بتكوين بناء النظام الخاص بك عن طريق تشغيل ./configure في جذر شجرة مصدر TensorFlow. يطالبك هذا البرنامج النصي بموقع تبعيات TensorFlow ويطلب خيارات تكوين بناء إضافية (علامات المترجم ، على سبيل المثال).

./configure

إذا كنت تستخدم بيئة افتراضية ، فإن python configure.py تعطي الأولوية للمسارات داخل البيئة ، بينما ./configure تعطي الأولوية للمسارات خارج البيئة. في كلتا الحالتين يمكنك تغيير الافتراضي.

جلسة عينة

يُظهر ما يلي نموذج تشغيل من البرنامج النصي ./configure (قد تختلف جلستك):

خيارات الإعداد

دعم GPU

لدعم GPU ، اضبط cuda=Y أثناء التكوين وحدد إصدارات CUDA و cuDNN. إذا كان نظامك يحتوي على إصدارات متعددة من CUDA أو cuDNN مثبتة ، فاضبط الإصدار بشكل صريح بدلاً من الاعتماد على الإعداد الافتراضي. ينشئ ./configure ارتباطات رمزية لمكتبات CUDA في نظامك — لذلك إذا قمت بتحديث مسارات مكتبة CUDA الخاصة بك ، فيجب تشغيل خطوة التكوين هذه مرة أخرى قبل البناء.

التحسينات

بالنسبة لعلامات تحسين الترجمة ، تعمل القيمة الافتراضية ( -march=native ) على تحسين الشفرة التي تم إنشاؤها لنوع وحدة المعالجة المركزية بجهازك. ومع ذلك ، إذا كنت تقوم ببناء TensorFlow لنوع مختلف من وحدة المعالجة المركزية ، ففكر في علامة تحسين أكثر تحديدًا. تحقق من دليل دول مجلس التعاون الخليجي للحصول على أمثلة.

التكوينات المكونة مسبقًا

هناك بعض تكوينات البناء التي تم تكوينها مسبقًا والتي يمكن إضافتها إلى أمر bazel build ، على سبيل المثال:

  • --config=dbg —إنشاء معلومات التصحيح. انظر CONTRIBUTING.md للحصول على التفاصيل.
  • --config=mkl Intel® MKL-DNN .
  • --config=monolithic - تكوين لبناء متآلف ثابت في الغالب.
  • --config=v1 - أنشئ TensorFlow 1.x بدلاً من 2.x.

بناء حزمة النقطة

TensorFlow 2.x

قم بتثبيت Bazel واستخدام bazel build لإنشاء حزمة TensorFlow 2.x مع دعم وحدة المعالجة المركزية فقط :

bazel build [--config=option] //tensorflow/tools/pip_package:build_pip_package

دعم GPU

لإنشاء مُنشئ حزم TensorFlow مع دعم GPU:

bazel build --config=cuda [--config=option] //tensorflow/tools/pip_package:build_pip_package

TensorFlow 1.x

لإنشاء حزمة TensorFlow 1.x أقدم ، استخدم الخيار --config=v1 :

bazel build --config=v1 [--config=option] //tensorflow/tools/pip_package:build_pip_package

خيارات بناء Bazel

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

يمكن أن يستخدم إنشاء TensorFlow من المصدر الكثير من ذاكرة الوصول العشوائي. إذا كانت ذاكرة نظامك محدودة ، فحد من استخدام ذاكرة الوصول العشوائي في Bazel بـ: --local_ram_resources=2048 .

تم تصميم حزم TensorFlow الرسمية باستخدام سلسلة أدوات GCC 7.3 التي تتوافق مع معايير الحزمة manylinux2010.

بالنسبة إلى GCC 5 والإصدارات الأحدث ، يمكن إنشاء التوافق مع ABI الأقدم باستخدام: --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" . يضمن توافق ABI استمرار العمليات المخصصة المبنية على حزمة TensorFlow الرسمية في العمل مع حزمة GCC 5 المبنية.

بناء الحزمة

ينشئ الأمر bazel build ملفًا تنفيذيًا باسم build_pip_package - هذا هو البرنامج الذي يبني حزمة pip . قم بتشغيل الملف التنفيذي كما هو موضح أدناه لإنشاء حزمة .whl في الدليل /tmp/tensorflow_pkg .

للبناء من فرع التحرير:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

للبناء من السيد ، استخدم --nightly_flag للحصول على التبعيات الصحيحة:

./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg

على الرغم من أنه من الممكن إنشاء تكوينات CUDA وغير CUDA تحت نفس شجرة المصدر ، فمن المستحسن تشغيل bazel clean عند التبديل بين هذين التكوينين في نفس شجرة المصدر.

قم بتثبيت الحزمة

يعتمد اسم ملف .whl الذي تم إنشاؤه على إصدار TensorFlow والنظام الأساسي الخاص بك. استخدم pip install الحزمة ، على سبيل المثال:

pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl

يبني Docker Linux

تعد صور تطوير Docker الخاصة بـ TensorFlow طريقة سهلة لإعداد بيئة لإنشاء حزم Linux من المصدر. تحتوي هذه الصور بالفعل على الكود المصدري والتبعيات المطلوبة لبناء TensorFlow. انتقل إلى دليل TensorFlow Docker للحصول على إرشادات التثبيت وقائمة علامات الصور المتاحة .

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

يستخدم المثال التالي :devel image لإنشاء حزمة CPU فقط من أحدث كود مصدر TensorFlow. تحقق من دليل Docker للتعرف على علامات -devel ذات المستوى المتاح.

قم بتنزيل أحدث صورة تطوير وابدأ حاوية Docker التي ستستخدمها لإنشاء حزمة النقطة :

docker pull tensorflow/tensorflow:devel
docker run -it -w /tensorflow_src -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel bash

git pull  # within the container, download the latest source code

يبدأ أمر docker run الإرساء أعلاه قذيفة في الدليل /tensorflow_src - جذر شجرة المصدر. يقوم بتثبيت الدليل الحالي للمضيف في دليل الحاوية /mnt ، ويمرر معلومات المستخدم المضيف إلى الحاوية من خلال متغير بيئي (يُستخدم لتعيين الأذونات - يمكن لـ Docker جعل هذا الأمر صعبًا).

بدلاً من ذلك ، لإنشاء نسخة مضيفة من TensorFlow داخل حاوية ، قم بتركيب شجرة مصدر المضيف في دليل الحاوية /tensorflow :

docker run -it -w /tensorflow -v /path/to/tensorflow:/tensorflow -v $PWD:/mnt \
    -e HOST_PERMS="\\((id -u):\\)(id -g)" tensorflow/tensorflow:devel bash

مع إعداد شجرة المصدر ، قم ببناء حزمة TensorFlow داخل البيئة الافتراضية للحاوية:

  1. تكوين البناء - وهذا يطالب المستخدم بالإجابة على أسئلة التكوين الخاصة بالبناء.
  2. قم ببناء الأداة المستخدمة لإنشاء حزمة النقطة .
  3. قم بتشغيل الأداة لإنشاء حزمة النقطة .
  4. اضبط أذونات ملكية الملف خارج الحاوية.
./configure  # answer prompts or use defaults

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

قم بتثبيت والتحقق من الحزمة داخل الحاوية:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(tf.__version__)"

على جهازك المضيف ، توجد حزمة TensorFlow pip في الدليل الحالي (مع أذونات المستخدم المضيف): ./tensorflow- version - tags .whl

دعم GPU

يعد Docker أسهل طريقة لإنشاء دعم GPU لـ TensorFlow نظرًا لأن الجهاز المضيف لا يتطلب سوى برنامج تشغيل NVIDIA® (لا يلزم تثبيت مجموعة أدوات NVIDIA® CUDA® ). راجع دليل دعم GPU ودليل TensorFlow Docker لإعداد nvidia-docker (Linux فقط).

يقوم المثال التالي بتنزيل TensorFlow :devel-gpu image ويستخدم nvidia-docker لتشغيل الحاوية التي تدعم GPU. تم تكوين صورة التطوير هذه لإنشاء حزمة نقطة بدعم GPU:

docker pull tensorflow/tensorflow:devel-gpu
docker run --gpus all -it -w /tensorflow -v $PWD:/mnt -e HOST_PERMS="$(id -u):$(id -g)" \
    tensorflow/tensorflow:devel-gpu bash
git pull  # within the container, download the latest source code

ثم ، داخل البيئة الافتراضية للحاوية ، قم ببناء حزمة TensorFlow بدعم GPU:

./configure  # answer prompts or use defaults

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /mnt  # create package

chown $HOST_PERMS /mnt/tensorflow-version-tags.whl

ثبّت الحزمة وتحقق منها داخل الحاوية وتحقق من وحدة معالجة الرسومات:

pip uninstall tensorflow  # remove current version

pip install /mnt/tensorflow-version-tags.whl
cd /tmp  # don't import from source directory
python -c "import tensorflow as tf; print(\"Num GPUs Available: \", len(tf.config.list_physical_devices('GPU')))"

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

لينكس

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

الإصدار نسخة بايثون مترجم أدوات البناء
Tensorflow-2.9.0 3.7-3.10 دول مجلس التعاون الخليجي 9.3.1 بازل 5.0.0
Tensorflow-2.8.0 3.7-3.10 دول مجلس التعاون الخليجي 7.3.1 بازل 4.2.1
Tensorflow-2.7.0 3.7-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2
Tensorflow-2.6.0 3.6-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2
Tensorflow-2.5.0 3.6-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2
Tensorflow-2.4.0 3.6-3.8 دول مجلس التعاون الخليجي 7.3.1 بازل 3.1.0
Tensorflow-2.3.0 3.5-3.8 دول مجلس التعاون الخليجي 7.3.1 بازل 3.1.0
Tensorflow-2.2.0 3.5-3.8 دول مجلس التعاون الخليجي 7.3.1 Bazel 2.0.0
Tensorflow-2.1.0 2.7، 3.5-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.27.1
Tensorflow-2.0.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.26.1
Tensorflow-1.15.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.26.1
Tensorflow-1.14.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 4.8 بازيل 0.24.1
Tensorflow-1.13.1 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 4.8 بازل 0.19.2
Tensorflow-1.12.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0
Tensorflow-1.11.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0
Tensorflow-1.10.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0
Tensorflow-1.9.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.11.0
Tensorflow-1.8.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.10.0
Tensorflow-1.7.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.10.0
Tensorflow-1.6.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.9.0
Tensorflow-1.5.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.8.0
Tensorflow-1.4.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.5.4
Tensorflow-1.3.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.5
Tensorflow-1.2.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.5
Tensorflow-1.1.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.2
Tensorflow-1.0.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.2

GPU

الإصدار نسخة بايثون مترجم أدوات البناء cuDNN كودا
Tensorflow-2.9.0 3.7-3.10 دول مجلس التعاون الخليجي 9.3.1 بازل 5.0.0 8.1 11.2
Tensorflow-2.8.0 3.7-3.10 دول مجلس التعاون الخليجي 7.3.1 بازل 4.2.1 8.1 11.2
Tensorflow-2.7.0 3.7-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2 8.1 11.2
Tensorflow-2.6.0 3.6-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2 8.1 11.2
Tensorflow-2.5.0 3.6-3.9 دول مجلس التعاون الخليجي 7.3.1 بازل 3.7.2 8.1 11.2
Tensorflow-2.4.0 3.6-3.8 دول مجلس التعاون الخليجي 7.3.1 بازل 3.1.0 8.0 11.0
Tensorflow-2.3.0 3.5-3.8 دول مجلس التعاون الخليجي 7.3.1 بازل 3.1.0 7.6 10.1
Tensorflow-2.2.0 3.5-3.8 دول مجلس التعاون الخليجي 7.3.1 Bazel 2.0.0 7.6 10.1
Tensorflow-2.1.0 2.7، 3.5-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.27.1 7.6 10.1
Tensorflow-2.0.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.26.1 7.4 10.0
tensorflow_gpu-1.15.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 7.3.1 بازيل 0.26.1 7.4 10.0
tensorflow_gpu-1.14.0 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 4.8 بازيل 0.24.1 7.4 10.0
tensorflow_gpu-1.13.1 2.7، 3.3-3.7 دول مجلس التعاون الخليجي 4.8 بازل 0.19.2 7.4 10.0
tensorflow_gpu-1.12.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0 7 9
tensorflow_gpu-1.11.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0 7 9
tensorflow_gpu-1.10.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.15.0 7 9
tensorflow_gpu-1.9.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.11.0 7 9
tensorflow_gpu-1.8.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازيل 0.10.0 7 9
tensorflow_gpu-1.7.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.9.0 7 9
tensorflow_gpu-1.6.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.9.0 7 9
tensorflow_gpu-1.5.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.8.0 7 9
tensorflow_gpu-1.4.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.5.4 6 8
tensorflow_gpu-1.3.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.5 6 8
tensorflow_gpu-1.2.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.5 5.1 8
tensorflow_gpu-1.1.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7، 3.3-3.6 دول مجلس التعاون الخليجي 4.8 بازل 0.4.2 5.1 8

macOS

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

الإصدار نسخة بايثون مترجم أدوات البناء
Tensorflow-2.9.0 3.7-3.10 رعشة من xcode 10.14 بازل 5.0.0
Tensorflow-2.8.0 3.7-3.10 رعشة من xcode 10.14 بازل 4.2.1
Tensorflow-2.7.0 3.7-3.9 رنة من xcode 10.11 بازل 3.7.2
Tensorflow-2.6.0 3.6-3.9 رنة من xcode 10.11 بازل 3.7.2
Tensorflow-2.5.0 3.6-3.9 رنة من xcode 10.11 بازل 3.7.2
Tensorflow-2.4.0 3.6-3.8 رنة من xcode 10.3 بازل 3.1.0
Tensorflow-2.3.0 3.5-3.8 رنة من xcode 10.1 بازل 3.1.0
Tensorflow-2.2.0 3.5-3.8 رنة من xcode 10.1 Bazel 2.0.0
Tensorflow-2.1.0 2.7، 3.5-3.7 رنة من xcode 10.1 بازيل 0.27.1
Tensorflow-2.0.0 2.7، 3.5-3.7 رنة من xcode 10.1 بازيل 0.27.1
Tensorflow-2.0.0 2.7، 3.3-3.7 رنة من xcode 10.1 بازيل 0.26.1
Tensorflow-1.15.0 2.7، 3.3-3.7 رنة من xcode 10.1 بازيل 0.26.1
Tensorflow-1.14.0 2.7، 3.3-3.7 رنة من xcode بازيل 0.24.1
Tensorflow-1.13.1 2.7، 3.3-3.7 رنة من xcode بازل 0.19.2
Tensorflow-1.12.0 2.7، 3.3-3.6 رنة من xcode بازيل 0.15.0
Tensorflow-1.11.0 2.7، 3.3-3.6 رنة من xcode بازيل 0.15.0
Tensorflow-1.10.0 2.7، 3.3-3.6 رنة من xcode بازيل 0.15.0
Tensorflow-1.9.0 2.7، 3.3-3.6 رنة من xcode بازل 0.11.0
Tensorflow-1.8.0 2.7، 3.3-3.6 رنة من xcode بازل 0.10.1
Tensorflow-1.7.0 2.7، 3.3-3.6 رنة من xcode بازل 0.10.1
Tensorflow-1.6.0 2.7، 3.3-3.6 رنة من xcode بازل 0.8.1
Tensorflow-1.5.0 2.7، 3.3-3.6 رنة من xcode بازل 0.8.1
Tensorflow-1.4.0 2.7، 3.3-3.6 رنة من xcode بازل 0.5.4
Tensorflow-1.3.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.5
Tensorflow-1.2.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.5
Tensorflow-1.1.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.2
Tensorflow-1.0.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.2

GPU

الإصدار نسخة بايثون مترجم أدوات البناء cuDNN كودا
tensorflow_gpu-1.1.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.2 5.1 8
tensorflow_gpu-1.0.0 2.7، 3.3-3.6 رنة من xcode بازل 0.4.2 5.1 8