دليل التشغيل السريع لـ Docker مع Ultralytics

Ultralytics Docker Package Visual

يعمل هذا الدليل كمقدمة شاملة لإعداد بيئة Docker لمشاريع Ultralytics الخاصة بك. Docker هو منصة لتطوير وشحن وتشغيل التطبيقات داخل حاويات. وهي مفيدة بشكل خاص لضمان أن البرنامج سيعمل دائمًا بنفس الطريقة، بغض النظر عن مكان نشره. لمزيد من التفاصيل، تفضل بزيارة مستودع Ultralytics Docker على Docker Hub.

Docker Image Version Docker Pulls

ما ستتعلمه

  • إعداد Docker مع دعم NVIDIA
  • تثبيت صور Ultralytics Docker
  • تشغيل Ultralytics في حاوية Docker مع دعم CPU أو GPU
  • استخدام خادم عرض (display server) مع Docker لعرض نتائج اكتشاف Ultralytics
  • تثبيت الأدلة المحلية داخل الحاوية


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

المتطلبات الأساسية

  • تأكد من تثبيت Docker على نظامك. إذا لم يكن كذلك، يمكنك تنزيله وتثبيته من موقع Docker.
  • تأكد من أن نظامك يحتوي على NVIDIA GPU وأن برامج تشغيل NVIDIA مثبتة.
  • إذا كنت تستخدم أجهزة NVIDIA Jetson، فتأكد من تثبيت إصدار JetPack المناسب. راجع دليل NVIDIA Jetson لمزيد من التفاصيل.

إعداد Docker مع دعم NVIDIA

أولاً، تحقق من تثبيت برامج تشغيل NVIDIA بشكل صحيح عن طريق تشغيل:

nvidia-smi

تثبيت NVIDIA Container Toolkit

الآن، دعنا نقوم بتثبيت NVIDIA Container Toolkit لتمكين دعم GPU في حاويات Docker:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

قم بتحديث قوائم الحزم وتثبيت حزمة nvidia-container-toolkit:

sudo apt-get update

تثبيت أحدث إصدار من nvidia-container-toolkit:

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
اختياري: تثبيت إصدار محدد من nvidia-container-toolkit

اختياريًا، يمكنك تثبيت إصدار محدد من nvidia-container-toolkit عن طريق تعيين متغير البيئة NVIDIA_CONTAINER_TOOLKIT_VERSION:

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
  nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

التحقق من وقت تشغيل NVIDIA مع Docker

قم بتشغيل docker info | grep -i runtime للتأكد من ظهور nvidia في قائمة أوقات التشغيل:

docker info | grep -i runtime

تثبيت صور Ultralytics Docker

تقدم Ultralytics العديد من صور Docker المحسّنة لمختلف المنصات وحالات الاستخدام:

  • Dockerfile: صورة GPU، مثالية للتدريب.
  • Dockerfile-arm64: لبنية ARM64، مناسبة لأجهزة مثل Raspberry Pi.
  • Dockerfile-cpu: إصدار مخصص لـ CPU فقط للاستدلال والبيئات غير المعتمدة على GPU.
  • Dockerfile-jetson-jetpack4: محسّنة لأجهزة NVIDIA Jetson التي تعمل بنظام NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: محسّنة لأجهزة NVIDIA Jetson التي تعمل بنظام NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: محسّنة لأجهزة NVIDIA Jetson التي تعمل بنظام NVIDIA JetPack 6.
  • Dockerfile-jupyter: للتطوير التفاعلي باستخدام JupyterLab في المتصفح.
  • Dockerfile-nvidia-arm64: لأجهزة NVIDIA ARM64 مثل Jetson AGX Thor و DGX Spark، وتدعم JetPack 7.0 و DGX OS.
  • Dockerfile-python: بيئة Python مصغرة للتطبيقات الخفيفة.
  • Dockerfile-python-export: صورة Python مصغرة موسعة مع إمكانيات تصدير كاملة لتحويل نموذج YOLO.
  • Dockerfile-conda: تتضمن Miniconda3 وحزمة Ultralytics المثبتة عبر Conda.
  • Dockerfile-export: صورة GPU مع تثبيت جميع تبعيات تنسيق التصدير مسبقًا لتحويل النموذج وقياس الأداء.

لسحب أحدث صورة:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

