تكامل Huawei Ascend مع Ultralytics YOLO#
يتطلب نشر نماذج الرؤية الحاسوبية على Huawei Ascend AI Processors تجميعها في تنسيق النموذج غير المتصل .om الذي ينفذه Ascend AI Core. يتيح لك تصدير نماذج Ultralytics YOLO إلى Ascend إجراء استدلال سريع ومنخفض استهلاك الطاقة على لوحات التطوير Atlas وأجهزة OrangePi AIPro المستخدمة في تطبيقات الروبوتات والفحص الصناعي والكاميرات الذكية.
ما هو Huawei Ascend؟#
Huawei Ascend عائلة من AI Processors مقترنة بـ CANN (بنية الحوسبة للشبكات العصبية)، وهي حزمة الحوسبة غير المتجانسة من Huawei. تتضمن CANN ATC (مُصرِّف موتر Ascend)، وهي أداة تعمل على المضيف وتحول رسم ONNX القياسي إلى نموذج غير متصل خاص بالعتاد .om يستهدف Ascend AI Core.
بما أن ATC يعمل بالكامل على المضيف، يمكنك تجميع النماذج على جهاز Linux عادي بمعمارية x86-64 أو ARM64 من دون توصيل أي عتاد Ascend، ثم نسخ .om الناتج إلى الجهاز المستهدف لإجراء الاستدلال.
التدريب على Ascend NPUs#
تدعم Ultralytics التدريب باستخدام NPU واحد أو عدة NPUs مع torch_npu، بما في ذلك AMP والتحقق وحفظ نقاط التحقق والاستئناف وAutoBatch. حدّد NPU واحدًا باستخدام device=npu:0 أو عدة NPUs باستخدام device=npu:0,1؛ ويستخدم التدريب الموزع HCCL.
ثبّت إصدارات متوافقة من CANN وPyTorch وtorch_npu، ثم حمّل بيئة CANN أولًا. راجع قسم التدريب على Ascend NPU للاطلاع على أمثلة التثبيت والاستخدام.
تنسيق التصدير إلى Ascend#
يكتب مُصدِّر Ultralytics أولًا رسمًا وسيطًا بتنسيق ONNX، ثم يستدعي ATC لتجميعه من أجل SoC الذي تستهدفه باستخدام الوسيطة name. والنتيجة مجلد نموذج مستقل يحتوي على الملف الثنائي .om وبيانات Ultralytics الوصفية.
الميزات الرئيسية لنماذج Ascend#
- Ascend AI Core مخصص: تُنفَّذ النماذج المجمعة على Ascend AI Core بدلًا من CPU المضيف، ما يوفر معدل نقل أعلى بكثير لخطوط معالجة الكاميرات في الوقت الفعلي.
- التجميع على المضيف: لا يحتاج ATC إلى NPU متصل، لذا يمكن إجراء التصدير في CI أو داخل الحاويات أو على حاسوب محمول.
- ONNX أولًا: يُمرَّر تصدير Ultralytics ONNX القياسي مباشرةً إلى سلسلة أدوات CANN من دون تنسيق وسيط مملوك.
- أشكال ثابتة: يُثبَّت شكل الإدخال داخل
.omوقت التجميع، ما يلغي الحمل الزائد للتفاوض على الشكل وقت التشغيل. - الاستهداف لأجهزة متعددة: يمكن تجميع رسم ONNX نفسه لأي SoC مدعوم بتغيير
name.
المهام المدعومة#
يدعم تصدير Huawei Ascend جميع مهام Ultralytics السبع. ولا يتوفر التقسيم الدلالي وتقدير العمق إلا مع YOLO26، وهي العائلة الوحيدة التي تتضمن رأسي المهام هذين.
الأجهزة المدعومة#
مرّر SoC المستهدف باستخدام name؛ إذ يضمّنه ATC في .om بوصفه --soc_version، ولذلك يجب أن يطابق اللوحة التي ستنشر النموذج عليها. ويمكنك محليًا التجميع لأي SoC يوفر تثبيت CANN الخاص بك نوى له. تدعم Ultralytics Platform أهداف Ascend310P1 وAscend310P3 وAscend310B1 وAscend310B4.
name | الأجهزة | التصدير المحلي | المنصة |
|---|---|---|---|
Ascend310P3 | Atlas 300I Pro، Atlas 300V Pro | ✅ | ✅ |
Ascend310P1 | Atlas 300I | ✅ | ✅ |
Ascend310B4 | OrangePi AIPro 20T، Atlas 200I A2 | ✅ | ✅ |
Ascend310B1 | OrangePi AIPro 8T | ✅ | ✅ |
التصدير إلى 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 وتبعياته.
لا يستطيع ATC التجميع إلا لعائلات SoC المثبتة نوى العمليات الخاصة بها. تفشل حزمة أدوات لا تحتوي إلا على نوى ascend310p مع No supported Ops kernel and engine are found for ... Conv2D عند طلب هدف Ascend310B4. ثبّت حزمة Ascend-cann-kernels-<soc> المطابقة للجهاز الذي ستنشر النموذج عليه.
الاستخدام#
يدعم تنسيق Ascend أوضاع التصدير والتنبؤ والتحقق. يُجرى الاستدلال والتحقق على عتاد Ascend. صدّر نموذجك، ثم حمّل النموذج المُصدَّر لإجراء الاستدلال أو التحقق من دقته.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to Ascend format for an Atlas 200I / OrangePi AIPro board
model.export(format="ascend", name="Ascend310B4")
# Load the exported Ascend model and run inference on the device
ascend_model = YOLO("yolo26n_ascend_model")
results = ascend_model("https://ultralytics.com/images/bus.jpg")وسائط التصدير#
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'ascend' | التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع Ascend AI Processors. |
name | str | 'Ascend310B4' | SoC المستهدف المُمرَّر إلى ATC بوصفه --soc_version، مثل Ascend310P3. يُعد صالحًا أي SoC يملك تثبيت CANN الخاص بك نوى له؛ راجع الأجهزة المدعومة. ويجب أن يطابق جهاز النشر. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج، والمضمَّن في .om بوصفه شكلًا ثابتًا. |
batch | int | 1 | حجم الدفعة الثابت المجمَّع داخل النموذج غير المتصل. |
quantize | int | 16 | دقة التكميم. يقتصر تصدير Ascend على FP16 ويفعّل تلقائيًا 16 إذا لم يُحدَّد. ويستبدل الرايتين المهجورتين half/int8. |
opset | int | 17 | إصدار ONNX opset للرسم الوسيط. ويُحدَّد عند 17، وهو أعلى إصدار يقبله محلل CANN لـ ONNX. |
simplify | bool | True | يبسّط الرسم البياني الوسيط لـ ONNX باستخدام onnxslim. |
nms | bool | False | يضيف Non-Maximum Suppression إلى نماذج الكشف والتقسيم والوضعية وOBB المدعومة. |
لا يقبل 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:
# 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.
سير العمل الموصى به#
- درّب نموذجك باستخدام وضع التدريب في Ultralytics، أو ابدأ من نقطة تحقق مُدرَّبة مسبقًا.
- صدّر إلى Ascend على أي مضيف Linux مثبت عليه CANN، مع تمرير
nameالمطابق لـ SoC المستهدف. - انسخ مجلد النموذج المُصدَّر إلى جهاز Ascend.
- انشر باستخدام وقت تشغيل CANN و
ais_benchلإجراء الاستدلال على الجهاز.
التطبيقات الواقعية#
تلائم نماذج YOLO التي تعمل على عتاد Ascend نطاقًا واسعًا من تطبيقات الرؤية المضمنة والصناعية:
- الأتمتة الصناعية: فحص الجودة عالي السرعة واكتشاف العيوب على خطوط الإنتاج.
- المراقبة الذكية: اكتشاف الأجسام من عدة كاميرات في الوقت الفعلي على بوابات الحافة دون خادم مركزي.
- الروبوتات: إدراك مدمج للروبوتات المتنقلة المستقلة والأذرع التعاونية.
- المدن الذكية: مراقبة حركة المرور وتحليل المشاة على وحدات الطرق منخفضة استهلاك الطاقة.
الملخص#
في هذا الدليل، تعلمت كيفية تدريب Ultralytics YOLO على Ascend NPUs من Huawei وتصدير النماذج إلى تنسيق Ascend .om باستخدام مُصرِّف CANN ATC. يُجرى التصدير بالكامل على المضيف، وينتج مجلد نموذج مستقلًا، ويستهدف أي Ascend SoC مدعوم من خلال وسيطة 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 Platform.