YOLO Vision 2026:

دليل التشغيل السريع لـ Docker الخاص بـ Ultralytics#

Ultralytics Docker Package Visual

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

إصدار صورة Docker عمليات السحب من Docker

ما ستتعلمه#

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


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

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

  • تأكد من تثبيت Docker على نظامك. إذا لم يكن مثبتاً، يمكنك تنزيله وتثبيته من موقع Docker.
  • لتسريع استخدام وحدة معالجة الرسوميات (GPU)، تأكد من أن نظامك يحتوي على NVIDIA GPU وNVIDIA drivers مثبتة. صور وحدة المعالجة المركزية (CPU) لا تتطلب أجهزة 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
sudo apt-get install -y nvidia-container-toolkit

تحقق من أجهزة CDI باستخدام Docker#

قم بتشغيل nvidia-ctk cdi list للتأكد من توفر أجهزة GPU CDI (تقوم خدمة nvidia-cdi-refresh الخاصة بمجموعة الأدوات بإنشاء المواصفات وصيانتها تلقائياً على إصدار مجموعة أدوات >= 1.18):

nvidia-ctk cdi list

يجب أن ترى إدخالات مثل nvidia.com/gpu=0 و nvidia.com/gpu=all. تظهر أجهزة CDI المكتشفة أيضاً في docker info.


تثبيت صور Ultralytics Docker#

تنشر Ultralytics الصور التالية إلى Docker Hub. يتم بناء كل صورة من ملف Dockerfile المرتبط بها بواسطة Docker publishing workflow.

الوسم (Tag)المنصة والغرضالمصدر
latestLinux AMD64 مع CUDA للتدريب والاستدلال باستخدام GPUDockerfile
latest-exportLinux AMD64 مع CUDA وتبعيات التصدير للتحويل واختبار الأداءDockerfile-export
latest-pythonصورة Linux AMD64 خفيفة لـ Python من أجل الاستدلال عبر CPUDockerfile-python
latest-python-exportصورة Linux AMD64 CPU مع تبعيات التصديرDockerfile-python-export
latest-cpuصورة Linux AMD64 CPU مع استخدام Bash كأمر افتراضيDockerfile-cpu
latest-jupyterصورة Linux AMD64 CPU مع JupyterLab ودفاتر تعليمات UltralyticsDockerfile-jupyter
latest-arm64صورة Linux ARM64 CPU لمعالجات Apple silicon، وRaspberry Pi، وأنظمة ARM64 الأخرىDockerfile-arm64
latest-nvidia-arm64Linux ARM64 مع دعم NVIDIA GPU لـ Jetson AGX Thor، وDGX Spark، وJetPack 7، وDGX OSDockerfile-nvidia-arm64
latest-jetson-jetpack6Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بنظام JetPack 6Dockerfile-jetson-jetpack6
latest-jetson-jetpack5Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بنظام JetPack 5Dockerfile-jetson-jetpack5
latest-jetson-jetpack4Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بنظام JetPack 4Dockerfile-jetson-jetpack4
latest-runnerصورة Linux AMD64 CUDA لمشغل (runner) GPU ذاتي الاستضافة على GitHub ActionsDockerfile-runner
latest-runner-cpuصورة Linux AMD64 لمشغل (runner) CPU ذاتي الاستضافة على GitHub ActionsDockerfile-runner-cpu

تتعقب الوسوم التي تبدأ بـ latest أحدث إصدار منشور في الفرع الرئيسي (main branch). تستبدل الوسوم ذات الإصدارات البادئة latest بإصدار من Ultralytics، مثل VERSION أو VERSION-cpu أو VERSION-jetson-jetpack6. استخدم وسم إصدار محدد للحصول على بيئة قابلة للتكرار.

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

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest

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

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

باستخدام CPU فقط#

# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpu

باستخدام GPUs#

# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest

يقوم العلم -it بتعيين pseudo-TTY وإبقاء stdin مفتوحاً، مما يسمح لك بالتفاعل مع الحاوية. يتيح العلم --ipc=host مشاركة مساحة اسم IPC الخاصة بالمضيف، وهو أمر ضروري لمشاركة الذاكرة بين العمليات. يمنح العلم --device nvidia.com/gpu=... الحاوية إمكانية الوصول إلى وحدات GPU الخاصة بالمضيف من خلال CDI.

استخدم CDI بدلاً من `--gpus all`

على Linux، تتطلب طلبات جهاز CDI استخدام Docker >= 28.2.0 (حيث يتم تمكين CDI افتراضياً) وnvidia-container-toolkit >= 1.18 (لإنشاء مواصفات CDI تلقائياً). قم بترقية مضيفات Linux القديمة قبل تشغيل حاويات GPU. يمكن أن يؤدي استخدام العلامة القديمة --gpus all إلى فقدان الوصول إلى GPU (خطأ: Failed to initialize NVML: Unknown Error) عند إعادة تحميل المضيف لـ systemd أثناء تحديثات الحزم الروتينية (nvidia-container-toolkit#48). تتضمن طلبات --device الخاصة بـ CDI عقد الجهاز في إعدادات الحاوية، لذا فإن الحاويات طويلة الأمد مثل عمال التدريب (training workers) أو مشغلات CI تحافظ على الوصول إلى GPU عبر عمليات إعادة التحميل.

دعم GPU في Docker Desktop على Windows يستخدم حالياً --gpus all مع بيئة WSL 2 لأن أجهزة NVIDIA CDI غير متوفرة هناك. لا يستخدم Windows نظام systemd الخاص بـ Linux، لذا فإن فشل إعادة تحميل البرنامج الخفي (daemon-reload) المذكور أعلاه لا ينطبق هنا.

ملاحظة حول الوصول إلى الملفات#

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

# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

استبدل /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، يمكنك إضافة العلم --device nvidia.com/gpu=all إلى الأمر.

إذا كنت تستخدم 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 ultralytics/ultralytics:latest

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

استخدام Docker مع واجهة رسومية#

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

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

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

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

إلغاء الوصول

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

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

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


أنت الآن جاهز لاستخدام Ultralytics مع Docker ومستعد للاستفادة من قدراته. لاستضافة تطبيق Ultralytics على الويب ذاتياً، راجع دليل المنصة المحلية (Platform On-Premise). للحصول على طرق بديلة لتثبيت حزمة Python، راجع وثائق البدء السريع لـ Ultralytics.

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

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

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

sudo docker pull ultralytics/ultralytics:latest

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

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

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

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

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

sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUs

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

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

لتصور نتائج تنبؤ YOLO باستخدام واجهة رسومية في حاوية 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 --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

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

التعليقات