Ultralytics YOLO27:
Get Started

تكامل Huawei Ascend مع Ultralytics YOLO#

يتطلب نشر نماذج الرؤية الحاسوبية على معالجات Huawei Ascend للذكاء الاصطناعي تجميعها إلى تنسيق النموذج غير المتصل .om الذي تنفذه نواة Ascend AI Core. يتيح تصدير نماذج Ultralytics YOLO إلى Ascend تشغيل الاستدلال بسرعة وكفاءة في استهلاك الطاقة على لوحات Atlas للمطورين وأجهزة OrangePi AIPro المستخدمة في الروبوتات والفحص الصناعي ونشر الكاميرات الذكية.

ما هو Huawei Ascend؟#

Huawei Ascend عائلة من معالجات الذكاء الاصطناعي مقترنة بـ CANN (بنية الحوسبة للشبكات العصبية)، وهي منظومة Huawei للحوسبة غير المتجانسة. تتضمن CANN ATC (مترجم Ascend للموترات)، وهو أداة تعمل على المضيف لتحويل مخطط ONNX قياسي إلى نموذج غير متصل .om خاص بالعتاد ويستهدف Ascend AI Core.

نظرًا إلى أن ATC يعمل بالكامل على المضيف، يمكنك تجميع النماذج على جهاز Linux عادي بمعمارية x86-64 أو ARM64 من دون توصيل أي عتاد Ascend، ثم نسخ .om الناتج إلى الجهاز المستهدف لإجراء الاستدلال.

التدريب على وحدات NPU من Ascend#

تدعم Ultralytics التدريب باستخدام وحدة NPU واحدة أو عدة وحدات عبر torch_npu، بما في ذلك AMP والتحقق من الصحة وحفظ نقاط التحقق والاستئناف وAutoBatch. حدّد وحدة NPU واحدة باستخدام device=npu:0 أو عدة وحدات باستخدام device=npu:0,1؛ ويستخدم التدريب الموزع HCCL. ثبّت إصدارات متوافقة من CANN وPyTorch وtorch_npu، ثم هيّئ بيئة CANN أولًا. راجع قسم التدريب على وحدات NPU من Ascend للاطلاع على أمثلة التثبيت والاستخدام.

تنسيق التصدير إلى Ascend#

يكتب المُصدِّر في Ultralytics أولًا مخطط ONNX وسيطًا، ثم يستدعي ATC لتجميعه لشريحة SoC التي تستهدفها باستخدام الوسيطة name. والنتيجة مجلد نموذج مستقل يضم الملف الثنائي .om والبيانات الوصفية الخاصة بـ Ultralytics.

الميزات الرئيسية لنماذج Ascend#

  • نواة ذكاء اصطناعي مخصصة: تُنفَّذ النماذج المُجمَّعة على Ascend AI Core بدلًا من CPU المضيف، ما يوفر إنتاجية أعلى بكثير لمسارات الكاميرات الآنية.
  • التجميع على المضيف: لا يحتاج ATC إلى توصيل وحدة NPU، لذا يمكن إجراء التصدير في CI أو داخل الحاويات أو على حاسوب محمول.
  • البدء بـ ONNX: يُمرَّر تصدير Ultralytics القياسي إلى ONNX مباشرةً إلى سلسلة أدوات CANN من دون أي تنسيق وسيط احتكاري.
  • أشكال ثابتة: يُثبَّت شكل الإدخال في .om وقت التجميع، ما يزيل عبء التفاوض على الأشكال أثناء التشغيل.
  • الاستهداف متعدد الأجهزة: يُجمَّع مخطط ONNX نفسه لأي شريحة SoC مدعومة بتغيير name.

المهام المدعومة#

يدعم تصدير Huawei Ascend مهام Ultralytics السبع جميعها. ولا يتوفر التقسيم الدلالي وتقدير العمق إلا في YOLO26، وهي العائلة الوحيدة التي توفر هذين الرأسين.

المهمةYOLOv8YOLO11YOLO26
كشف✅✅✅
تجزئة✅✅✅
دلالي❌❌✅
العمق❌❌✅
تصنيف✅✅✅
الوضعية✅✅✅
OBB✅✅✅

الأجهزة المدعومة#

مرّر شريحة SoC المستهدفة باستخدام name؛ إذ يضمّنها ATC في .om على هيئة --soc_version، لذا يجب أن تطابق اللوحة التي ستنشر النموذج عليها. يمكنك محليًا التجميع لأي شريحة SoC توفر حزمة CANN المثبتة لديك نوى لها. تدعم منصة Ultralytics الأهداف Ascend310P1 وAscend310P3 وAscend310B1 وAscend310B4.

nameالأجهزةالتصدير المحليالمنصة
Ascend310P3Atlas 300I Pro، Atlas 300V Pro✅✅
Ascend310P1Atlas 300I✅✅
Ascend310B4OrangePi AIPro 8T، Atlas 200I A2 (8 TOPS)✅✅
Ascend310B1OrangePi AIPro 20T، Atlas 200I A2 (20 TOPS)✅✅

التصدير إلى Ascend: تحويل نموذج YOLO#