تشغيل Ultralytics في حاوية Docker

إليك كيفية تنفيذ حاوية Ultralytics Docker:

استخدام CPU فقط

# Run without GPU
sudo docker run -it --ipc=host $t

استخدام GPUs

# Run with all GPUs
sudo docker run -it --ipc=host --runtime=nvidia --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --runtime=nvidia --gpus '"device=2,3"' $t

يقوم العلم -it بتعيين pseudo-TTY وإبقاء stdin مفتوحًا، مما يسمح لك بالتفاعل مع الحاوية. يمكّن العلم --ipc=host مشاركة مساحة اسم IPC الخاصة بالمضيف، وهو أمر ضروري لمشاركة الذاكرة بين العمليات. يسمح العلم --gpus للحاوية بالوصول إلى GPUs الخاصة بالمضيف.

ملاحظة حول إمكانية الوصول إلى الملفات

للعمل مع الملفات الموجودة على جهازك المحلي داخل الحاوية، يمكنك استخدام وحدات تخزين Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container $t

استبدل /path/on/host بمسار الدليل على جهازك المحلي و /path/in/container بالمسار المطلوب داخل حاوية Docker.

استمرار مخرجات التدريب

يتم حفظ مخرجات التدريب في /ultralytics/runs/<task>/<name>/ داخل الحاوية افتراضيًا. بدون تثبيت دليل مضيف، ستضيع المخرجات عند إزالة الحاوية.

لإبقاء مخرجات التدريب مستمرة:

# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
  yolo train model=yolo26n.pt data=coco8.yaml project=/w/runs

يحفظ هذا جميع مخرجات التدريب في ./runs على جهازك المضيف.

تشغيل تطبيقات واجهة المستخدم الرسومية (GUI) في حاوية Docker

تجريبي للغاية - يتحمل المستخدم جميع المخاطر

التعليمات التالية تجريبية. تشكل مشاركة مقبس X11 مع حاوية Docker مخاطر أمنية محتملة. لذلك، يوصى باختبار هذا الحل فقط في بيئة خاضعة للرقابة. لمزيد من المعلومات، راجع هذه الموارد حول كيفية استخدام xhost(1)(2).

يُستخدم Docker بشكل أساسي لاحتواء تطبيقات الخلفية وبرامج CLI، ولكن يمكنه أيضًا تشغيل برامج رسومية. في عالم Linux، يتعامل خادمان رسوميان رئيسيان مع العرض الرسومي: X11 (المعروف أيضًا باسم نظام X Window) و Wayland. قبل البدء، من الضروري تحديد خادم الرسومات الذي تستخدمه حاليًا. قم بتشغيل هذا الأمر لمعرفة ذلك:

env | grep -E -i 'x11|xorg|wayland'

إعداد وتكوين خادم عرض X11 أو Wayland خارج نطاق هذا الدليل. إذا لم يرجع الأمر أعلاه أي شيء، فستحتاج إلى البدء بجعل أحدهما يعمل لنظامك قبل المتابعة.

تشغيل حاوية Docker مع واجهة مستخدم رسومية (GUI)

مثال
استخدام GPUs

إذا كنت تستخدم GPUs، يمكنك إضافة العلم --gpus all إلى الأمر.

علم وقت تشغيل Docker

إذا كان تثبيت Docker الخاص بك لا يستخدم وقت تشغيل nvidia افتراضيًا، يمكنك إضافة العلم --runtime=nvidia إلى الأمر.

إذا كنت تستخدم X11، يمكنك تشغيل الأمر التالي للسماح لحاوية Docker بالوصول إلى مقبس X11:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host $t

يقوم هذا الأمر بتعيين متغير البيئة DISPLAY إلى شاشة المضيف، ويقوم بتثبيت مقبس X11، ويربط ملف .Xauthority بالحاوية. يسمح الأمر xhost +local:docker لحاوية Docker بالوصول إلى خادم X11.

استخدام Docker مع واجهة مستخدم رسومية (GUI)

الآن يمكنك عرض التطبيقات الرسومية داخل حاوية Docker الخاصة بك. على سبيل المثال، يمكنك تشغيل أمر CLI التالي لتصور التنبؤات من نموذج YOLO26:

yolo predict model=yolo26n.pt show=True
الاختبار

