رؤية YOLO لعام 2026:

تدريب وحدات معالجة الرسومات AMD مع Ultralytics YOLO و ROCm#

تدعم Ultralytics التدريب والتحقق والاستدلال على وحدات معالجة الرسومات AMD المتوافقة من خلال PyTorch ROCm. تعرض PyTorch عمدًا أجهزة ROCm من خلال واجهة برمجة تطبيقات Python نفسها torch.cuda المستخدمة بواسطة CUDA، لذلك لا تحتاج Ultralytics إلى نوع جهاز منفصل rocm لنماذج PyTorch الأصلية. قم بتثبيت إصدار ROCm من PyTorch، ثم حدد وحدة معالجة رسومات AMD باستخدام بناء الجملة القياسي device=0 أو device=cuda:0.

توفر AMD أيضًا تقنيات استدلال منفصلة عن PyTorch ROCm. لا يعني دعم منتج واحد من AMD دعم كل وقت تشغيل أو مسرع لـ AMD.

نظرة سريعة على الدعم#

يصف هذا الجدول حزمة Python الخاصة بـ Ultralytics المستخدمة للتدريب والتحقق والتصدير والتنبؤ.

منتج أو وقت تشغيل AMDدعم Ultralyticsالاستخدام أو الحالة
سلسلة AMD Instinct ووحدات معالجة الرسومات Radeon المدعومة مع ROCmقم بتدريب وتحقق وتشغيل نماذج PyTorch الأصلية باستخدام device=0 أو device=cuda:0.
ROCm متعدد وحدات معالجة الرسوماتاستخدم device=0,1 أو device=[0, 1]؛ ويتبع التنفيذ الموزع مجموعة PyTorch ROCm المثبتة.
الدقة المختلطة التلقائية في ROCm (AMP)⚠️متاح عندما تجتاز إصدارات PyTorch و ROCm المثبتة فحوصات Ultralytics AMP؛ استخدم amp=False إذا كانت غير متوافقة.
تصدير ONNXالتصدير مدعوم، ولكن ملف ONNX لا يوفر بحد ذاته وقت تشغيل مُسَرَّع بواسطة AMD.
استدلال MIGraphX🚧غير متوفر في حزمة Python الحالية؛ يتم تتبع عمل التنفيذ في PR #24137.
صورة Docker الخاصة بـ AMD والتكامل المستمر لأجهزة AMD🚧يتم تتبعه أيضًا في PR #24137، ولا توفره عملية تحديد جهاز ROCm وحدها.
Windows DirectML❌ Pythonلا يوجد نظام خلفي للتدريب أو التنبؤ بـ DirectML في حزمة Python.
وحدة المعالجة العصبية Ryzen AI NPUلا يوجد تكامل أصلي لـ NPU في Ultralytics؛ سير العمل الخارجي لـ ONNX/Vitis AI يتم إدارته بواسطة المجتمع.
وحدات معالجة المركزية AMD CPUs✅ وحدة المعالجة المركزيةاستخدم device=cpu؛ هذا هو تنفيذ وحدة المعالجة المركزية (CPU) القياسي، وليس خلفية تسريع خاصة بـ AMD.
تحقق من توافق AMD و PyTorch أولاً

يعتمد توفر ROCm على وحدة معالجة الرسومات الدقيقة، ونظام التشغيل، وإصدار ROCm، وإصدار PyTorch. تأكد من الأجهزة الخاصة بك في مصفوفة توافق ROCm الخاصة بـ AMD قبل التثبيت. لا تستطيع Ultralytics إضافة دعم لجهاز لا تعرضه حزمة PyTorch ROCm المثبتة.

لماذا يستخدم ROCm أسماء أجهزة CUDA#

يستخدم إصدار ROCm من PyTorch تقنية HIP داخليًا ولكنه يعيد استخدام واجهات torch.cuda تعمدًا. على سبيل المثال، تعمل torch.cuda.is_available() و torch.cuda.device_count() و torch.cuda.get_device_name() مع وحدات معالجة الرسومات AMD المدعومة. يتيح هذا التصميم لمسار التدريب نفسه في Ultralytics خدمة NVIDIA CUDA و AMD ROCm دون الحاجة إلى خلفية مكررة.

راجع دلالات PyTorch HIP الرسمية للحصول على التفاصيل.

هام

في حزمة Python، استخدم device=0 أو device=cuda:0 لـ PyTorch ROCm. لا تستخدم device=rocm:0؛ وليست rocm نوع جهاز PyTorch.

تثبيت PyTorch ROCm#

  1. تحقق من ظهور نظام التشغيل ووحدة معالجة الرسومات لديك في مصفوفة توافق ROCm.

  2. استخدم محدد تثبيت PyTorch لاختيار إصدار ROCm الذي يتوافق مع إصدار ROCm المثبت لديك.

  3. قم بتثبيت Ultralytics بعد PyTorch:

    pip install ultralytics
  4. تحقق من أن PyTorch يرى وحدة معالجة الرسومات AMD:

    import torch
    
    print(torch.cuda.is_available())
    print(torch.cuda.get_device_name(0))
    print(torch.version.hip)