ملاحظة

يتطلب التصدير إلى Ascend مجموعة أدوات CANN، المتاحة لنظام Linux فقط. يجب أن يكون المترجم atc ضمن PATH لديك — هيّئ سكربت بيئة CANN قبل التصدير، مثلًا باستخدام source /usr/local/Ascend/ascend-toolkit/set_env.sh.

التثبيت#

ثبّت Ultralytics، ثم ثبّت CANN بشكل منفصل من Huawei.

التثبيت
# Install the required package for YOLO
pip install ultralytics

توزّع Huawei مجموعة أدوات CANN، ولا تُثبَّت تلقائيًا. نزّلها من صفحة تنزيلات مجتمع Ascend، أو استخدم إحدى صور الحاويات الرسمية ascendai/cann، التي تتضمن ATC وتبعياته.

طابِق مجموعة الأدوات مع شريحة SoC المستهدفة

لا يستطيع ATC التجميع إلا لعائلات شرائح SoC المثبّتة نوى المعاملات الخاصة بها. ستفشل مجموعة أدوات لا تتضمن سوى نوى ascend310p مع No supported Ops kernel and engine are found for ... Conv2D عند طلب هدف Ascend310B4. ثبّت حزمة Ascend-cann-kernels-<soc> المطابقة للجهاز الذي ستنشر النموذج عليه.

الاستخدام#

يدعم تنسيق Ascend أوضاع التصدير والتنبؤ والتحقق. يُجرى الاستدلال والتحقق على عتاد Ascend. صدّر نموذجك، ثم حمّل النموذج المُصدَّر لإجراء الاستدلال أو التحقق من دقته.

التصدير
from ultralytics import YOLO

# ⁨تحميل نموذج YOLO26⁩
model = YOLO("yolo26n.pt")

# ⁨# تصدير النموذج إلى تنسيق Ascend للوحة Atlas 200I / OrangePi AIPro⁩
model.export(format="ascend", name="Ascend310B4")

# ⁨حمّل نموذج Ascend المُصدَّر وشغّل الاستدلال على الجهاز⁩
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")

وسيطات التصدير#

المعاملالنوعالافتراضيالوصف
formatstr'ascend'التنسيق المستهدف للنموذج المُصدَّر، الذي يحدد التوافق مع معالجات Ascend AI.
namestr'Ascend310B4'نظام SoC المستهدف الذي يُمرَّر إلى ATC بوصفه --soc_version، مثلًا Ascend310P3. أي نظام SoC تتوفر له نوى في تثبيت CANN لديك صالح؛ راجع الأجهزة المدعومة. يجب أن يطابق جهاز النشر لديك.
imgszint أو tuple640حجم الصورة المطلوب لإدخال النموذج، ويُثبَّت ضمن .om على هيئة شكل ثابت.
batchint1حجم الدفعة الثابت المُضمَّن في النموذج غير المتصل.
quantizeint16دقة التكميم. يدعم تصدير Ascend صيغة FP16 فقط، ويفعّل 16 تلقائيًا إذا لم يُحدَّد. يحل هذا الخيار محل العلامتين المهملتين half/int8.
opsetint17إصدار ONNX opset للرسم البياني الوسيط. يُحدَّد الحد الأقصى عند 17، وهو أعلى إصدار يقبله محلل CANN لـ ONNX.
simplifyboolTrueيبسّط رسم ONNX الوسيط باستخدام onnxslim.
nmsbool، اختياريNoneاختر المخرجات الأولية (None، الافتراضي)، أو NMS المضمّن (True)، أو الرأس الخالي من NMS (False).
devicestrNoneالجهاز المستخدم في خطوة تصدير ONNX الوسيطة؛ يكون CPU افتراضيًا (device=cpu). ولا يستخدمه تجميع ATC.
لماذا لا تتوفر صيغة FP32؟

لا يقبل Ascend AI Core إلا مدخلات DT_FLOAT16 وDT_INT8 لعمليات الالتفاف، لذلك لا يمكن تشغيل نموذج غير متصل بصيغة FP32 على العتاد. يؤدي طلب quantize=32 إلى ظهور خطأ بدلًا من إنشاء نموذج لا يمكن تشغيله بصمت.

لمزيد من التفاصيل حول عملية التصدير، تفضّل بزيارة صفحة وثائق Ultralytics حول التصدير.

بنية الإخراج#

بعد نجاح التصدير، يُنشأ مجلد للنموذج بالتخطيط التالي:

yolo26n_ascend_model/
├── yolo26n_Ascend310B4.om  # Compiled Ascend offline model (AI Core executable)
└── metadata.yaml           # Model metadata (classes, image size, task, etc.)

ملف .om هو النموذج غير المتصل المُجمَّع الذي تحمّله بيئة تشغيل CANN على الجهاز. يتضمن اسمه نظام SoC المستهدف ليصف العنصر الناتج نفسه؛ احتفظ بملف .om واحد لكل مجلد، إذ يختار المُحمِّل النموذج الوحيد الذي يعثر عليه فيه. يحتوي metadata.yaml على أسماء الفئات وحجم الصورة ومعلومات أخرى تستخدمها آلية الاستدلال في Ultralytics.