هناك طريقة بسيطة للتحقق من أن مجموعة Docker لديها وصول إلى خادم X11 وهي تشغيل حاوية ببرنامج GUI مثل xclock أو xeyes. بدلاً من ذلك، يمكنك أيضًا تثبيت هذه البرامج في حاوية Ultralytics Docker لاختبار الوصول إلى خادم X11 لخادم عرض GNU-Linux الخاص بك. إذا واجهت أي مشاكل، فكر في تعيين متغير البيئة -e QT_DEBUG_PLUGINS=1. يؤدي تعيين متغير البيئة هذا إلى تمكين إخراج معلومات التصحيح، مما يساعد في عملية استكشاف الأخطاء وإصلاحها.

عند الانتهاء من Docker GUI

إلغاء الوصول

في كلتا الحالتين، لا تنس إلغاء الوصول من مجموعة Docker عند الانتهاء.

xhost -local:docker
هل تريد عرض نتائج الصور مباشرة في Terminal؟

راجع الدليل التالي حول عرض نتائج الصور باستخدام Terminal


أنت الآن جاهز لاستخدام Ultralytics مع Docker ومستعد للاستفادة من قدراته. لطرق التثبيت البديلة، راجع وثائق التشغيل السريع لـ Ultralytics.

الأسئلة الشائعة

كيف أقوم بإعداد Ultralytics مع Docker؟

لإعداد Ultralytics مع Docker، تأكد أولاً من تثبيت Docker على نظامك. إذا كان لديك NVIDIA GPU، فقم بتثبيت NVIDIA Container Toolkit لتمكين دعم GPU. ثم، اسحب أحدث صورة Ultralytics Docker من Docker Hub باستخدام الأمر التالي:

sudo docker pull ultralytics/ultralytics:latest

للحصول على خطوات مفصلة، راجع دليل التشغيل السريع لـ Docker.

ما هي فوائد استخدام صور Ultralytics Docker لمشاريع تعلم الآلة؟

يضمن استخدام صور Ultralytics Docker بيئة متسقة عبر الأجهزة المختلفة، مع تكرار نفس البرنامج والتبعيات. هذا مفيد بشكل خاص للتعاون عبر الفرق، وتشغيل النماذج على أجهزة متنوعة، والحفاظ على قابلية التكرار. للتدريب المعتمد على GPU، توفر Ultralytics صور Docker محسّنة مثل Dockerfile للاستخدام العام لـ GPU و Dockerfile-jetson لأجهزة NVIDIA Jetson. استكشف Ultralytics Docker Hub لمزيد من التفاصيل.

كيف يمكنني تشغيل Ultralytics YOLO في حاوية Docker مع دعم GPU؟

أولاً، تأكد من تثبيت وتكوين NVIDIA Container Toolkit. ثم، استخدم الأمر التالي لتشغيل Ultralytics YOLO مع دعم GPU:

sudo docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics/ultralytics:latest # all GPUs

يقوم هذا الأمر بإعداد حاوية Docker مع وصول GPU. لمزيد من التفاصيل، راجع دليل التشغيل السريع لـ Docker.

كيف يمكنني تصور نتائج تنبؤ YOLO في حاوية Docker مع خادم عرض؟

لتصور نتائج تنبؤ YOLO باستخدام GUI في حاوية Docker، تحتاج إلى السماح لـ Docker بالوصول إلى خادم العرض الخاص بك. بالنسبة للأنظمة التي تعمل بنظام X11، يكون الأمر:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

بالنسبة للأنظمة التي تعمل بنظام Wayland، استخدم:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
  --net=host -it --ipc=host ultralytics/ultralytics:latest

يمكن العثور على مزيد من المعلومات في قسم تشغيل تطبيقات واجهة المستخدم الرسومية (GUI) في حاوية Docker.

هل يمكنني تثبيت الأدلة المحلية في حاوية Ultralytics Docker؟

نعم، يمكنك تثبيت الأدلة المحلية في حاوية Ultralytics Docker باستخدام العلم -v:

sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

استبدل /path/on/host بالدليل الموجود على جهازك المحلي و /path/in/container بالمسار المطلوب داخل الحاوية. يسمح لك هذا الإعداد بالعمل مع ملفاتك المحلية داخل الحاوية. لمزيد من المعلومات، راجع قسم ملاحظة حول إمكانية الوصول إلى الملفات.

التعليقات