ONNX (Open Neural Network Exchange)
استكشف تنسيق تبادل الشبكة العصبية المفتوح (ONNX). تعلم كيفية تصدير Ultralytics YOLO26 إلى ONNX للنشر السريع عبر المنصات وتحسين الأجهزة.
ONNX (Open Neural Network Exchange) هو تنسيق مفتوح المصدر مصمم لتمثيل نماذج التعلم الآلي، مما يتيح إمكانية التشغيل البيني بين مختلف أطر والأدوات الخاصة بالذكاء الاصطناعي. وهو بمثابة مترجم عالمي للتعلم العميق، مما يمكن المطورين من بناء النماذج في إطار عمل واحد - مثل PyTorch أو TensorFlow أو Scikit-learn - ونشرها بسلاسة في بيئة أخرى محسّنة للاستدلال. ومن خلال تحديد مجموعة مشتركة من العوامل وتنسيق ملف قياسي، يلغي ONNX الحاجة إلى نصوص تحويل معقدة ومخصصة كانت مطلوبة تاريخياً لنقل النماذج من البحث إلى الإنتاج. تعتبر هذه المرونة بالغة الأهمية لسير عمل الذكاء الاصطناعي الحديث، حيث قد يتم التدريب على وحدات معالجة رسومية سحابية قوية بينما يستهدف نشر النماذج أجهزة متنوعة مثل الأجهزة الطرفية، أو الهواتف المحمولة، أو متصفحات الويب.
دور ONNX في الذكاء الاصطناعي الحديث#
في المشهد المتطور بسرعة للـ artificial intelligence، غالباً ما يستخدم الباحثون والمهندسون أدوات مختلفة لمراحل مختلفة من دورة حياة التطوير. قد يفضل عالم البيانات مرونة PyTorch للتجريب والتدريب، بينما يحتاج مهندس الإنتاج إلى الأداء المحسّن لـ TensorRT أو OpenVINO للنشر. بدون تنسيق تبادل قياسي، يكون نقل النموذج بين هذه النظام البيئية أمراً صعباً وعرضة للأخطاء.
يسد ONNX هذه الفجوة من خلال توفير تعريف مشترك لرسم بياني للحساب. عند تصدير النموذج إلى ONNX، يتم تسلسله في تنسيق يلتقط بنية الشبكة (الطبقات، الاتصالات) والمعلمات (الأوزان، التحيزات) بطريقة مستقلة عن إطار العمل. يسمح هذا لمحركات الاستدلال المصممة خصيصاً لتسريع الأجهزة - مثل ONNX Runtime - بتنفيذ النموذج بكفاءة عبر منصات متعددة، بما في ذلك Linux وWindows وmacOS وAndroid وiOS.
الفوائد الرئيسية لاستخدام ONNX#
يوفر اعتماد تنسيق Open Neural Network Exchange العديد من المزايا الاستراتيجية لمشاريع الذكاء الاصطناعي:
- إمكانية التشغيل البيني لأطر العمل: يمكن للمطورين التبديل بين أطر العمل دون الوقوع في أسر نظام بيئي واحد. يمكنك تدريب نموذج باستخدام Ultralytics Python API السهل الاستخدام وتصديره للاستخدام في تطبيق C++ أو بيئة JavaScript تعتمد على الويب.
- تحسين الأجهزة: توفر العديد من الشركات المصنعة للأجهزة موفري تنفيذ متخصصين يتصلون بـ ONNX. هذا يعني أنه يمكن تسريع ملف
.onnxواحد على وحدات معالجة الرسوميات من NVIDIA، أو وحدات المعالجة المركزية من Intel، أو وحدات المعالجة العصبية للأجهزة المحمولة (NPUs) باستخدام أدوات مثل OpenVINO أو CoreML. - استدلال أسرع: يطبق ONNX Runtime تحسينات على الرسم البياني - مثل دمج العقد وطي الثوابت - والتي يمكن أن تقلل بشكل كبير من inference latency. هذا أمر بالغ الأهمية للتطبيقات في الوقت الفعلي مثل autonomous vehicles أو خطوط التصنيع عالية السرعة.
- نشر مبسط: بدلاً من الحفاظ على خطوط أنابيب نشر منفصلة لكل إطار عمل تدريبي، يمكن فرق الهندسة توحيد المعايير على ONNX كنسيق للتسليم، مما يبسط عمليات ModelOps.
تطبيقات العالم الحقيقي#
تجعل تعدد استخدامات ONNX منه عنصراً أساسياً في مختلف الصناعات. فيما يلي مثالان ملموسان على تطبيقه:
ذكاء الحافة (Edge AI) على الأجهزة المحمولة#
فكر في تطبيق محمول مصمم لـ real-time crop health monitoring. قد يتم تدريب النموذج على خادم سحبي قوي باستخدام مجموعة بيانات كبيرة من صور النباتات. ومع ذلك، يحتاج التطبيق إلى العمل دون اتصال بالإنترنت على هاتف ذكي للمزارع. من خلال تصدير النموذج المدرب إلى ONNX، يمكن للمطورين دمج في التطبيق المحمول باستخدام ONNX Runtime Mobile. يسمح هذا لمعالج الهاتف بتشغيل object detection محلياً، وتحديد الآفات أو الأمراض فوراً دون الحاجة إلى اتصال بالإنترنت.
الاستدلال عبر الويب والمنصات#
في التجارة الإلكترونية، قد تستخدم ميزة "القياس الافتراضي" pose estimation لتراكب الملابس على تغذي كاميرا الويب الخاصة بالمستخدم. قد يحدث تدريب هذا النموذج في Python، ولكن هدف النشر هو متصفح الويب. باستخدام ONNX، يمكن تحويل النموذج وتشغيله مباشرة في متصفح المستخدم عبر ONNX Runtime Web. يستفيد هذا من إمكانيات جهاز العميل (WebGL أو WebAssembly) لتنفيذ مهام computer vision، مما يضمن تجربة سلسة وتحافظ على الخصوصية نظراً لأن بيانات الفيديو لا تترك أبداً كمبيوتر المستخدم.
مقارنة بمصطلحات ذات صلة#
من المفيد التمييز بين ONNX وتنسيقات وأدوات النماذج الأخرى:
- مقابل TensorRT: بينما ONNX هو تنسيق تبادل، فإن TensorRT هو محرك استدلال ومُحسِّن خصيصاً لوحدات معالجة الرسوميات من NVIDIA. يتضمن سير العمل الشائع تصدير نموذج إلى ONNX أولاً، ثم تحليل ملف ONNX هذا في TensorRT لتحقيق أقصى إنتاجية على أجهزة NVIDIA.
- مقابل TensorFlow SavedModel: SavedModel هو تنسيق التسلسل الأصلي لـ TensorFlow. على الرغم من قوته داخل نظام Google البيئي، إلا أنه أقل توافقاً عالمياً مقارنة بـ ONNX. غالباً ما توجد أدوات لتحويل SavedModels إلى ONNX للحصول على دعم أوسع للمنصات.
- مقابل CoreML: CoreML هو إطار عمل Apple للتعلم الآلي على الجهاز. على الرغم من تميزهما، يتم تحويل النماذج بشكل متكرر من PyTorch إلى ONNX، ثم من ONNX إلى CoreML (أو مباشرة) للتشغيل بكفاءة على هواتف iPhone وأجهزة iPad.
التصدير إلى ONNX مع Ultralytics#
يعمل النظام البيئي Ultralytics على تبسيط عملية تحويل النماذج الحديثة مثل YOLO26 إلى تنسيق ONNX. وظيفة التصدير مدمجة مباشرة في المكتبة، وتتعامل مع اجتياز الرسم البياني المعقد وتعيين العوامل تلقائياً.
يوضح المثال التالي كيفية تصدير نموذج Ultralytics YOLO26 مدرب مسبقًا إلى تنسيق ONNX للنشر:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")بمجرد التصدير، يمكن استخدام ملف .onnx هذا في Ultralytics Platform للإدارة أو نشره مباشرة على الأجهزة الطرفية باستخدام ONNX Runtime، مما يجعل رؤية الكمبيوتر عالية الأداء متاحة في أي بيئة تقريباً.






