ONNX (Open Neural Network Exchange)
استكشف تنسيق تبادل الشبكات العصبية المفتوح (ONNX). وتعلّم كيفية تصدير Ultralytics YOLO26 إلى ONNX للنشر السريع متعدد المنصات وتحسين العتاد.
تبادل الشبكات العصبية المفتوح (ONNX) هو تنسيق مفتوح المصدر مصمم لتمثيل نماذج تعلّم الآلة، مما يتيح إمكانية التشغيل البيني بين أطر وأدوات الذكاء الاصطناعي المختلفة. ويعمل كمترجم عالمي للتعلّم العميق، إذ يتيح للمطورين إنشاء نماذج باستخدام إطار واحد—مثل PyTorch أو TensorFlow أو Scikit-learn—ثم نشرها بسلاسة في بيئة أخرى محسّنة للاستدلال. ومن خلال تحديد مجموعة مشتركة من العوامل وتنسيق ملفات قياسي، يلغي ONNX الحاجة إلى نصوص التحويل المعقدة والمخصصة التي كانت مطلوبة تاريخيًا لنقل النماذج من مرحلة البحث إلى مرحلة الإنتاج. وتُعد هذه المرونة بالغة الأهمية لسير عمل الذكاء الاصطناعي الحديث، حيث قد يحدث التدريب على وحدات GPU سحابية قوية، بينما يستهدف النشر أجهزة متنوعة مثل الأجهزة الطرفية والهواتف المحمولة ومتصفحات الويب.
دور ONNX في الذكاء الاصطناعي الحديث#
في المشهد سريع التطور لـالذكاء الاصطناعي، غالبًا ما يستخدم الباحثون والمهندسون أدوات مختلفة في مراحل مختلفة من دورة حياة التطوير. فقد يفضّل عالم البيانات مرونة PyTorch لإجراء التجارب والتدريب، بينما يحتاج مهندس الإنتاج إلى الأداء المحسّن الذي يقدمه TensorRT أو OpenVINO للنشر. ومن دون تنسيق تبادل قياسي، يصبح نقل نموذج بين هذه المنظومات أمرًا صعبًا ومعرّضًا للأخطاء.
يسد ONNX هذه الفجوة من خلال توفير تعريف مشترك للرسم البياني الحسابي. وعند تصدير نموذج إلى ONNX، تتم تسلسلته في تنسيق يلتقط بنية الشبكة (الطبقات والاتصالات) والمعلمات (الأوزان والانحيازات) بطريقة مستقلة عن الإطار. ويتيح ذلك لمحركات الاستدلال المضبوطة خصيصًا لتسريع الأجهزة—مثل ONNX Runtime—تنفيذ النموذج بكفاءة عبر منصات متعددة، بما في ذلك Linux وWindows وmacOS وAndroid وiOS.
الفوائد الرئيسية لاستخدام ONNX#
يوفر اعتماد تنسيق تبادل الشبكات العصبية المفتوح (ONNX) عدة مزايا استراتيجية لمشروعات الذكاء الاصطناعي:
- إمكانية التشغيل البيني بين الأطر: يستطيع المطورون التبديل بين الأطر من دون الارتهان إلى منظومة واحدة. ويمكنك تدريب نموذج باستخدام واجهة Ultralytics البرمجية لـ Python وتصديره لاستخدامه في تطبيق C++ أو بيئة JavaScript قائمة على الويب.
- تحسين الأجهزة: توفر العديد من الشركات المصنّعة للأجهزة موفّري تنفيذ متخصصين يتكاملون مع ONNX. وهذا يعني إمكانية تسريع ملف
.onnxواحد على وحدات GPU من NVIDIA أو وحدات CPU من Intel أو وحدات NPU المحمولة (وحدات المعالجة العصبية) باستخدام أدوات مثل OpenVINO أو CoreML. - استدلال أسرع: يطبّق ONNX Runtime تحسينات على الرسم البياني—مثل دمج العقد وطيّ الثوابت—يمكنها تقليل زمن استجابة الاستدلال بدرجة كبيرة. ويُعد ذلك ضروريًا للتطبيقات الآنية مثل المركبات ذاتية القيادة أو خطوط التصنيع عالية السرعة.
- تبسيط النشر: بدلًا من صيانة مسارات نشر منفصلة لكل إطار تدريب، يمكن لفرق الهندسة اعتماد ONNX بوصفه تنسيق التسليم، مما يبسّط عمليات ModelOps.
التطبيقات الواقعية#
تجعل تعددية استخدامات ONNX منه عنصرًا أساسيًا في صناعات متنوعة. وفيما يلي مثالان ملموسان على تطبيقاته:
1. الذكاء الاصطناعي الطرفي على الأجهزة المحمولة#
لنفترض وجود تطبيق محمول مصمم من أجل مراقبة صحة المحاصيل في الوقت الفعلي. قد يُدرَّب النموذج على خادم سحابي قوي باستخدام مجموعة بيانات كبيرة من صور النباتات. إلا أن التطبيق يحتاج إلى العمل دون اتصال بالإنترنت على هاتف ذكي يملكه مزارع. ومن خلال تصدير النموذج المدرَّب إلى ONNX، يستطيع المطورون دمجه في التطبيق المحمول باستخدام ONNX Runtime Mobile. ويتيح ذلك لمعالج الهاتف تشغيل اكتشاف الأجسام محليًا، والتعرّف إلى الآفات أو الأمراض فورًا من دون الحاجة إلى اتصال بالإنترنت.
2. الاستدلال عبر الويب والمنصات#
في التجارة الإلكترونية، قد تستخدم ميزة «التجربة الافتراضية» تقدير الوضعية لإظهار الملابس فوق بث كاميرا الويب الخاص بالمستخدم. وقد يحدث تدريب هذا النموذج باستخدام Python، لكن متصفح الويب هو البيئة المستهدفة للنشر. وباستخدام ONNX، يمكن تحويل النموذج وتشغيله مباشرةً في متصفح المستخدم عبر ONNX Runtime Web. ويستفيد ذلك من إمكانات جهاز العميل (WebGL أو WebAssembly) لتنفيذ مهام الرؤية الحاسوبية، مما يضمن تجربة سلسة تحافظ على الخصوصية، إذ لا تغادر بيانات الفيديو حاسوب المستخدم مطلقًا.
مقارنة بالمصطلحات ذات الصلة#
من المفيد تمييز ONNX عن تنسيقات النماذج والأدوات الأخرى:
- مقابل TensorRT: في حين أن ONNX هو تنسيق تبادل، فإن TensorRT هو محرك استدلال ومحسّن مخصص لوحدات GPU من 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 لإدارته، أو نشره مباشرةً على الأجهزة الطرفية باستخدام ONNX Runtime، مما يجعل الرؤية الحاسوبية عالية الأداء متاحة في أي بيئة تقريبًا.









