مسرد المصطلحات

ONNX (تبادل الشبكات العصبية المفتوحة)

اكتشف كيف يعزز ONNX قابلية نقل نماذج الذكاء الاصطناعي وقابلية التشغيل البيني مما يتيح النشر السلس لنماذج Ultralytics YOLO عبر منصات متنوعة.

تدريب YOLO النماذج
ببساطة مع Ultralytics HUB

التعرف على المزيد

في مجال الذكاء الاصطناعي (AI) والتعلم الآلي (ML) سريع التطور، يعد نقل النماذج بين الأدوات والمنصات المختلفة بكفاءة أمرًا بالغ الأهمية. يعالج ONNX (التبادل المفتوح للشبكات العصبية) هذا التحدي من خلال توفير تنسيق مفتوح المصدر مصمم خصيصاً لنماذج الذكاء الاصطناعي. وهو يعمل كمترجم عالمي، مما يسمح للمطورين بتدريب نموذج في إطار عمل واحد، مثل PyTorchومن ثم نشره باستخدام إطار عمل آخر أو محرك استدلالي آخر، مثل TensorFlow أو أنظمة تشغيل متخصصة مثل ONNX Runtime. تعمل قابلية التشغيل البيني هذه على تبسيط المسار من البحث إلى الإنتاج، مما يعزز التعاون والمرونة داخل منظومة الذكاء الاصطناعي. تم تطوير ONNX في البداية بواسطة Facebook AI Research و Microsoft Research وهو الآن مشروع مجتمعي مزدهر.

أهمية ONNX

تكمن القيمة الأساسية لـ ONNX في تعزيز قابلية النقل وقابلية التشغيل البيني ضمن دورة حياة تطوير الذكاء الاصطناعي. وبدلاً من الانغلاق في نظام بيئي محدد لإطار عمل معين، يمكن للمطورين الاستفادة من ONNX لنقل النماذج بحرية بين الأدوات ومنصات الأجهزة المختلفة. من خلال تحديد مجموعة مشتركة من المشغلين (اللبنات الأساسية ل الشبكات العصبية) وتنسيق ملف قياسي (.onnx)، يضمن ONNX أن بنية النموذج والمعلمات المستفادة (الأوزان) ممثلة بشكل متسق. وهذا مفيد بشكل خاص لمستخدمي Ultralytics YOLO النماذج، حيث توفر Ultralytics طرقًا مباشرة لـ تصدير النماذج إلى تنسيق ONNX. تتيح إمكانية التصدير هذه للمستخدمين أخذ نماذج مثل YOLOv8 أو أحدث YOLO11 ونشرها على مجموعة واسعة من الأجهزة والمنصات البرمجية، وغالبًا ما تستخدم محركات الاستدلال لتحسين الأداء و تسريع الأجهزة.

كيف يعمل ONNX

تحقق ONNX قابلية التشغيل البيني من خلال عدة ميزات تقنية رئيسية:

  • تمثيل النموذج المشترك: يحدد ONNX مجموعة قياسية من مشغلات الرسم البياني الحاسوبي، مثل دوال الالتفاف أو التنشيط، ونظام نوع بيانات مشترك. عندما يتم تحويل نموذج التعلّم العميق إلى ONNX تتم ترجمة بنيته ومعلماته إلى هذا التمثيل المشترك.
  • بنية قائمة على الرسم البياني: يتم تمثيل النماذج في ONNX كرسوم بيانية حاسوبية. تمثل العقد في الرسم البياني العمليات (مثل ضرب المصفوفات أو تطبيق دالة ReLU)، بينما تمثل الحواف تدفق البيانات (الموتر) بين هذه العمليات. تُعد بنية الرسم البياني هذه شائعة في العديد من أطر التعلم الآلي، مما يسهل عملية التحويل.
  • نظام الإصدار: تحتفظ ONNX بإصدارات لمجموعات المشغلات (Opsets). يضمن ذلك التوافق مع الإصدارات السابقة، مما يسمح للنماذج التي تم إنشاؤها باستخدام مجموعات العمليات القديمة بالاستمرار في العمل على أنظمة تشغيل أحدث تدعم تلك الإصدارات.
  • قابلية التوسعة: بينما يحدد ONNX مجموعة أساسية من المشغلات، فإنه يسمح أيضًا بمشغلات مخصصة، مما يتيح للأطر وبائعي الأجهزة دعم الوظائف المتخصصة.
  • النظام البيئي والأدوات: هناك نظام بيئي غني يحيط ب ONNX بما في ذلك مكتبات لتحويل النماذج من أطر عمل مختلفة (مثل PyTorch أو TensorFlow)، وأدوات لتصور الرسوم البيانية ONNX وتصحيحها، وأوقات تشغيل مثل ONNX Runtime المحسّنة للاستدلال عالي الأداء عبر أجهزة مختلفة (CPU, GPUومسرعات متخصصة).

