Link to this sectionدليل التشغيل السريع لـ Docker الخاص بـ Ultralytics#
يُعد هذا الدليل مقدمة شاملة لإعداد بيئة Docker لمشاريعك في Ultralytics. Docker عبارة عن منصة لتطوير التطبيقات وشحنها وتشغيلها في حاويات. إنها مفيدة بشكل خاص لضمان تشغيل البرنامج دائماً بنفس الطريقة، بغض النظر عن مكان نشره. لمزيد من التفاصيل، تفضل بزيارة مستودع Ultralytics Docker على Docker Hub.
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-smiLink 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 dockerLink to this sectionالتحقق من NVIDIA Runtime مع Docker#
قم بتشغيل docker info | grep -i runtime للتأكد من ظهور nvidia في قائمة أنظمة التشغيل:
docker info | grep -i runtimeLink 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 $tLink to this sectionتشغيل Ultralytics في حاوية Docker#
إليك كيفية تنفيذ حاوية Ultralytics Docker:
Link to this sectionباستخدام CPU فقط#
# Run without GPU
sudo docker run -it --ipc=host $tLink 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#
يُستخدم 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 بالمسار المطلوب داخل الحاوية. يسمح لك هذا الإعداد بالعمل مع ملفاتك المحلية داخل الحاوية. لمزيد من المعلومات، راجع قسم ملاحظة حول الوصول إلى الملفات.