إرساء

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

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

متطلبات TensorFlow Docker

  1. قم بتثبيت Docker على جهازك المضيف المحلي.
  2. للحصول على دعم GPU على Linux، قم بتثبيت دعم NVIDIA Docker .
    • قم بتدوين إصدار Docker الخاص بك باستخدام docker -v . تتطلب الإصدارات الأقدم من 19.03 وجود nvidia-docker2 وعلامة --runtime=nvidia . في الإصدارات التي تتضمن الإصدار 19.03 وما بعده ، ستستخدم حزمة nvidia-container-toolkit والعلامة --gpus all . تم توثيق كلا الخيارين في الصفحة المرتبطة أعلاه.

قم بتنزيل صورة TensorFlow Docker

توجد صور TensorFlow Docker الرسمية في مستودع Tensorflow/tensorflow Docker Hub. يتم وضع علامة على إصدارات الصور باستخدام التنسيق التالي:

علامة وصف
latest أحدث إصدار من الصورة الثنائية لوحدة المعالجة المركزية TensorFlow. تقصير.
nightly إنشاءات ليلية لصورة TensorFlow. (غير مستقر.)
version حدد إصدار الصورة الثنائية TensorFlow، على سبيل المثال: 2.8.3

تحتوي كل علامة أساسية على متغيرات تضيف وظيفة أو تغيرها:

متغيرات العلامة وصف
tag -gpu إصدار العلامة المحددة مع دعم GPU. ( انظر أدناه )
tag -jupyter إصدار العلامة المحدد باستخدام Jupyter (يتضمن دفاتر ملاحظات TensorFlow التعليمية)

يمكنك استخدام متغيرات متعددة في وقت واحد. على سبيل المثال، تقوم التنزيلات التالية لـ TensorFlow بإصدار الصور على جهازك:

docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

ابدأ تشغيل حاوية TensorFlow Docker

لبدء حاوية تم تكوينها باستخدام TensorFlow، استخدم نموذج الأمر التالي:

docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

للحصول على التفاصيل، راجع مرجع تشغيل عامل الإرساء .

أمثلة باستخدام صور وحدة المعالجة المركزية (CPU) فقط

دعونا نتحقق من تثبيت TensorFlow باستخدام latest صورة موسومة. يقوم Docker بتنزيل صورة TensorFlow جديدة في أول مرة يتم تشغيلها:

docker run -it --rm tensorflow/tensorflow \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

دعونا نعرض المزيد من وصفات TensorFlow Docker. ابدأ جلسة bash Shell داخل حاوية تم تكوينها بواسطة TensorFlow:

docker run -it tensorflow/tensorflow bash

داخل الحاوية، يمكنك بدء جلسة python واستيراد TensorFlow.

لتشغيل برنامج TensorFlow الذي تم تطويره على الجهاز المضيف داخل حاوية، قم بتثبيت دليل المضيف وتغيير دليل عمل الحاوية ( -v hostDir:containerDir -w workDir ):

docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

يمكن أن تنشأ مشكلات الأذونات عندما يتم عرض الملفات التي تم إنشاؤها داخل الحاوية للمضيف. من الأفضل عادة تحرير الملفات على النظام المضيف.

ابدأ تشغيل خادم Jupyter Notebook باستخدام البنية الليلية لـ TensorFlow:

docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

اتبع التعليمات وافتح عنوان URL في متصفح الويب المضيف لديك: http://127.0.0.1:8888/?token=...

دعم GPU

يعد Docker أسهل طريقة لتشغيل TensorFlow على وحدة معالجة الرسومات نظرًا لأن الجهاز المضيف لا يتطلب سوى برنامج تشغيل NVIDIA® ( مجموعة أدوات NVIDIA® CUDA® غير مطلوبة).

قم بتثبيت Nvidia Container Toolkit لإضافة دعم NVIDIA® GPU إلى Docker. nvidia-container-runtime متاح فقط لنظام التشغيل Linux. راجع الأسئلة الشائعة لدعم النظام الأساسي nvidia-container-runtime للحصول على التفاصيل.

تحقق مما إذا كانت وحدة معالجة الرسومات متاحة:

lspci | grep -i nvidia

تحقق من تثبيت nvidia-docker لديك:

docker run --gpus all --rm nvidia/cuda nvidia-smi

أمثلة على استخدام الصور التي تدعم GPU

قم بتنزيل وتشغيل صورة TensorFlow التي تدعم وحدة معالجة الرسومات (قد يستغرق الأمر بضع دقائق):

docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu \
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

قد يستغرق الأمر بعض الوقت لإعداد الصورة الممكّنة لوحدة معالجة الرسومات. في حالة تشغيل البرامج النصية المستندة إلى GPU بشكل متكرر، يمكنك استخدام docker exec لإعادة استخدام الحاوية.

استخدم أحدث صورة لـ TensorFlow GPU لبدء جلسة bash Shell في الحاوية:

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash