Ultralytics YOLO27:
Get Started

ابدأ باستخدام YOLOv5 🚀 في Docker#

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

للاطلاع على طرق إعداد بديلة، راجع أدلة دفتر ملاحظات Colab Open In Colab Open In Kaggle، أو آلة Deep Learning VM على GCP، أو Amazon AWS. وللحصول على نظرة عامة على استخدام Docker مع نماذج Ultralytics، راجع دليل البدء السريع لـ Docker من Ultralytics.

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

قبل البدء، تأكد من تثبيت ما يلي:

  1. Docker: نزّل Docker وثبّته من موقع Docker الرسمي. يُعد Docker ضروريًا لإنشاء الحاويات وإدارتها.
  2. برامج تشغيل NVIDIA (مطلوبة لدعم GPU): تأكد من تثبيت الإصدار 455.23 أو إصدار أحدث من برامج تشغيل NVIDIA. يمكنك تنزيل أحدث برامج التشغيل من موقع NVIDIA.
  3. مجموعة أدوات حاويات NVIDIA (مطلوبة لدعم GPU): تتيح هذه المجموعة لحاويات Docker الوصول إلى وحدات GPU من NVIDIA على جهازك المضيف. اتبع دليل تثبيت مجموعة أدوات حاويات NVIDIA الرسمي للحصول على تعليمات مفصلة.

إعداد مجموعة أدوات حاويات NVIDIA (لمستخدمي GPU)#

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

nvidia-smi

من المفترض أن يعرض هذا الأمر معلومات عن وحدات GPU وإصدار برنامج التشغيل المثبّت.

بعد ذلك، ثبّت مجموعة أدوات حاويات NVIDIA. الأوامر أدناه شائعة في الأنظمة القائمة على Debian، مثل Ubuntu، والأنظمة القائمة على RHEL، مثل Fedora/CentOS، لكن راجع الدليل الرسمي المرتبط أعلاه للحصول على تعليمات خاصة بتوزيعتك:

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 للتأكد من توفر أجهزة CDI الخاصة بـ GPU (تُنشئ خدمة nvidia-cdi-refresh التابعة لمجموعة الأدوات المواصفة وتحافظ عليها تلقائيًا في إصدارات مجموعة الأدوات >= 1.18):

nvidia-ctk cdi list

من المفترض أن تظهر إدخالات مثل nvidia.com/gpu=0 وnvidia.com/gpu=all. على Linux، تتطلب طلبات أجهزة CDI إصدار Docker >= 28.2.0 وإصدار NVIDIA Container Toolkit >= 1.18. وقد يتسبب الخيار القديم --gpus all في فقدان إمكانية الوصول إلى GPU بعد إعادة تحميل خدمة المضيف، لذا حدّث مضيفات Linux القديمة واستخدم --device بدلًا منه.

الخطوة 1: سحب صورة YOLOv5 لـ Docker#

توفر Ultralytics صور YOLOv5 الرسمية على Docker Hub. ويتتبع الوسم latest أحدث إيداع في المستودع، ما يضمن حصولك دائمًا على أحدث إصدار. اسحب الصورة باستخدام الأمر التالي:

# Define the image name with tag
t=ultralytics/yolov5:latest

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

يمكنك استعراض جميع الصور المتاحة في مستودع Ultralytics YOLOv5 على Docker Hub.

الخطوة 2: تشغيل حاوية Docker#

بعد سحب الصورة، يمكنك تشغيلها كحاوية.

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

لتشغيل مثيل حاوية تفاعلي باستخدام CPU فقط، استخدم الخيار -it. ويتيح الخيار --ipc=host مشاركة مساحة أسماء IPC الخاصة بالمضيف، وهو أمر مهم للوصول إلى الذاكرة المشتركة.

# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $t

استخدام GPU#

لتمكين الوصول إلى GPU داخل الحاوية، استخدم خيار CDI --device nvidia.com/gpu=.... ويتطلب ذلك تثبيت مجموعة أدوات حاويات NVIDIA على نحو صحيح.

# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t

# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $t

راجع مرجع أمر تشغيل Docker لمزيد من التفاصيل حول خيارات الأوامر.

تركيب الأدلة المحلية#

للعمل على ملفاتك المحلية (مجموعات البيانات وأوزان النماذج وغيرها) داخل الحاوية، استخدم الخيار -v لتركيب دليل المضيف داخل الحاوية:

# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $t

استبدل /path/on/host بالمسار الفعلي على جهازك، و/path/in/container بالمسار المطلوب داخل حاوية Docker (مثلًا /usr/src/datasets).

الخطوة 3: استخدام YOLOv5 🚀 داخل حاوية Docker#

أنت الآن داخل حاوية YOLOv5 قيد التشغيل في Docker! يمكنك من هنا تنفيذ أوامر YOLOv5 القياسية لمختلف مهام تعلّم الآلة والتعلّم العميق، مثل كشف الأجسام.

# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training

# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy

# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection

# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export model

راجع البرنامجين التعليميين تدريب بيانات مخصصة وتصدير النماذج للاطلاع على تفاصيل الاستخدام.

تعرّف على المزيد حول مقاييس التقييم مثل Precision وRecall وmAP. وتعرّف على تنسيقات التصدير المختلفة مثل ONNX وCoreML وTFLite، واستكشف خيارات نشر النماذج المتنوعة. واحرص على إدارة أوزان النماذج بفاعلية.

Running YOLOv5 inside a Docker container on GCP

لقد أعددت YOLOv5 وشغّلته بنجاح ضمن حاوية Docker.

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

  • تشارك عمليات العامل في محمّل بيانات PyTorch الموترات عبر الذاكرة المشتركة، وحجم Docker الافتراضي البالغ 64 MB صغير جدًا. يشارك --ipc=host مقطع الذاكرة الخاص بالمضيف؛ ويُعد --shm-size=8g بديلًا إذا كنت تفضّل إبقاء الحاوية معزولة.

  • شغّل nvidia-smi على المضيف للتأكد من عمل برنامج التشغيل، وتحقّق من تثبيت مجموعة أدوات حاويات NVIDIA باستخدام nvidia-ctk cdi list، وتأكد من أن إصدار Docker هو 28.2 أو أحدث حتى يُقبل --device nvidia.com/gpu=all.

  • حمِّل أدلة المضيف باستخدام -v /path/on/host:/path/in/container، واجعل --data و--project يشيران إلى المسارات المحمّلة. تُحذف الملفات المكتوبة في مواضع أخرى داخل الحاوية عند إزالتها.

  • نعم، لكن يجب أن تتمكن الحاوية من الوصول إلى خادم عرض. راجع تعليمات X11 وWayland في دليل Ultralytics الخاص بـ Docker. في حال عدم توفر شاشة، احفظ النتائج باستخدام --save-txt أو مخرجات runs/detect/ الافتراضية بدلاً من ذلك.

التعليقات