نشر YOLO26 على الأجهزة المحمولة والحافة باستخدام ExecuTorch

يتطلب نشر نماذج الرؤية الحاسوبية على أجهزة الحافة مثل الهواتف الذكية والأجهزة اللوحية والأنظمة المدمجة بيئة تشغيل محسّنة توازن بين الأداء وقيود الموارد. توفر ExecuTorch، وهي حل PyTorch لحوسبة الحافة، استنتاجاً فعالاً على الجهاز لنماذج Ultralytics YOLO.

يوضح هذا الدليل كيفية تصدير نماذج Ultralytics YOLO إلى تنسيق ExecuTorch، مما يتيح لك نشر نماذجك على الأجهزة المحمولة وأجهزة الحافة بأداء محسّن.

لماذا يتم التصدير إلى ExecuTorch؟

PyTorch ExecuTorch mobile inference framework

ExecuTorch هو حل PyTorch المتكامل لتمكين قدرات الاستنتاج على الجهاز عبر الأجهزة المحمولة وأجهزة الحافة. تم تصميم ExecuTorch ليكون قابلاً للنقل وفعالاً، ويمكن استخدامه لتشغيل برامج PyTorch على مجموعة واسعة من منصات الحوسبة.

الميزات الرئيسية لـ ExecuTorch

توفر ExecuTorch العديد من الميزات القوية لنشر نماذج Ultralytics YOLO على أجهزة الحافة:

  • تنسيق نموذج قابل للنقل: تستخدم ExecuTorch تنسيق .pte (PyTorch ExecuTorch)، وهو محسّن من حيث الحجم وسرعة التحميل على الأجهزة ذات الموارد المحدودة.

  • خلفية XNNPACK: يوفر التكامل الافتراضي مع XNNPACK استنتاجاً محسّناً للغاية على وحدات المعالجة المركزية (CPUs) للأجهزة المحمولة، مما يوفر أداءً ممتازاً دون الحاجة إلى أجهزة متخصصة.

  • دعم التكميم (Quantization): دعم مدمج لتقنيات التكميم لتقليل حجم النموذج وتحسين سرعة الاستنتاج مع الحفاظ على الدقة.

  • كفاءة الذاكرة: تعمل إدارة الذاكرة المحسّنة على تقليل استهلاك ذاكرة وقت التشغيل، مما يجعلها مناسبة للأجهزة ذات ذاكرة الوصول العشوائي (RAM) المحدودة.

  • بيانات وصفية للنموذج: تتضمن النماذج المصدّرة بيانات وصفية (حجم الصورة، أسماء الفئات، إلخ) في ملف YAML منفصل لسهولة التكامل.

خيارات النشر باستخدام ExecuTorch

يمكن نشر نماذج ExecuTorch عبر مختلف منصات الحافة والأجهزة المحمولة:

  • تطبيقات الهاتف المحمول: النشر على تطبيقات iOS و Android بأداء أصلي، مما يتيح كشف الكائنات في الوقت الفعلي في تطبيقات الهاتف المحمول.

  • الأنظمة المدمجة: التشغيل على أجهزة Linux المدمجة مثل Raspberry Pi و NVIDIA Jetson وغيرها من الأنظمة القائمة على ARM بأداء محسّن.

  • أجهزة الحافة المعتمدة على الذكاء الاصطناعي (Edge AI): النشر على أجهزة حافة مخصصة للذكاء الاصطناعي مع وكلاء مخصصين لتسريع الاستنتاج.

  • أجهزة إنترنت الأشياء (IoT): التكامل في أجهزة إنترنت الأشياء للاستنتاج على الجهاز دون الحاجة إلى اتصال بالسحابة.

تصدير نماذج Ultralytics YOLO26 إلى ExecuTorch

يؤدي تحويل نماذج Ultralytics YOLO26 إلى تنسيق ExecuTorch إلى تمكين النشر الفعال على الأجهزة المحمولة وأجهزة الحافة.

التثبيت

يتطلب تصدير ExecuTorch إصدار Python 3.10 أو أحدث وتبعيات محددة:

التثبيت
# Install Ultralytics package
pip install ultralytics

للحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت YOLO26. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، فاستشر دليل المشكلات الشائعة للحصول على الحلول والنصائح.

الاستخدام

يعد تصدير نماذج YOLO26 إلى ExecuTorch أمراً مباشراً:

