Link to this sectionتدريب وحدات معالجة الرسومات 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.
Link to this sectionنظرة سريعة على الدعم#
يصف هذا الجدول حزمة 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 المثبتة فحوصات AMP لـ Ultralytics؛ استخدم 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؛ هذا هو تنفيذ وحدة المعالجة المركزية القياسي وليس نظام تسريع خاص بـ AMD. |
يعتمد توفر ROCm على وحدة معالجة الرسومات الدقيقة، ونظام التشغيل، وإصدار ROCm، وإصدار PyTorch. تأكد من عتادك في مصفوفة توافق ROCm الخاصة بـ AMD قبل التثبيت. لا يمكن لـ Ultralytics إضافة دعم لجهاز لا توفره نسخة PyTorch ROCm المثبتة.
Link to this sectionلماذا يستخدم 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 بدون الحاجة إلى نظام خلفي مكرر.
راجع دلالات HIP في PyTorch الرسمية للتفاصيل.
في حزمة Python، استخدم device=0 أو device=cuda:0 مع PyTorch ROCm. لا تستخدم device=rocm:0؛ فكلمة rocm ليست نوع جهاز في PyTorch.
Link to this sectionتثبيت PyTorch ROCm#
-
تحقق من ظهور نظام تشغيلك ووحدة معالجة الرسومات لديك في مصفوفة توافق ROCm.
-
استخدم أداة اختيار تثبيت PyTorch لاختيار نسخة ROCm التي تتطابق مع إصدار ROCm المثبت لديك.
-
قم بتثبيت Ultralytics بعد PyTorch:
pip install ultralytics -
تحقق من أن 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.
Link to this sectionالتدريب على وحدة معالجة رسومات AMD#
استخدم نفس معاملات الجهاز الخاصة بوضع الندريب في Ultralytics القياسي.
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=0Link to this sectionتوافق الدقة المختلطة التلقائية (AMP)#
تُفَعِّل Ultralytics ميزة AMP افتراضيًا وتقارن نتائج الدقة الكاملة والدقة المختلطة قبل التدريب. إذا اكتشف الفحص نتائج غير متوافقة، يتم تعطيل AMP لمنع خسائر NaN أو التدريب بقيمة mAP تساوي صفرًا. قد يتغير سلوك AMP في ROCm مع إصدارات PyTorch و ROCm، لذا استخدم amp=False عند استكشاف أخطاء خطأ خاص بالحزمة وإصلاحها:
yolo detect train data=coco8.yaml model=yolo26n.pt device=0 amp=FalseLink to this sectionالميزات غير المدعومة حتى الآن#
Link to this sectionMIGraphX#
MIGraphX هو وقت تشغيل تحسين الرسم البياني والاستدلال من AMD. تحميل نموذج MIGraphX الأصلي غير متضمن في حزمة Python الحالية لـ Ultralytics. يتم تتبع التنفيذ النشط، وحاوية AMD، والتبعيات، والاختبارات، والتوثيق معًا في PR #24137. إلى أن يتم دمج هذا العمل وتلقي التحقق من عتاد AMD، يجب عدم وصف تصدير نموذج ONNX بأنه دعم أصلي لـ MIGraphX في حزمة Python.
Link to this sectionDirectML#
حزمة Python الخاصة بـ Ultralytics لا تحتوي على نظام خلفي لـ DirectML للتدريب أو التنبؤ على نظام Windows. تختلف DirectML عن ROCm، ولا تؤدي بيئة ROCm العاملة إلى تفعيل device=directml.
Link to this sectionوحدة المعالجة العصبية Ryzen AI NPU#
لا يتم توفير وحدات المعالجة العصبية Ryzen AI NPU من خلال PyTorch ROCm وليست أجهزة أصلية لـ Ultralytics. قد تقوم سير العمل الخاصة بالمجتمع بتصدير نماذج YOLO إلى ONNX وتشغيلها باستخدام أدوات Ryzen AI أو Vitis AI الخارجية من AMD، ولكن وقت التشغيل هذا، والتحويل، وتوافق الأجهزة تقع خارج مسار التنفيذ المدعوم في Ultralytics.
Link to this sectionاستكشاف الأخطاء وإصلاحها#
Link to this sectionلماذا تُرجع الدالة torch.cuda.is_available() القيمة False على نظام AMD الخاص بي؟#
قد تكون حزمة PyTorch المثبتة مخصصة لوحدة المعالجة المركزية (CPU) أو CUDA، أو قد لا يكون دعم وحدة معالجة الرسومات متاحًا في بيئة ROCm النشطة. قم بتثبيت نسخة ROCm المتطابقة من أداة اختيار PyTorch وتحقق من وحدة معالجة الرسومات مقابل مصفوفة التوافق الخاصة بـ AMD.
Link to this sectionلماذا تقول Ultralytics CUDA بينما أمتلك وحدة معالجة رسومات AMD؟#
هذا أمر متوقع. يستخدم PyTorch ROCm عمدًا واجهة برمجة التطبيقات torch.cuda وسلاسل الأجهزة بنمط CUDA لضمان توافق Python. لا يزال النموذج يتم تنفيذه من خلال HIP و ROCm على وحدة معالجة الرسومات AMD.
Link to this sectionهل يتيح تصدير ONNX تفعيل MIGraphX أو Ryzen AI تلقائيًا؟#
لا. ONNX هو تنسيق نموذج محمول. يتطلب التنفيذ المُسَرَّع وقت تشغيل متوافقًا، كما أن الأنظمة الخلفية الأصلية لـ MIGraphX و DirectML و Ryzen AI NPU غير متضمنة في حزمة Python الحالية لـ Ultralytics.
Link to this sectionملخص#
استخدم نسخة PyTorch ROCm متوافقة مع device=0 أو device=cuda:0 لتدريب وحدات معالجة الرسومات AMD المدعومة، والتحقق منها، والاستدلال عليها. اعتبر MIGraphX و DirectML و Ryzen AI NPU إمكانيات منفصلة: لا يتم تفعيل أي منها لمجرد تثبيت ROCm أو تصدير نموذج ONNX.