Meet YOLO26: next-gen vision AI.

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

Ultralytics Docker Package Visual

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

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

Link to this sectionما ستتعلمه#

  • إعداد 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 🎉

Link to this sectionالمتطلبات الأساسية#

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

Link to this sectionإعداد Docker مع دعم NVIDIA#

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

nvidia-smi

Link to this sectionتثبيت 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

Link to this sectionالتحقق من NVIDIA Runtime مع Docker#

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

docker info | grep -i runtime

Link to this sectionتثبيت صور 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 مع جميع تبعيات تنسيقات التصدير مثبتة مسبقاً لتحويل النماذج والمقارنة المرجعية (benchmarking).

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

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

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

Link to this sectionتشغيل Ultralytics في حاوية Docker#

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

Link to this sectionباستخدام CPU فقط#

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

Link to this sectionباستخدام 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 الخاصة بالمضيف.

Link to this sectionملاحظة حول الوصول إلى الملفات#

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

# 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.

Link to this sectionاستمرار مخرجات التدريب#

يتم حفظ مخرجات التدريب في /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 على جهازك المضيف.

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

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

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

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

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

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

Link to this sectionتشغيل حاوية Docker مع واجهة رسومية (GUI)#

مثال
استخدم GPUs

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

علامة وقت تشغيل Docker (runtime flag)

إذا كان تثبيت 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.

Link to this sectionاستخدام 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. يؤدي تعيين متغير البيئة هذا إلى تمكين إخراج معلومات التصحيح، مما يساعد في عملية استكشاف الأخطاء وإصلاحها.

Link to this sectionعند الانتهاء من Docker GUI#

إلغاء الوصول

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

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

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


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

Link to this sectionالأسئلة الشائعة#

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

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

sudo docker pull ultralytics/ultralytics:latest

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

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

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

Link to this sectionكيف يمكنني تشغيل 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.

Link to this sectionكيف يمكنني تصور نتائج تنبؤ 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.

Link to this sectionهل يمكنني تركيب المجلدات المحلية داخل حاوية 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 بالمسار المطلوب داخل الحاوية. يسمح لك هذا الإعداد بالعمل مع ملفاتك المحلية داخل الحاوية. لمزيد من المعلومات، راجع قسم ملاحظة حول الوصول إلى الملفات.

التعليقات