الاستخدام
from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo26n_executorch_model' directory

# Load the exported ExecuTorch model
executorch_model = YOLO("yolo26n_executorch_model")

# Run inference on a single image
results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")

تنشئ عمليات تصدير ExecuTorch دليلاً يتضمن ملف .pte وبيانات وصفية. استخدم بيئة تشغيل ExecuTorch في تطبيق الهاتف المحمول أو التطبيق المدمج الخاص بك لتحميل نموذج .pte وإجراء الاستنتاج.

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

عند التصدير إلى تنسيق ExecuTorch، يمكنك تحديد الوسيطات التالية:

المعاملالنوعالافتراضيالوصف
formatstr'executorch'التنسيق المستهدف للنموذج الذي تم تصديره، مما يحدد التوافق مع بيئات النشر المختلفة.
imgszint أو tuple640حجم الصورة المطلوب لمدخلات النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو صفاً (height, width) لأبعاد محددة.
batchint1يحدد حجم استدلال دفعة النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict.
devicestrNoneيحدد الجهاز للتصدير: GPU (device=0)، CPU (device=cpu)، MPS لمعالجات Apple silicon (device=mps).

هيكل المخرجات

ينشئ تصدير ExecuTorch دليلاً يحتوي على النموذج والبيانات الوصفية:

yolo26n_executorch_model/
├── yolo26n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

استخدام نماذج ExecuTorch المصدّرة

بعد تصدير نموذجك، ستحتاج إلى دمجه في تطبيقك المستهدف باستخدام بيئة تشغيل ExecuTorch.

تكامل الهاتف المحمول

بالنسبة لتطبيقات الهاتف المحمول (iOS/Android)، ستحتاج إلى:

  1. إضافة بيئة تشغيل ExecuTorch: تضمين مكتبة بيئة تشغيل ExecuTorch في مشروع الهاتف المحمول الخاص بك
  2. تحميل النموذج: تحميل ملف .pte في تطبيقك
  3. تشغيل الاستنتاج: معالجة الصور والحصول على التوقعات

مثال على تكامل 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/yolo26n.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 (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/yolo26n.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().dataAsFloatArray

Linux المدمج

بالنسبة لأنظمة Linux المدمجة، استخدم C++ API الخاص بـ ExecuTorch:

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo26n.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});

// Run inference
auto outputs = module.forward({input_tensor});

لمزيد من التفاصيل حول دمج ExecuTorch في تطبيقاتك، قم بزيارة توثيق ExecuTorch.

تحسين الأداء

تحسين حجم النموذج

لتقليل حجم النموذج للنشر:

  • استخدام نماذج أصغر: ابدأ بـ YOLO26n (نانو) للحصول على أقل مساحة ممكنة
  • خفض دقة المدخلات: استخدم أحجام صور أصغر (على سبيل المثال، imgsz=320 أو imgsz=416)
  • التكميم: تطبيق تقنيات التكميم (مدعومة في إصدارات ExecuTorch المستقبلية)

تحسين سرعة الاستنتاج

لاستنتاج أسرع:

  • خلفية XNNPACK: توفر خلفية XNNPACK الافتراضية استنتاجاً محسّناً لوحدة المعالجة المركزية (CPU)
  • تسريع الأجهزة: استخدام وكلاء خاصين بالمنصة (على سبيل المثال، CoreML لنظام iOS)
  • المعالجة المجمعة: معالجة صور متعددة عندما يكون ذلك ممكناً

المقاييس المرجعية

قام فريق Ultralytics بقياس أداء نماذج YOLO26، مقارناً السرعة والدقة بين PyTorch و ExecuTorch.

الأداء
النموذجالتنسيقالحالةالحجم (MB)metrics/mAP50-95(B)وقت الاستنتاج (مللي ثانية/صورة)
YOLO26nPyTorch5.30.4790314.80
YOLO26nExecuTorch9.40.4800142
YOLO26sPyTorch19.50.5730930.90
YOLO26sExecuTorch36.50.5780376.1
ملاحظة

وقت الاستنتاج لا يتضمن المعالجة المسبقة/اللاحقة.

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

مشكلات شائعة

Issue: Python version error

الحل: تتطلب ExecuTorch إصدار Python 3.10 أو أعلى. قم بترقية تثبيت Python الخاص بك:

# Using conda
conda create -n executorch python=3.10
conda activate executorch