تطبيقات ONNX

يعمل ONNX كجسر حاسم بين بيئات التدريب النموذجية وأهداف النشر المتنوعة. فيما يلي مثالان ملموسان:

  1. نشر نماذج الرؤية الحاسوبية على أجهزة الحافة: يقوم المطور بتدريب نموذج اكتشاف كائن ما، مثل نموذج Ultralytics YOLO باستخدام PyTorch على خادم قوي مزود بوحدات معالجة رسومات. وللنشر على الأجهزة الطرفية المحدودة الموارد (مثل الكاميرا الذكية أو الطائرة بدون طيار)، يقومون بتصدير النموذج إلى تنسيق ONNX . يمكن بعد ذلك تحسين ملف ONNX هذا باستخدام أدوات مثل NVIDIA TensorRT أو OpenVINO منIntel ونشره للاستدلال الفعال في الوقت الحقيقي مباشرةً على الجهاز. تبرز هذه المرونة في خيارات نشر النماذج المختلفة. يمكنك استكشاف حلولUltralytics للحصول على أمثلة في صناعات مختلفة.
  2. التعاون والنشر عبر الأطر المشتركة: يقوم فريق بحثي بتطوير بنية نموذجية جديدة باستخدام TensorFlow. ويريد فريق آخر دمج هذا النموذج في تطبيق موجود تم إنشاؤه باستخدام PyTorch. من خلال تصدير نموذج TensorFlow إلى ONNX يمكن للفريق الثاني تحميله واستخدامه بسهولة داخل بيئة PyTorch الخاصة بهم أو نشره باستخدام وقت تشغيلONNX القياسي عبر تكوينات الخادم المختلفة(السحابة أو داخل الشركة) دون الحاجة إلى إطار عمل TensorFlow الأصلي. وهذا يعزز سهولة تقديم النماذج وتكاملها.

ONNX مقابل المفاهيم ذات الصلة

من المهم التمييز بين ONNX والمصطلحات ذات الصلة:

  • التنسيقات الخاصة بالإطار: تنسيقات مثل PyTorch's PyTorch .pt/.pth أو SavedModelTensorFlow SavedModel في TensorFlow أصلية لأطر العمل الخاصة بكل منها. تعمل ONNX كوسيط، مما يسمح بالتحويل بين هذه التنسيقات أو النشر عبر وقت تشغيل مشترك. TorchScript هو تنسيق آخر لتسلسل نماذج PyTorch ويُستخدم أحيانًا كبديل أو مقدمة لتصدير ONNX .
  • محركات الاستدلال/أوقات التشغيل: أدوات مثل ONNX Runtime, TensorRTو OpenVINO هي مكتبات برمجية مصممة لتنفيذ نماذج التعلم الآلي بكفاءة. يمكن أن تستهلك العديد من هذه المحركات نماذج ONNX وغالبًا ما تطبق المزيد من التحسينات (مثل التكميم أو دمج الرسم البياني) لأهداف أجهزة معينة. توفر ONNX مدخلات النموذج الموحد لهذه المحركات.

وباختصار، يُعد ONNX معيارًا حيويًا لضمان المرونة وقابلية التشغيل البيني في خط أنابيب عمليات التعلم الآلي (MLOps )، مما يتيح للمطورين اختيار أفضل الأدوات للتدريب والنشر دون التقيد بقيود إطار العمل. تستفيد المنصات مثل Ultralytics HUB من هذه التنسيقات لتبسيط الرحلة من تطوير النموذج إلى التطبيق في العالم الحقيقي.

قراءة الكل