نشر نماذج YOLO المُصدَّرة إلى Ascend#

بعد أن تُصدِّر نموذج Ultralytics YOLO بنجاح إلى تنسيق Ascend، تتمثل الخطوة التالية في نشره على عتاد Ascend.

تثبيت وقت التشغيل#

يتطلب الاستدلال بيئة تشغيل CANN على الجهاز، إضافة إلى حزمة Python ais_bench التي تغلّف روابط pyACL الخاصة بـ CANN. أنشئ الحزمة وثبّتها من مستودع أدوات Ascend لدى Huawei Ascend tools repository:

# On the Ascend device, with CANN installed and sourced
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# Build and install the ais_bench inference wheel
git clone https://gitee.com/ascend/tools.git
cd tools/ais-bench_workload/tool/ais_bench
pip3 wheel ./backend -v
pip3 install ./aclruntime-*.whl
pip3 wheel ./ -v
pip3 install ./ais_bench-*.whl

انسخ مجلد yolo26n_ascend_model المُصدَّر إلى الجهاز، ثم شغّل الاستدلال بالطريقة نفسها التي تستخدمها مع أي تنسيق آخر من Ultralytics.

  1. درّب نموذجك باستخدام وضع التدريب من Ultralytics، أو ابدأ من نقطة تحقق مدرَّبة مسبقًا.
  2. صدِّر إلى Ascend على أي مضيف Linux مثبت عليه CANN، مع تمرير name المطابق لنظام SoC المستهدف.
  3. انسخ مجلد النموذج المُصدَّر إلى جهاز Ascend.
  4. انشر النموذج باستخدام بيئة تشغيل CANN وais_bench لإجراء الاستدلال على الجهاز.

تطبيقات واقعية#

تلائم نماذج YOLO التي تعمل على عتاد Ascend مجموعة واسعة من تطبيقات الرؤية المضمنة والصناعية:

  • الأتمتة الصناعية: فحص الجودة عالي السرعة واكتشاف العيوب على خطوط الإنتاج.
  • المراقبة الذكية: اكتشاف الأجسام في الوقت الفعلي من كاميرات متعددة على بوابات الحافة، دون خادم مركزي.
  • الروبوتات: إدراك على متن الروبوتات المتنقلة ذاتية التشغيل والأذرع التعاونية.
  • المدن الذكية: مراقبة حركة المرور وتحليل حركة المشاة على وحدات الطرق منخفضة الطاقة.

الملخص#

في هذا الدليل، تعلّمت كيفية تدريب Ultralytics YOLO على وحدات NPU من Huawei Ascend وتصدير النماذج إلى تنسيق Ascend .om باستخدام مُجمِّع CANN ATC. يُجرى التصدير بالكامل على المضيف، وينتج مجلد نموذج مستقلًا، ويستهدف أي نظام SoC مدعوم من Ascend باستخدام وسيطة واحدة هي name.

لمزيد من التفاصيل حول الاستخدام، تفضل بزيارة وثائق CANN الرسمية.

وإذا كنت ترغب أيضًا في معرفة المزيد عن تكاملات Ultralytics YOLO الأخرى، فتفضل بزيارة صفحة دليل التكامل للاطلاع على العديد من الموارد المفيدة.

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

  • ثبّت Ultralytics ومجموعة أدوات CANN، ثم حمّل بيئة CANN ليصبح atc ضمن PATH، وبعد ذلك صدّر باستخدام model.export(format="ascend", name="Ascend310B4") في Python أو yolo export model=yolo26n.pt format=ascend name=Ascend310B4 من CLI. عيّن name إلى نظام SoC الخاص بجهاز النشر.

  • لا. يعمل مُجمِّع ATC بالكامل على المضيف، لذا يمكن إجراء التجميع على جهاز Linux عادي بمعمارية x86-64 أو ARM64 دون توصيل NPU. لا تحتاج إلى عتاد Ascend إلا لتشغيل الاستدلال باستخدام .om المُصدَّر.

  • لا يتضمن تثبيت CANN لديك نوى العمليات الخاصة بنظام SoC الذي طلبته. تتضمن كل مجموعة أدوات نوى لأنظمة SoC محددة، لذا ثبّت حزمة Ascend-cann-kernels-<soc> المطابقة لهدفك، أو استخدم صورة حاوية مُعدّة لعائلة الجهاز تلك.

  • لا تقبل عمليات الالتفاف في Ascend AI Core إلا موترات DT_FLOAT16 وDT_INT8. سيتعذر تشغيل نموذج غير متصل بصيغة FP32 على العتاد، لذا يُجمّع المُصدِّر باستخدام --precision_mode=force_fp16 ويرفض طلب quantize=32 الصريح.

  • أي نظام SoC توفر مجموعة أدوات CANN المثبتة لديك نوى له، ويُحدَّد عبر الوسيطة name. راجع الأجهزة المدعومة للاطلاع على الأهداف الأربعة التي تم التحقق منها ومدى توفرها على منصة Ultralytics.

التعليقات