Issue: Export fails during first run

الحل: قد تحتاج ExecuTorch إلى تنزيل وتجميع المكونات عند الاستخدام الأول. تأكد من أن لديك:

pip install --upgrade executorch

Issue: Import errors for ExecuTorch modules

الحل: تأكد من تثبيت ExecuTorch بشكل صحيح:

pip install executorch --force-reinstall

للحصول على المزيد من المساعدة في استكشاف الأخطاء وإصلاحها، قم بزيارة مشكلات Ultralytics GitHub أو توثيق ExecuTorch.

ملخص

يؤدي تصدير نماذج YOLO26 إلى تنسيق ExecuTorch إلى تمكين النشر الفعال على الأجهزة المحمولة وأجهزة الحافة. بفضل التكامل الأصلي مع PyTorch، ودعم المنصات المتعددة، والأداء المحسّن، تعد ExecuTorch خياراً ممتازاً لتطبيقات الذكاء الاصطناعي على الحافة.

النقاط الرئيسية:

  • توفر ExecuTorch نشراً على الحافة أصلياً لـ PyTorch مع أداء ممتاز
  • التصدير بسيط باستخدام المعامل format='executorch'
  • النماذج محسّنة لوحدات المعالجة المركزية (CPUs) للأجهزة المحمولة عبر خلفية XNNPACK
  • يدعم منصات iOS و Android و Linux المدمجة
  • يتطلب Python 3.10+ ومترجم FlatBuffers

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

كيف يمكنني تصدير نموذج YOLO26 إلى تنسيق ExecuTorch؟

قم بتصدير نموذج YOLO26 إلى ExecuTorch باستخدام Python أو CLI:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="executorch")

أو

yolo export model=yolo26n.pt format=executorch

ما هي متطلبات النظام لتصدير ExecuTorch؟

يتطلب تصدير ExecuTorch ما يلي:

  • Python 3.10 أو أعلى
  • حزمة executorch (يتم تثبيتها عبر pip install executorch)
  • PyTorch (يتم تثبيته تلقائياً مع ultralytics)

ملاحظة: أثناء التصدير الأول، ستقوم ExecuTorch بتنزيل وتجميع المكونات الضرورية بما في ذلك مترجم FlatBuffers تلقائياً.

هل يمكنني تشغيل الاستنتاج باستخدام نماذج ExecuTorch مباشرة في Python؟

تم تصميم نماذج ExecuTorch (ملفات .pte) للنشر على الأجهزة المحمولة وأجهزة الحافة باستخدام بيئة تشغيل ExecuTorch. لا يمكن تحميلها مباشرة باستخدام YOLO() للاستنتاج في Python. تحتاج إلى دمجها في تطبيقك المستهدف باستخدام مكتبات بيئة تشغيل ExecuTorch.

ما هي المنصات المدعومة من قبل ExecuTorch؟

تدعم ExecuTorch ما يلي:

  • الهاتف المحمول: iOS و Android
  • Linux المدمج: Raspberry Pi و NVIDIA Jetson وأجهزة ARM الأخرى
  • سطح المكتب: Linux و macOS و Windows (للتطوير)

كيف تقارن ExecuTorch بـ TFLite لنشر الهاتف المحمول؟

تعد كل من ExecuTorch و TFLite ممتازتين لنشر الهاتف المحمول:

  • ExecuTorch: تكامل أفضل مع PyTorch، سير عمل أصلي لـ PyTorch، نظام بيئي متنامٍ
  • TFLite: أكثر نضجاً، دعم أوسع للأجهزة، المزيد من أمثلة النشر

اختر ExecuTorch إذا كنت تستخدم بالفعل PyTorch وتريد مسار نشر أصلي. اختر TFLite لتحقيق أقصى قدر من التوافق والأدوات الناضجة.

هل يمكنني استخدام نماذج ExecuTorch مع تسريع GPU؟

نعم! تدعم ExecuTorch تسريع الأجهزة من خلال خلفيات مختلفة:

  • GPU للهاتف المحمول: عبر وكلاء Vulkan أو Metal أو OpenCL
  • NPU/DSP: عبر وكلاء خاصين بالمنصة
  • الافتراضي: XNNPACK لاستنتاج محسّن لوحدة المعالجة المركزية (CPU)

راجع توثيق ExecuTorch للحصول على إعداد خاص بالخلفية.

التعليقات