نشر YOLO26 على الأجهزة المحمولة والطرفية باستخدام ExecuTorch#
يتطلب نشر نماذج الرؤية الحاسوبية على الأجهزة الطرفية، مثل الهواتف الذكية والأجهزة اللوحية والأنظمة المضمّنة، بيئة تشغيل محسّنة توازن بين الأداء وقيود الموارد. يتيح ExecuTorch، حل PyTorch للحوسبة الطرفية، إجراء استدلال فعّال على الجهاز لنماذج Ultralytics YOLO.
يوضح هذا الدليل كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق ExecuTorch، مما يتيح لك نشر نماذجك على الأجهزة المحمولة والطرفية بأداء محسّن.
لماذا التصدير إلى ExecuTorch؟#
يُعد ExecuTorch حل PyTorch الشامل لتمكين إمكانات الاستدلال على الجهاز عبر الأجهزة المحمولة والطرفية. وقد صُمّم ExecuTorch ليكون محمولًا وفعّالًا، ويمكن استخدامه لتشغيل برامج PyTorch على مجموعة واسعة من منصات الحوسبة.
الميزات الرئيسية لـ ExecuTorch#
يوفر ExecuTorch عدة ميزات قوية لنشر نماذج Ultralytics YOLO على الأجهزة الطرفية:
-
تنسيق نموذج محمول: يستخدم ExecuTorch تنسيق
.pte(PyTorch ExecuTorch)، المحسّن من حيث الحجم وسرعة التحميل على الأجهزة محدودة الموارد. -
واجهة XNNPACK الخلفية: يوفر التكامل الافتراضي مع XNNPACK استدلالًا محسّنًا للغاية على وحدات CPU المحمولة، مما يحقق أداءً ممتازًا دون الحاجة إلى أجهزة متخصصة.
-
جاهز للتكميم: يدعم نظام ExecuTorch تقنيات التكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال؛ وتصدّر Ultralytics حاليًا نماذج FP32 عبر الواجهة الخلفية XNNPACK.
-
كفاءة الذاكرة: تقلل إدارة الذاكرة المحسّنة من البصمة الذاكرية أثناء التشغيل، مما يجعلها مناسبة للأجهزة ذات ذاكرة RAM المحدودة.
-
بيانات وصفية للنموذج: تتضمن النماذج المُصدّرة بيانات وصفية (حجم الصورة وأسماء الفئات وغير ذلك) في ملف YAML منفصل لتسهيل التكامل.
خيارات النشر باستخدام ExecuTorch#
يمكن نشر نماذج ExecuTorch على مجموعة متنوعة من المنصات الطرفية والمحمولة:
-
تطبيقات الأجهزة المحمولة: النشر على تطبيقات iOS وAndroid بأداء أصلي، مما يتيح اكتشاف الأجسام في الوقت الفعلي داخل تطبيقات الأجهزة المحمولة.
-
الأنظمة المضمّنة: التشغيل على أجهزة Linux المضمّنة مثل Raspberry Pi وNVIDIA Jetson وغيرها من الأنظمة القائمة على ARM بأداء محسّن.
-
أجهزة الذكاء الاصطناعي الطرفية: النشر على أجهزة متخصصة للذكاء الاصطناعي الطرفي باستخدام مفوّضات مخصصة لتسريع الاستدلال.
-
أجهزة إنترنت الأشياء: التكامل مع أجهزة إنترنت الأشياء لإجراء الاستدلال على الجهاز دون الحاجة إلى اتصال سحابي.
المهام المدعومة#
يدعم تصدير ExecuTorch جميع مهام Ultralytics السبع. ولا يتوفر التجزئة الدلالية وتقدير العمق إلا مع YOLO26، وهي العائلة الوحيدة التي تتضمن هذين الرأسين.
تصدير نماذج Ultralytics YOLO26 إلى ExecuTorch#
يتيح تحويل نماذج Ultralytics YOLO26 إلى تنسيق ExecuTorch نشرًا فعّالًا على الأجهزة المحمولة والطرفية.
التثبيت#
يتطلب تصدير ExecuTorch استخدام Python 3.10-3.13 وPyTorch >= 2.9.0، إلى جانب الحزمة executorch:
# Install Ultralytics package
pip install ultralyticsللحصول على إرشادات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت YOLO26. إذا واجهت أي صعوبات أثناء تثبيت الحزم المطلوبة لـ YOLO26، فراجع دليل المشكلات الشائعة للاطلاع على الحلول والنصائح.
الاستخدام#
يُعد تصدير نماذج YOLO26 إلى ExecuTorch أمرًا مباشرًا:
يدعم تنسيق ExecuTorch أوضاع التصدير والتنبؤ والتحقق. صدّر نموذجك، ثم حمّل النموذج المُصدّر لإجراء الاستدلال أو التحقق من دقته.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ExecuTorch format
model.export(format="executorch") # creates 'yolo26n_executorch_model'from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")ينشئ تصدير ExecuTorch دليلًا يتضمن ملف .pte وبيانات وصفية. استخدم بيئة تشغيل ExecuTorch في تطبيقك المحمول أو المضمّن لتحميل نموذج .pte وإجراء الاستدلال.
وسائط التصدير#
عند التصدير إلى تنسيق ExecuTorch، يمكنك تحديد الوسائط التالية:
| الوسيطة | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'executorch' | التنسيق المستهدف للنموذج المُصدَّر، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة أو صفًا (height, width) لأبعاد محددة. |
quantize | int أو str | None | تصدير FP32 ثابت. لا يدعم تصدير ExecuTorch تحويل الدقة إلى FP16 أو INT8 أو W8A16 أثناء التصدير. |
batch | int | 1 | يحدد حجم الدفعة للاستدلال في نموذج التصدير أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المُصدَّر بالتزامن في وضع predict. |
device | str | None | يحدد الجهاز المستخدم للتصدير: GPU (device=0)، أو CPU (device=cpu)، أو MPS لشرائح Apple silicon (device=mps). |
بنية المخرجات#
ينشئ تصدير ExecuTorch دليلًا يحتوي على النموذج والبيانات الوصفية:
yolo26n_executorch_model/
├── model.pte # ExecuTorch model file
└── metadata.yaml # Model metadata (classes, image size, etc.)استخدام نماذج ExecuTorch المُصدّرة#
بعد تصدير نموذجك، ستحتاج إلى دمجه في تطبيقك المستهدف باستخدام بيئة تشغيل ExecuTorch.
التكامل مع الأجهزة المحمولة#
بالنسبة إلى تطبيقات الأجهزة المحمولة (iOS/Android)، ستحتاج إلى:
- إضافة بيئة تشغيل ExecuTorch: تضمين مكتبة بيئة تشغيل ExecuTorch في مشروع الأجهزة المحمولة
- تحميل النموذج: تحميل ملف
.pteفي تطبيقك - إجراء الاستدلال: معالجة الصور والحصول على التنبؤات
iOS#
مثال على تكامل iOS (Objective-C/C++):
// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples
#include <executorch/extension/module/module.h>
using namespace ::executorch::extension;
// Load the model
Module module("/path/to/model.pte");
// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});
// Run inference
const auto result = module.forward(tensor);Android#
أضف ExecuTorch Android AAR من Maven Central:
dependencies {
implementation("org.pytorch:executorch-android:<version>")
}مثال على تكامل Android (Kotlin):
import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor
// Load the model
val module = Module.load("/path/to/model.pte")
// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)
// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArrayLinux المضمّن#
بالنسبة إلى أنظمة Linux المضمّنة، استخدم واجهة C++ API الخاصة بـ ExecuTorch:
#include <executorch/extension/module/module.h>
#include <executorch/extension/tensor/tensor.h>
using namespace ::executorch::extension;
// Load model
Module module("model.pte");
// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = from_blob(input_data.data(), {1, 3, 640, 640});
// Run inference
const auto outputs = module.forward(input_tensor);لمزيد من التفاصيل حول دمج ExecuTorch في تطبيقاتك، يُرجى زيارة وثائق ExecuTorch.
تحسين الأداء#
تحسين حجم النموذج#
لتقليل حجم النموذج عند النشر:
- استخدم نماذج أصغر: ابدأ بـ YOLO26n (nano) للحصول على أصغر بصمة ممكنة
- خفض دقة الإدخال: استخدم أحجام صور أصغر (مثل
imgsz=320أوimgsz=416) - التكميم: طبّق تقنيات التكميم (المدعومة في إصدارات ExecuTorch المستقبلية)
تحسين سرعة الاستدلال#
لإجراء استدلال أسرع:
- واجهة XNNPACK الخلفية: توفر واجهة XNNPACK الخلفية الافتراضية استدلالًا محسّنًا على CPU
- تسريع الأجهزة: استخدم المفوّضات الخاصة بالمنصة (مثل CoreML لـ iOS)
- المعالجة الدفعية: عالج صورًا متعددة متى أمكن
المعايير المرجعية#
قارن فريق Ultralytics أداء نماذج YOLO26، بمقارنة السرعة والدقة بين PyTorch وExecuTorch.
| النموذج | التنسيق | الحالة | الحجم (MB) | metrics/mAP50-95(B) | زمن الاستدلال (مللي ثانية/صورة) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4790 | 314.80 |
| YOLO26n | ExecuTorch | ✅ | 9.4 | 0.4800 | 142 |
| YOLO26s | PyTorch | ✅ | 19.5 | 0.5730 | 930.90 |
| YOLO26s | ExecuTorch | ✅ | 36.5 | 0.5780 | 376.1 |
لا يشمل زمن الاستدلال المعالجة المسبقة/اللاحقة.
استكشاف الأخطاء وإصلاحها#
المشكلات الشائعة#
المشكلة: Python version error
الحل: تتطلب ExecuTorch لغة Python 3.10 إلى 3.13. أنشئ بيئة بإصدار مدعوم:
# Using conda
conda create -n executorch python=3.10
conda activate executorchالمشكلة: Export fails during first run
الحل: تأكد من تثبيت أحدث حزمة wheel مُنشأة مسبقًا executorch:
pip install --upgrade executorchالمشكلة: Import errors for ExecuTorch modules
الحل: تأكد من تثبيت ExecuTorch بشكل صحيح:
pip install executorch --force-reinstallلمزيد من المساعدة في استكشاف الأخطاء وإصلاحها، تفضل بزيارة مشكلات Ultralytics على GitHub أو وثائق ExecuTorch.
الملخص#
يتيح تصدير نماذج YOLO26 إلى تنسيق ExecuTorch نشرًا فعّالًا على الأجهزة المحمولة والطرفية. وبفضل التكامل الأصلي مع PyTorch، والدعم متعدد المنصات، والأداء المحسّن، يُعد ExecuTorch خيارًا ممتازًا لتطبيقات الذكاء الاصطناعي الطرفية.
أهم النقاط:
- يوفر ExecuTorch نشرًا طرفيًا أصليًا لـ PyTorch بأداء ممتاز
- التصدير بسيط باستخدام المعامل
format='executorch' - تُحسّن النماذج لوحدات CPU المحمولة عبر الواجهة الخلفية XNNPACK
- يدعم منصات iOS وAndroid وLinux المضمّن
- يتطلب Python 3.10-3.13 وPyTorch >= 2.9.0
الأسئلة الشائعة#
صدّر نموذج YOLO26 إلى ExecuTorch باستخدام Python أو CLI:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="executorch")أو
yolo export model=yolo26n.pt format=executorchيتطلب تصدير ExecuTorch ما يلي:
- Python 3.10 إلى 3.13
- حزمة
executorch(تُثبّت عبرpip install executorch) - PyTorch (يُثبّت تلقائيًا مع ultralytics)
ملاحظة: تتضمن حزمة
executorchحزم wheel مُنشأة مسبقًا (مع الواجهة الخلفية XNNPACK)، لذلك لا يلزم إجراء تجميع إضافي أثناء التصدير.يمكن تحميل نماذج ExecuTorch مباشرةً باستخدام
YOLO()لإجراء الاستدلال والتحقق في Python (راجع أمثلة التنبؤ/التحقق أعلاه)، كما يمكن نشرها على الأجهزة المحمولة والطرفية باستخدام مكتبات بيئة تشغيل ExecuTorch.يدعم ExecuTorch ما يلي:
- الأجهزة المحمولة: iOS وAndroid
- Linux المضمّن: Raspberry Pi وNVIDIA Jetson وأجهزة ARM الأخرى
- أجهزة سطح المكتب: Linux وmacOS وWindows (لأغراض التطوير)
يُعد كل من ExecuTorch وLiteRT خيارين ممتازين للنشر على الأجهزة المحمولة:
- ExecuTorch: تكامل أفضل مع PyTorch، وسير عمل أصلي لـ PyTorch، ونظام بيئي متنامٍ
- LiteRT: أكثر نضجًا، ودعم أوسع للأجهزة، وأمثلة نشر أكثر، ويشغّل النموذج نفسه على Android وiOS والمتصفح
اختر ExecuTorch إذا كنت تستخدم PyTorch بالفعل وتريد مسار نشر أصليًا. واختر LiteRT لتحقيق أقصى توافق والاستفادة من أدوات ناضجة.
نعم! يدعم ExecuTorch تسريع الأجهزة عبر واجهات خلفية متنوعة:
- GPU للأجهزة المحمولة: عبر مفوّضات Vulkan أو Metal أو OpenCL
- NPU/DSP: عبر المفوّضات الخاصة بالمنصة
- الافتراضي: XNNPACK لاستدلال محسّن على CPU
راجع وثائق ExecuTorch للاطلاع على إعداد الواجهات الخلفية الخاصة بكل منصة.