يجب أن يُرجع torch.cuda.is_available() القيمة True، ويجب أن يحدد اسم الجهاز وحدة معالجة الرسومات AMD الخاصة بك، ويجب أن يبلغ torch.version.hip عن إصدار HIP المقدم بواسطة إصدار ROCm.

التدريب على وحدة معالجة رسومات AMD#

استخدم نفس وسائط الجهاز المستخدمة في وضع التدريب في Ultralytics القياسي.

تدريب ROCm
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on the first AMD GPU exposed by PyTorch ROCm
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=0)

# Train across two AMD GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

تستخدم التحقق والتنبؤ نفس تحديد الجهاز:

yolo detect val model=path/to/best.pt data=coco8.yaml device=0
yolo predict model=path/to/best.pt source=path/to/image.jpg device=0

توافق الدقة المختلطة التلقائية (AMP)#

تُمكّن Ultralytics تقنية AMP افتراضيًا وتقارن بين نتائج الدقة الكاملة والدقة المختلطة قبل التدريب. إذا اكتشف الفحص نتائج غير متوافقة، يتم تعطيل AMP لمنع فقدان NaN أو التدريب بـ mAP معدوم. يمكن أن يتغير سلوك ROCm AMP مع إصدارات PyTorch و ROCm، لذا استخدم amp=False عند استكشاف خطأ خاص بالمجموعة وإصلاحه:

yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=False

الميزات غير المدعومة حتى الآن#

MIGraphX#

MIGraphX هو وقت تشغيل تحسين الرسم البياني والاستدلال الخاص بـ AMD. لا يتضمن تحميل نموذج MIGraphX الأصلي في حزمة Ultralytics Python الحالية. يتم تتبع التنفيذ النشط وحاوية AMD والتبعيات والاختبارات والوثائق معًا في PR #24137. حتى يتم دمج هذا العمل وتلقي التحقق من صحة أجهزة AMD، يجب عدم وصف تصدير نموذج ONNX على أنه دعم أصلي لـ MIGraphX في حزمة Python.

DirectML#

لا تحتوي حزمة Ultralytics Python على خلفية DirectML للتدريب أو التنبؤ على نظام التشغيل Windows. تختلف DirectML عن ROCm، ولا تؤدي بيئة ROCm قيد التشغيل إلى تمكين device=directml.

وحدة المعالجة العصبية Ryzen AI NPU#

لا يتم توفير وحدات المعالجة العصبية Ryzen AI NPU من خلال PyTorch ROCm وليست أجهزة أصلية لـ Ultralytics. قد تقوم سير العمل الخاصة بالمجتمع بتصدير نماذج YOLO إلى ONNX وتشغيلها باستخدام أدوات Ryzen AI أو Vitis AI الخارجية من AMD، ولكن وقت التشغيل هذا، والتحويل، وتوافق الأجهزة تقع خارج مسار التنفيذ المدعوم في Ultralytics.

استكشاف الأخطاء وإصلاحها#

لماذا يُرجع torch.cuda.is_available() القيمة False على نظام AMD الخاص بي؟#

قد تكون حزمة PyTorch المثبتة مخصصة لوحدة المعالجة المركزية (CPU) أو CUDA، أو قد لا يكون دعم وحدة معالجة الرسومات متاحًا في بيئة ROCm النشطة. قم بتثبيت نسخة ROCm المتطابقة من أداة اختيار PyTorch وتحقق من وحدة معالجة الرسومات مقابل مصفوفة التوافق الخاصة بـ AMD.

لماذا تقول Ultralytics CUDA بينما أمتلك وحدة معالجة رسومات AMD؟#

هذا أمر متوقع. تستخدم PyTorch ROCm واجهة برمجة التطبيقات torch.cuda وسلاسل أجهزة نمط CUDA تعمدًا لضمان التوافق مع Python. لا يزال النموذج يتم تنفيذه من خلال HIP و ROCm على وحدة معالجة الرسومات AMD.

هل يتيح تصدير ONNX تفعيل MIGraphX أو Ryzen AI تلقائيًا؟#

لا. ONNX هو تنسيق نموذج محمول. يتطلب التنفيذ المُسَرَّع وقت تشغيل متوافقًا، كما أن الأنظمة الخلفية الأصلية لـ MIGraphX و DirectML و Ryzen AI NPU غير متضمنة في حزمة Python الحالية لـ Ultralytics.

ملخص#

استخدم إصدار PyTorch ROCm متوافقًا مع device=0 أو device=cuda:0 لتدريب ووحدات معالجة الرسومات AMD المدعومة والتحقق منها والاستدلال بها. تعامل مع MIGraphX و DirectML و Ryzen AI NPU كقدرات منفصلة: لا يتم تمكين أي منها مجرد تثبيت ROCm أو تصدير نموذج ONNX.

المساهمون

التعليقات