في مجال الذكاء الاصطناعي (AI) والتعلم الآلي (ML) سريع التطور، يعد نقل النماذج بين الأدوات والمنصات المختلفة بكفاءة أمرًا بالغ الأهمية. يعالج ONNX (التبادل المفتوح للشبكات العصبية) هذا التحدي من خلال توفير تنسيق مفتوح المصدر مصمم خصيصاً لنماذج الذكاء الاصطناعي. وهو يعمل كمترجم عالمي، مما يسمح للمطورين بتدريب نموذج في إطار عمل واحد، مثل PyTorchومن ثم نشره باستخدام إطار عمل آخر أو محرك استدلالي آخر، مثل TensorFlow أو أوقات تشغيل متخصصة. تعمل إمكانية التشغيل البيني هذه على تبسيط المسار من البحث إلى الإنتاج.
أهمية ONNX
تكمن القيمة الأساسية ل ONNX في تعزيز قابلية النقل وقابلية التشغيل البيني داخل منظومة الذكاء الاصطناعي. فبدلاً من الانغلاق في نظام بيئي محدد لإطار عمل معين، يمكن للمطورين الاستفادة من ONNX لنقل النماذج بحرية. من خلال تحديد مجموعة مشتركة من المشغلين وتنسيق ملف قياسي، يضمن ONNX تمثيل بنية النموذج والمعلمات المستفادة(الأوزان) بشكل متسق. وهذا مفيد بشكل خاص لمستخدمي Ultralytics YOLO حيث توفر Ultralytics طرقًا مباشرة لتصدير النماذج إلى تنسيق ONNX . تتيح إمكانية التصدير هذه للمستخدمين أخذ نماذج مثل YOLOv8 أو YOLO11 ونشرها على مجموعة واسعة من الأجهزة والمنصات البرمجية، وغالبًا ما يستخدمون محركات استدلال محسّنة لتحسين الأداء.
كيف يعمل ONNX
يحقق ONNX قابلية التشغيل البيني من خلال عدة ميزات رئيسية:
- تمثيل النموذج المشترك: يحدد مجموعة قياسية من المشغلات (مثل طبقات الالتفاف أو دوال التنشيط) وأنواع البيانات. عندما يتم تحويل نموذج إلى ONNX تتم ترجمة بنيته إلى هذه اللغة المشتركة.
- الهيكل القائم على الرسم البياني: يتم تمثيل النماذج كرسوم بيانية حاسوبية، حيث تمثل العقد العمليات والحواف تدفق البيانات (الموتر). هذه بنية شائعة تستخدمها معظم أطر التعلم العميق.
- قابلية التوسعة: بينما يُعرِّف ONNX مجموعة أساسية من المشغِّلين، فإنه يسمح بالمشغِّلين المخصصين، مما يتيح دعم البنى النموذجية الجديدة.
- الإصدار: يحافظ ONNX على إصدارات المشغل لضمان التوافق مع الإصدارات السابقة، مما يعني أن النماذج التي تم إنشاؤها بإصدارات أقدم لا يزال من الممكن استخدامها مع تطور المعيار.
تطبيقات ONNX
يُستخدم ONNX على نطاق واسع لسد الفجوة بين بيئات التدريب النموذجية وأهداف النشر. فيما يلي مثالان:
- النشر الأمثل على أجهزة الحافة: يقوم أحد المطورين بتدريب نموذج لاكتشاف الكائنات باستخدام Ultralytics YOLO على خادم قوي مزود بوحدات معالجة رسومات. ولنشر هذا النموذج على الأجهزة الطرفية المحدودة الموارد، يقوم المطور بتصدير النموذج إلى ONNX. يمكن بعد ذلك تحسين نموذج ONNX باستخدام أدوات مثل NVIDIA TensorRT لأجهزة NVIDIA أو OpenVINO منIntel لوحدات المعالجة المركزية/وحدات المعالجة الافتراضية الخاصة بشركة Intel مما يحقق استدلالاً أسرع وأكثر كفاءة في الوقت الحقيقي. راجع دليلنا حول خيارات نشر النموذج لمزيد من التفاصيل.
- التعاون عبر الأطر: يقوم فريق بحثي بتطوير مكون نموذج جديد في PyTorch. يمكن لفريق آخر، مسؤول عن دمج هذا المكون في تطبيق أكبر تم إنشاؤه باستخدام TensorFlow أن يتلقى المكون كملف ONNX . وهذا يجنبنا الحاجة إلى ترجمة التعليمات البرمجية المعقدة أو الحفاظ على إصدارات نموذجية منفصلة لأطر عمل مختلفة، مما يعزز التعاون الأسهل داخل المؤسسات مثل تلك المدرجة في صفحة عملائنا.
المفاهيم ذات الصلة
غالبًا ما يتضمن فهم ONNX تقنيات ذات صلة:
- وقت تشغيلONNX : هذا محرك استدلالي عالي الأداء مصمم خصيصًا لتنفيذ نماذج ONNX بكفاءة عبر أجهزة مختلفةCPU, GPUإلخ). بينما يحدد ONNX التنسيق، يوفر ONNX Runtime بيئة التنفيذ.
- TensorRT: مجموعة برمجيات SDK من NVIDIA للاستدلال على التعلُّم العميق عالي الأداء، والتي يمكنها استيراد نماذج ONNX لتحسينها على وحدات معالجة الرسومات NVIDIA . يوفر Ultralytics تكاملTensorRT .
- OpenVINO: مجموعة أدوات من Intel لتحسين الاستدلال بالذكاء الاصطناعي ونشره، ودعم نماذج ONNX للتنفيذ على أجهزة Intel .
- نموذج التصدير: عملية تحويل نموذج مُدرَّب من تنسيق إطاره الأصلي (على سبيل المثال، PyTorch
.pt
) إلى تنسيق موحد مثل ONNX. - نشر النموذج: العملية الشاملة لأخذ نموذج مُدرَّب وإتاحته للاستخدام في بيئة الإنتاج، حيث تلعب ONNX دورًا رئيسيًا في تبسيط التوافق عبر المنصات. يمكنك إدارة نشر نماذج ONNX الخاصة بك باستخدام منصات مثل Ultralytics HUB.
من خلال تسهيل تبادل النماذج ونشرها، يلعب ONNX دورًا حيويًا في جعل دورة حياة تطوير الذكاء الاصطناعي أكثر مرونة وكفاءة.