خطوات الاستخدام
الخطوة الأولى: أدخل حجم نموذج PyTorch الخاص بك بالميغابايت (MB). هذا الحجم يشير إلى مساحة ملف النموذج المدرب باستخدام PyTorch. يُستخدم هذا الرقم كقاعدة أساسية لأن عملية التصدير إلى ONNX تحافظ على معظم المعاملات (weights) والبنية (architecture) ولكنها قد تضيف بيانات وصفية إضافية أو تُجري تحسينات تؤثر على الحجم النهائي. تأكد من أن الحجم المُدخل دقيق للحصول على تقدير أفضل.
الخطوة الثانية: اختر إصدار opset (مجموعة العمليات) الخاص بـ ONNX. إصدارات opset الأعلى (مثل 18 أو 19) تدعم عملياتًا أحدث وتحسينات أفضل في التمثيل، مما قد يقلل من حجم الملف الناتج قليلاً مقارنة بالإصدارات الأقدم (مثل 9 أو 10). مع ذلك، قد تزيد بعض الإصدارات من الحجم بسبب إضافة عُقد إضافية لضمان التوافق. الصيغة العامة المستخدمة في هذه الحاسبة: الحجم المُقدَّر = حجم PyTorch × (1 + (21 - opset) / 100). أي أن العامل يتراوح بين 1.03 لإصدار 18 و1.12 لإصدار 9.
الخطوة الثالثة: اضغط على زر "احسب" لتحصل على التقدير. ستظهر النتيجة بالميغابايت (MB) مع شرح موجز. لاحظ أن هذا التقدير تقريبي وقد يختلف حسب تعقيد النموذج (مثل عدد الطبقات والوصلات المتبقية) واستخدام تقنيات مثل التكميم (quantization) أو التعريض (pruning). يُنصح دائمًا بالتحقق من الحجم الفعلي بعد التصدير.
أمثلة محلولة
تطبيقات عملية على حجم تصدير ONNX بخطوات الحل كاملة.
الحل
باستخدام الصيغة: الحجم المُقدَّر = 98.2 × (1 + (21 - 15) / 100) = 98.2 × (1 + 0.06) = 98.2 × 1.06 ≈ 104.09 MB. وبالتالي، من المتوقع أن يتراوح حجم ملف ONNX حول 104 MB. قد يزيد هذا الرقم قليلاً إذا تضمن الملف بيانات وصفية إضافية أو تحسينات معينة. في الممارسة العملية، غالبًا ما يكون حجم ONNX لـ ResNet-50 ضمن 100-110 MB. يُستخدم هذا التقدير لتخطيط المساحة التخزينية أو عرض النطاق الترددي للنشر.
الحل
الحجم المُقدَّر = 14.5 × (1 + (21 - 18) / 100) = 14.5 × (1 + 0.03) = 14.5 × 1.03 ≈ 14.94 MB. هذا حجم قريب جدًا من الحجم الأصلي، لأن opset الحديثة تحسن التمثيل. إذا قمت بتطبيق التكميم (quantization) من FP32 إلى INT8 بعد التصدير، يمكن تقليل الحجم إلى حوالي 25% من الحجم الأصلي، أي حوالي 3.7 MB. لكن هذا يتطلب أدوات إضافية مثل ONNX Runtime. كما يُنصح باستخدام op-level optimization من خلال onnxsim أو onnxoptimizer لتقليل الحجم بشكل أكبر دون خسارة الدقة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة حجم تصدير ONNX.
مثال 1
- حجم PyTorch (MB)
- 98.2
- إصدار Opset (9 إلى 21)
- 15
مثال 2
- حجم PyTorch (MB)
- 14.5
- إصدار Opset (9 إلى 21)
- 18
مثال 3
- حجم PyTorch (MB)
- 50
- إصدار Opset (9 إلى 21)
- 21
مثال 4
- حجم PyTorch (MB)
- 100
- إصدار Opset (9 إلى 21)
- 9
مثال 5
- حجم PyTorch (MB)
- 50
- إصدار Opset (9 إلى 21)
- 10