Link to this sectionتصدير النموذج باستخدام Ultralytics YOLO#
Link to this sectionمقدمة#
الهدف النهائي من تدريب النموذج هو نشره في تطبيقات العالم الحقيقي. يوفر وضع التصدير في Ultralytics YOLO26 مجموعة متنوعة من الخيارات لتصدير النموذج المدرب الخاص بك إلى صيغ مختلفة، مما يجعله قابلاً للنشر عبر منصات وأجهزة متعددة. يهدف هذا الدليل الشامل إلى إرشادك خلال تفاصيل تصدير النموذج، مع توضيح كيفية تحقيق أقصى قدر من التوافق والأداء.
Watch: How to Export Ultralytics YOLO26 in different formats for Deployment | ONNX, TensorRT, CoreML 🚀
Link to this sectionلماذا تختار وضع التصدير في YOLO26؟#
- تعدد الاستخدامات: التصدير إلى صيغ متعددة بما في ذلك ONNX و TensorRT و CoreML والمزيد.
- الأداء: احصل على زيادة في سرعة GPU تصل إلى 5 أضعاف مع TensorRT وزيادة في سرعة CPU تصل إلى 3 أضعاف مع ONNX أو OpenVINO.
- التوافق: اجعل نموذجك قابلاً للنشر عالمياً عبر العديد من بيئات الأجهزة والبرمجيات.
- سهولة الاستخدام: واجهة سطر أوامر (CLI) بسيطة وواجهة برمجة تطبيقات (API) بلغة Python لتصدير النموذج بسرعة وسهولة.
Link to this sectionالميزات الرئيسية لوضع التصدير#
إليك بعض الوظائف البارزة:
- تصدير بنقرة واحدة: أوامر بسيطة للتصدير إلى صيغ مختلفة.
- تصدير الدفعات (Batch Export): تصدير نماذج قادرة على الاستدلال بالدفعات.
- استدلال محسّن: يتم تحسين النماذج المصدرة للحصول على أوقات استدلال أسرع.
- فيديوهات تعليمية: أدلة ودروس متعمقة للحصول على تجربة تصدير سلسة.
Link to this sectionأمثلة الاستخدام#
قم بتصدير نموذج YOLO26n إلى صيغة مختلفة مثل ONNX أو TensorRT. راجع قسم الوسائط أدناه للحصول على قائمة كاملة بوسائط التصدير.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")Link to this sectionالوسائط (Arguments)#
يفصل هذا الجدول التكوينات والخيارات المتاحة لتصدير نماذج YOLO إلى صيغ مختلفة. تعتبر هذه الإعدادات حاسمة لتحسين أداء النموذج المصدر وحجمه وتوافقه عبر مختلف المنصات والبيئات. يضمن التكوين الصحيح أن النموذج جاهز للنشر في التطبيق المقصود بأعلى كفاءة.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'torchscript' | الصيغة المستهدفة للنموذج المصدر، مثل 'onnx' أو 'torchscript' أو 'engine' (TensorRT) أو غيرها. تتيح كل صيغة التوافق مع بيئات نشر مختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لمدخلات النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة (مثلاً 640 لـ 640×640) أو صفاً (tuple) (height, width) لأبعاد محددة. |
keras | bool | False | يُمكّن التصدير إلى صيغة Keras لـ TensorFlow SavedModel، مما يوفر التوافق مع خدمة TensorFlow وواجهات البرمجة الخاصة بها. |
optimize | bool | False | يطبق تحسينات للأجهزة المحمولة عند التصدير إلى TorchScript، مما يقلل من حجم النموذج ويحسن أداء الاستدلال. غير متوافق مع صيغة NCNN أو أجهزة CUDA. بالنسبة لـ DEEPX، يُمكّن تحسيناً أعلى للمترجم مما يقلل من زمن انتقال الاستدلال ويزيد من وقت التجميع. |
quantize | int أو str | None | دقة التكميم: 16 (FP16، تقلل حجم النموذج ويمكنها تسريع الاستنتاج على الأجهزة المدعومة) أو 8 (INT8/PTQ، تضغط النموذج بشكل أكبر مع حد أدنى من فقدان الدقة، بشكل أساسي لـ أجهزة الحافة؛ تتطلب data/fraction للمعايرة)؛ 32/بدون تعيين تعني FP32. تقبل تنسيقات التصدير التي تدعم دقة الأوزان/التنشيط المختلطة أيضًا الترميز 'w8a8'/'w16a16'/'w8a16'. تحل محل علامات half/int8 الملغاة (يتم قبول half=True ← 16 و int8=True ← 8 مع إصدار تحذير إلغاء). يُسمح فقط بالدقات التي يدعمها التنسيق المستهدف (انظر أدناه). |
dynamic | bool | False | يسمح بأحجام مدخلات ديناميكية لتصديرات TorchScript و ONNX و OpenVINO و TensorRT و CoreML، مما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة. |
simplify | bool | True | يبسّط مخطط النموذج لتصديرات ONNX باستخدام onnxslim، مما قد يحسن الأداء والتوافق مع محركات الاستدلال. |
opset | int | None | يحدد إصدار opset الخاص بـ ONNX للتوافق مع محللات ومُشغلات ONNX المختلفة. إذا لم يتم ضبطه، فإنه يستخدم أحدث إصدار مدعوم. |
workspace | float أو None | None | يحدد الحد الأقصى لحجم مساحة العمل بـ GiB لتحسينات TensorRT، مما يوازن بين استخدام الذاكرة والأداء. استخدم None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز. |
nms | bool | False | يضيف خاصية كبت غير الحد الأقصى (NMS) إلى النموذج المصدر عند دعمها (انظر صيغ التصدير)، مما يحسن كفاءة معالجة الكشف اللاحقة. غير متاح للنماذج الشاملة (end2end). |
batch | int | 1 | يحدد حجم استدلال الدفعة للنموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict. بالنسبة لتصديرات Edge TPU، يتم ضبط هذا تلقائياً على 1. |
device | str | None | تحديد الجهاز لعملية التصدير: GPU (device=0)، أو CPU (device=cpu)، أو MPS لمعالجات Apple silicon (device=mps)، أو Huawei Ascend NPU (device=npu أو device=npu:0)، أو DLA لجهاز NVIDIA Jetson (device=dla:0 أو device=dla:1). تستخدم عمليات تصدير TensorRT الـ GPU تلقائياً، ولكن إصدار TensorRT 11.0 لا يدعم DLA. |
data | str | None | مسار ملف إعداد dataset، وهو ضروري لمعايرة التكميم INT8. إذا لم يتم تحديده مع تفعيل INT8، يقوم Ultralytics باختيار مجموعة بيانات معايرة خاصة بالمهمة عند الحاجة، أو يعود إلى مجموعة البيانات الافتراضية لمهمة النموذج. |
fraction | float | 1.0 | يحدد جزءاً من مجموعة البيانات لاستخدامه في معايرة تكميم INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تمكين INT8، فسيتم استخدام مجموعة البيانات الكاملة. |
end2end | bool | None | يتجاوز وضع النهاية إلى النهاية (end-to-end) في نماذج YOLO التي تدعم الاستدلال بدون NMS (مثل YOLO26 و YOLOv10). ضبطه على False يتيح لك تصدير هذه النماذج لتكون متوافقة مع خط معالجة ما بعد الكشف التقليدي القائم على NMS. انظر دليل الكشف الشامل (End-to-End) للحصول على التفاصيل. |
يسمح تعديل هذه المعلمات بتخصيص عملية التصدير لتناسب متطلبات محددة، مثل بيئة النشر، وقيود الأجهزة، وأهداف الأداء. إن اختيار التنسيق والإعدادات المناسبة أمر ضروري لتحقيق أفضل توازن بين حجم النموذج، والسرعة، والدقة.
Link to this sectionتنسيقات التصدير#
تتوفر صيغ تصدير YOLO26 في الجدول أدناه. يمكنك التصدير إلى أي صيغة باستخدام وسيط format، مثل format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرة من النماذج المصدرة، مثل yolo predict model=yolo26n.onnx. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير. يمكن أيضاً تصدير النماذج مباشرة من المتصفح على منصة Ultralytics دون أي إعداد محلي.
| التنسيق | وسيط format | النموذج | البيانات الوصفية | الوسائط (Arguments) |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n.tflite | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, data, fraction, device |
| TF.js | tfjs | yolo26n_web_model/ | ✅ | imgsz, quantize, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, quantize, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, data, fraction, device |
Link to this sectionخيارات التكميم (Quantization Options)#
استخدم المعامل quantize لطلب دقة التصدير. قيم السلسلة النصية غير حساسة لحالة الأحرف، وتقوم Ultralytics بتحويل الأسماء المستعارة المقبولة إلى صيغتها القياسية قبل التصدير:
| قيم الطلب | القيمة القياسية | المعنى |
|---|---|---|
8, "8", "int8", "w8a8" | 8 | أوزان وتفعيلات بنمط INT8 |
16, "16", "fp16", "w16a16" | 16 | أوزان وتفعيلات بنمط FP16 |
32, "32", "fp32", "w32a32" | 32 | تصدير بنمط FP32؛ نفس الدقة الناتجة عن ترك quantize دون تعيين |
"w8a16" | "w8a16" | أوزان INT8 مع تفعيلات FP16 |
لا تزال العلامات القديمة half=True و int8=True مقبولة مع إصدار تحذيرات الإهمال، ويتم توجيهها إلى quantize=16 و quantize=8.
لا تدعم كل تنسيقات التصدير كل مستويات الدقة. تؤدي طلبات quantize الصريحة إما إلى إنتاج تلك الدقة أو الفشل قبل التصدير:
| التنسيق | FP32 (32/غير محدد) | FP16 (16) | INT8 (8) | W8A16 ("w8a16") | ملاحظات |
|---|---|---|---|---|---|
| PyTorch | ✅ | غير متاح | غير متاح | غير متاح | تنسيق التدريب/نقطة التفتيش الأصلي. |
| TorchScript | ✅ | ✅ GPU فقط | ❌ | ❌ | يتطلب تصدير TorchScript بصيغة FP16 استخدام device=0؛ أما التصدير عبر CPU فيكون بصيغة FP32. |
| ONNX | ✅ | ✅ | ✅ | ❌ | يستخدم INT8 تقنية التكميم الثابت في ONNX Runtime وبيانات المعايرة. |
| OpenVINO | ✅ | ✅ | ✅ | ❌ | يستخدم INT8 تقنية التكميم بعد التدريب من NNCF. |
| TensorRT | ✅ | ✅ | ✅ | ❌ | يتطلب INT8 بيانات معايرة تمثيلية. |
| CoreML | ✅ | ✅ | ✅ | ✅ | تكميم CoreML INT8 هو تكميم للأوزان؛ بينما تستخدم W8A16 أوزان INT8 مع تفعيلات FP16. |
| TF SavedModel | ✅ | ❌ | ✅ | ❌ | يستخدم تصدير INT8 معايرة TensorFlow. |
| TF GraphDef | ✅ | ❌ | ❌ | ❌ | لا يوجد تحويل للدقة أثناء وقت التصدير. |
| TFLite | ✅ | ✅ | ✅ | ❌ | يستخدم تصدير INT8 معايرة TensorFlow. |
| Edge TPU | ❌ | ❌ | ✅ تلقائي | ❌ | يتطلب Edge TPU صيغة INT8؛ يتم تفعيلها تلقائياً عند تركها غير محددة. |
| TF.js | ✅ | ✅ | ✅ | ❌ | يتم تطبيق INT8/FP16 أثناء تحويل TensorFlow.js. |
| PaddlePaddle | ✅ | ❌ | ❌ | ❌ | لا يوجد تحويل للدقة أثناء وقت التصدير. |
| MNN | ✅ | ✅ | ✅ | ❌ | INT8 هو تكميم للأوزان من خلال تحويل MNN. |
| NCNN | ✅ | ✅ | ❌ | ❌ | تنسيق وقت التشغيل للهواتف المحمولة/الأنظمة المدمجة. |
| IMX500 | ❌ | ❌ | ✅ تلقائي | ✅ | يتطلب IMX500 التكميم؛ يتم تفعيل INT8 تلقائياً عند تركها غير محددة. |
| RKNN | ❌ | ✅ يعتمد على الشريحة | ✅ | ❌ | تدعم RK3588/RK3576/RK3566/RK3568/RK3562/RK2118/RV1126B صيغة FP16 أو INT8؛ بينما تقتصر إصدارات RV1103/RV1106 على INT8 فقط. |
| ExecuTorch | ✅ | ❌ | ❌ | ❌ | لا يوجد تحويل للدقة أثناء وقت التصدير. |
| Axelera | ❌ | ❌ | ✅ تلقائي | ❌ | يتطلب تصدير Axelera صيغة INT8؛ يتم تفعيلها تلقائياً عند تركها غير محددة. |
| DEEPX | ❌ | ❌ | ✅ تلقائي | ❌ | يتطلب تصدير DEEPX صيغة INT8؛ يتم تفعيلها تلقائياً عند تركها غير محددة. |
| Qualcomm QNN | ❌ | ❌ | ❌ | ✅ تلقائي | تصدير QNN HTP مثبت على أوزان INT8 مع تفعيلات بـ 16-بت. |
بالنسبة لتصديرات INT8 و W8A16، قدم بيانات معايرة تمثيلية باستخدام data، مثل data="coco8.yaml"، ما لم توثق الجهة المتكاملة المستهدفة سلوكاً افتراضياً أو مفعلاً تلقائياً.
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف يمكنني تصدير نموذج YOLO26 إلى صيغة ONNX؟#
تصدير نموذج YOLO26 إلى صيغة ONNX أمر مباشر مع Ultralytics. فهو يوفر كلاً من طرق Python و CLI لتصدير النماذج.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
model.export(format="onnx")لمزيد من التفاصيل حول العملية، بما في ذلك الخيارات المتقدمة مثل التعامل مع أحجام مدخلات مختلفة، راجع دليل تكامل ONNX.
Link to this sectionما هي فوائد استخدام TensorRT لتصدير النموذج؟#
يوفر استخدام TensorRT لتصدير النموذج تحسينات كبيرة في الأداء. يمكن لنماذج YOLO26 المصدرة إلى TensorRT تحقيق زيادة في سرعة GPU تصل إلى 5 أضعاف، مما يجعلها مثالية لتطبيقات الاستدلال في الوقت الفعلي.
- تعدد الاستخدامات: تحسين النماذج لإعدادات أجهزة محددة.
- السرعة: تحقيق استدلال أسرع من خلال تحسينات متقدمة.
- التوافق: التكامل بسلاسة مع أجهزة NVIDIA.
لمعرفة المزيد حول دمج TensorRT، راجع دليل تكامل TensorRT.
Link to this sectionكيف يمكنني تمكين تكميم INT8 عند تصدير نموذج YOLO26 الخاص بي؟#
يعد تكميم INT8 طريقة ممتازة لضغط النموذج وتسريع الاستدلال، خاصة على أجهزة الحافة. إليك كيفية تمكين تكميم INT8:
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # Load a model
model.export(format="onnx", quantize=8, data="coco8.yaml")يمكن تطبيق تكميم INT8 على تنسيقات مثل ONNX و TensorRT و OpenVINO و CoreML و Rockchip RKNN. للحصول على نتائج تكميم مثالية، قدم مجموعة بيانات تمثيلية باستخدام المعامل data. راجع خيارات التكميم للاطلاع على قيم quantize المقبولة والتنسيقات المدعومة.
Link to this sectionلماذا يعد حجم المدخلات الديناميكي مهماً عند تصدير النماذج؟#
يسمح حجم المدخلات الديناميكي للنموذج المصدر بالتعامل مع أبعاد صور متغيرة، مما يوفر المرونة ويحسن كفاءة المعالجة لحالات الاستخدام المختلفة. عند التصدير إلى صيغ مثل ONNX أو TensorRT، يضمن تمكين حجم المدخلات الديناميكي أن النموذج يمكنه التكيف مع أشكال المدخلات المختلفة بسلاسة.
لتمكين هذه الميزة، استخدم علامة dynamic=True أثناء التصدير:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)تعد ميزة تغيير حجم المدخلات ديناميكياً مفيدة بشكل خاص للتطبيقات التي قد تختلف فيها أبعاد المدخلات، مثل معالجة الفيديو أو عند التعامل مع صور من مصادر مختلفة.
Link to this sectionما هي أهم وسائط التصدير التي يجب مراعاتها لتحسين أداء النموذج؟#
يعد فهم وسائط التصدير وتكوينها أمراً بالغ الأهمية لتحسين أداء النموذج:
format:الصيغة المستهدفة للنموذج المصدر (مثلاًonnx,torchscript,tensorflow).imgsz:حجم الصورة المطلوب لمدخلات النموذج (مثلاً640أو(height, width)).quantize:دقة التكميم، مثل8/"int8"أو16/"fp16"أو32/"fp32"أو"w8a16"لتصديرات دقة الأوزان/التفعيلات المختلطة المدعومة. راجع خيارات التكميم.optimize:يطبق تحسينات محددة للأجهزة المحمولة أو البيئات المقيدة.
للنشر على منصات أجهزة محددة، ضع في اعتبارك استخدام صيغ تصدير متخصصة مثل TensorRT لوحدات معالجة الرسومات NVIDIA، أو CoreML لأجهزة Apple، أو Edge TPU لأجهزة Google Coral.
Link to this sectionما الذي تمثله مصفوفات الإخراج (output tensors) في نماذج YOLO المصدرة؟#
عند تصدير نموذج YOLO إلى صيغ مثل ONNX أو TensorRT، يعتمد هيكل مصفوفة الإخراج على مهمة النموذج. يعد فهم هذه المخرجات مهماً لتنفيذات الاستدلال المخصصة.
بالنسبة لـ YOLO26 detection models (على سبيل المثال yolo26n.pt)، يتم تمكين التصدير من طرف إلى طرف (end-to-end) افتراضياً في التنسيقات التي تدعمه، بحيث يكون شكل المخرج (batch_size, max_detections, 6) مع قيم [x1, y1, x2, y2, confidence, class_id]. مع القيمة الافتراضية max_det=300، يكون الشكل عادةً (batch_size, 300, 6). تقوم بعض التنسيقات المقيدة بالرجوع تلقائياً إلى تخطيط المخرجات التقليدي عندما تكون مشغلات النهاية إلى طرف (end-to-end operators) غير مدعومة.
بالنسبة لنماذج الكشف التي لا تعمل من طرف إلى طرف، أو نماذج YOLO26 التي يتم تصديرها باستخدام end2end=False، عادة ما يكون المخرج عبارة عن موتر واحد (single tensor) بشكل (batch_size, 4 + num_classes, num_predictions) حيث تمثل القنوات إحداثيات الصندوق بالإضافة إلى درجات كل فئة، ويعتمد num_predictions على دقة إدخال التصدير (ويمكن أن يكون ديناميكياً).
بالنسبة لـ نماذج التجزئة (مثلاً yolo26n-seg.pt)، ستحصل عادةً على مخرجين: المصفوفة الأولى بشكل (batch_size, 4 + num_classes + mask_dim, num_predictions) (الصناديق، ودرجات الفئة، ومعاملات القناع)، والمصفوفة الثانية بشكل (batch_size, mask_dim, proto_h, proto_w) تحتوي على نماذج أولية للقناع تُستخدم مع المعاملات لإنشاء أقنعة المثيلات. تعتمد الأحجام على دقة إدخال التصدير (ويمكن أن تكون ديناميكية).
بالنسبة لـ نماذج الوضع (مثلاً yolo26n-pose.pt)، عادة ما تكون مصفوفة الإخراج بشكل (batch_size, 4 + num_classes + keypoint_dims, num_predictions)، حيث يعتمد keypoint_dims على مواصفات الوضع (مثلاً عدد النقاط الرئيسية وما إذا كانت الثقة مشمولة)، ويعتمد num_predictions على دقة إدخال التصدير (ويمكن أن يكون ديناميكياً).
توضح الأمثلة الموجودة في أمثلة استدلال ONNX كيفية معالجة هذه المخرجات لكل نوع من أنواع النماذج.
Link to this sectionلماذا يكون output0 بنمط FP32 عند تصدير النماذج المكممة مع تفعيل end2end=True؟#
عند التصدير باستخدام quantize=16 (FP16) أو quantize=8 (INT8)، يتم تحويل معظم الموترات إلى دقة أقل لتقليل حجم النموذج وتحسين الأداء. ومع ذلك، عند تفعيل end2end=True، يتم دمج المعالجة اللاحقة (بما في ذلك فهارس الفئات) مباشرة في الرسم البياني المُصدَّر.
تحتوي مصفوفة output0 على فهارس الفئات، والتي يتم تمثيلها داخلياً كقيم فاصلة عائمة. لا يمكن لـ FP16 تمثيل القيم الصحيحة فوق 2048 بشكل موثوق بسبب دقة mantissa المحدودة. لتجنب فقدان الدقة المحتمل أو معرفات الفئات غير الصحيحة، يتم الاحتفاظ بـ output0 عن عمد بصيغة FP32.
هذا السلوك متوقع وينطبق أيضاً على التصديرات ذات الدقة المنخفضة أو المكممة حيث يجب الحفاظ على دقة فهرس الفئة.
إذا كانت مخرجات FP16 الكاملة مطلوبة، قم بالتصدير مع end2end=False وقم بإجراء معالجة ما بعد الاستدلال خارجياً.