TensorRT Export for YOLO11 Models
قد يتطلب نشر نماذج الرؤية الحاسوبية في البيئات عالية الأداء تنسيقًا يزيد من السرعة والكفاءة. هذا صحيح بشكل خاص عندما تقوم بنشر نموذجك على NVIDIA GPUs.
By using the TensorRT export format, you can enhance your Ultralytics YOLO11 models for swift and efficient inference on NVIDIA hardware. This guide will give you easy-to-follow steps for the conversion process and help you make the most of NVIDIA's advanced technology in your deep learning projects.
TensorRT
TensorRTتم تطويره بواسطة NVIDIA ، وهو عبارة عن مجموعة أدوات تطوير برمجيات متقدمة (SDK) مصممة للاستدلال على التعلم العميق عالي السرعة. وهي مناسبة تمامًا للتطبيقات في الوقت الفعلي مثل اكتشاف الأجسام.
تعمل مجموعة الأدوات هذه على تحسين نماذج التعلّم العميق لوحدات معالجة الرسومات NVIDIA وتؤدي إلى عمليات أسرع وأكثر كفاءة. TensorRT تخضع نماذج للتحسين TensorRT ، والذي يتضمن تقنيات مثل دمج الطبقات، والمعايرة الدقيقة (INT8 وFP16)، وإدارة الذاكرة الديناميكية tensor ، والضبط التلقائي للنواة. يتيح تحويل نماذج التعلم العميق إلى تنسيق TensorRT للمطورين تحقيق إمكانات وحدات معالجة الرسومات NVIDIA بشكل كامل.
TensorRT معروف بتوافقه مع تنسيقات النماذج المختلفة، بما في ذلك TensorFlow, PyTorchو ONNX ، مما يوفر للمطورين حلاً مرنًا لدمج النماذج من أطر عمل مختلفة وتحسينها. يتيح هذا التنوع نشر النماذج بكفاءة عبر بيئات أجهزة وبرامج متنوعة.
الميزات الرئيسية لنماذج TensorRT
TensorRT تقدم النماذج مجموعة من الميزات الرئيسية التي تساهم في كفاءتها وفعاليتها في استنتاج التعلم العميق عالي السرعة:
-
المعايرة الدقيقة: يدعم TensorRT المعايرة الدقيقة، مما يسمح بضبط النماذج بدقة لتلبية متطلبات دقة محددة. يتضمن هذا دعمًا لتنسيقات الدقة المنخفضة مثل INT8 و FP16، والتي يمكن أن تزيد من سرعة الاستدلال مع الحفاظ على مستويات دقة مقبولة.
-
دمج الطبقات: تتضمن عملية التحسين TensorRT دمج الطبقات، حيث يتم دمج طبقات متعددة من الشبكة العصبية في عملية واحدة. وهذا يقلل من النفقات الحسابية ويحسن سرعة الاستدلال من خلال تقليل الوصول إلى الذاكرة والعمليات الحسابية.
-
إدارة الذاكرة الديناميكية Tensor : يدير TensorRT بكفاءة استخدام الذاكرة tensor أثناء الاستدلال، مما يقلل من الحمل الزائد للذاكرة ويحسن تخصيص الذاكرة. وينتج عن ذلك استخدام أكثر كفاءة للذاكرة GPU .
-
Automatic Kernel Tuning: TensorRT applies automatic kernel tuning to select the most optimized GPU kernel for each layer of the model. This adaptive approach ensures that the model takes full advantage of the GPUs computational power.
خيارات النشر في TensorRT
Before we look at the code for exporting YOLO11 models to the TensorRT format, let's understand where TensorRT models are normally used.
TensorRT العديد من خيارات النشر، ويوازن كل خيار بين سهولة التكامل وتحسين الأداء والمرونة بشكل مختلف:
- النشر داخل TensorFlow: تدمج هذه الطريقة TensorRT في TensorFlow ، مما يسمح بتشغيل النماذج المحسّنة في بيئة TensorFlow مألوفة. وهي مفيدة للنماذج التي تحتوي على مزيج من الطبقات المدعومة وغير المدعومة، حيث يمكن TF-TRT التعامل معها بكفاءة.
-
واجهة برمجة تطبيقات وقت التشغيل المستقلة TensorRT : توفر تحكمًا دقيقًا، وهي مثالية للتطبيقات ذات الأداء الحرج. إنها أكثر تعقيدًا ولكنها تسمح بتنفيذ مخصص للمشغلات غير المدعومة.
-
NVIDIA Triton خادم الاستدلال: خيار يدعم النماذج من أطر عمل مختلفة. وهو مناسب بشكل خاص للاستدلال السحابي أو الاستدلال المتطور، ويوفر ميزات مثل التنفيذ المتزامن للنماذج وتحليل النماذج.
Exporting YOLO11 Models to TensorRT
You can improve execution efficiency and optimize performance by converting YOLO11 models to TensorRT format.
التركيب
لتثبيت الحزمة المطلوبة، قم بتشغيل:
للاطلاع على الإرشادات التفصيلية وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل التثبيتYOLO11 . أثناء تثبيت الحزم المطلوبة YOLO11 ، إذا واجهت أي صعوبات، راجع دليل المشكلات الشائعة للحصول على الحلول والنصائح.
الاستخدام
قبل الغوص في إرشادات الاستخدام، تأكد من الاطلاع على مجموعة موديلاتYOLO11 التي يقدمها Ultralytics. سيساعدك ذلك على اختيار الطراز الأنسب لمتطلبات مشروعك.
الاستخدام
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo11n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
لمزيد من التفاصيل حول عملية التصدير، يرجى زيارة صفحة التوثيقUltralytics الخاصة بالتصدير.
التصدير TensorRT مع التحويل الكمي INT8
يؤدي تصدير نماذج Ultralytics YOLO باستخدام TensorRT مع دقة INT8 إلى تنفيذ عملية التكميم بعد التدريب (PTQ). TensorRT يستخدم المعايرة لـ PTQ، والتي تقيس توزيع التنشيطات داخل كل تنشيط tensor بينما يعالج نموذج YOLO الاستدلال على بيانات المدخلات التمثيلية، ثم يستخدم هذا التوزيع لتقدير قيم المقياس لكل tensor. كل تنشيط tensor مرشح للتقدير الكمي له مقياس مرتبط يتم استنتاجه من خلال عملية معايرة.
عند معالجة الشبكات المكممة ضمنيًا TensorRT يستخدم INT8 بشكل انتهازي لتحسين وقت تنفيذ الطبقة. إذا كانت إحدى الطبقات تعمل بشكل أسرع في INT8 وتم تعيين مقاييس تكميمية لمدخلات ومخرجات بياناتها، يتم تعيين نواة بدقة INT8 لتلك الطبقة، وإلا فإن TensorRT يختار دقة FP32 أو FP16 للنواة بناءً على أيهما يؤدي إلى وقت تنفيذ أسرع لتلك الطبقة.
نصيحة
من الأهمية بمكان التأكد من استخدام نفس الجهاز الذي سيستخدم أوزان النموذج TensorRT للنشر للتصدير بدقة INT8، حيث يمكن أن تختلف نتائج المعايرة عبر الأجهزة.
تكوين تصدير INT8
الوسيطات المقدمة عند استخدام التصدير لطرازYOLO Ultralytics سوف إلى حد كبير تؤثر على أداء النموذج المُصدَّر. سيتعين أيضًا تحديدها بناءً على موارد الجهاز المتاحة، إلا أن الوسيطات الافتراضية يجب العمل لمعظم أمبير (أو أحدث) NVIDIA وحدات معالجة الرسومات المنفصلة. خوارزمية المعايرة المستخدمة هي "ENTROPY_CALIBRATION_2"
ويمكنك قراءة المزيد من التفاصيل حول الخيارات المتاحة في دليل المطورين TensorRT. Ultralytics وجدت الاختبارات أن "ENTROPY_CALIBRATION_2"
كان الخيار الأفضل والصادرات ثابتة لاستخدام هذه الخوارزمية.
-
workspace
: يتحكم في الحجم (بالجيجابايت) لتخصيص ذاكرة الجهاز أثناء تحويل أوزان النموذج.-
ضبط
workspace
القيمة وفقًا لاحتياجاتك من المعايرة وتوافر الموارد. في حين أنworkspace
قد يزيد من وقت المعايرة، فإنه يسمح TensorRT باستكشاف نطاق أوسع من أساليب التحسين، مما قد يعزز أداء النموذج و الدقة. وعلى العكس من ذلك، فإنworkspace
يمكن أن يقلل من وقت المعايرة ولكنه قد يحد من استراتيجيات التحسين، مما يؤثر على جودة النموذج الكمي. -
الافتراضي هو
workspace=None
، والتي ستسمح لـ TensorRT بتخصيص الذاكرة تلقائيًا، عند التهيئة يدويًا، قد تحتاج إلى زيادة هذه القيمة إذا تعطلت المعايرة (الخروج دون تحذير). -
TensorRT سيقدم تقريراً
UNSUPPORTED_STATE
أثناء التصدير إذا كانت قيمةworkspace
أكبر من الذاكرة المتاحة للجهاز، مما يعني أن قيمةworkspace
يجب خفضها أو ضبطها علىNone
. -
إذا كان
workspace
على القيمة القصوى وفشلت/تعطلت المعايرة، فكر في استخدامNone
للتخصيص التلقائي أو عن طريق تقليل قيمimgsz
وbatch
لتقليل متطلبات الذاكرة. -
تذكّر أن معايرة INT8 خاصة بكل جهاز، فاستعارة جهاز "متطور" GPU للمعايرة، قد يؤدي إلى ضعف الأداء عند تشغيل الاستدلال على جهاز آخر.
-
-
batch
: الحد الأقصى لحجم الدفعة التي سيتم استخدامها للاستدلال. أثناء الاستدلال يمكن استخدام دفعات أصغر، لكن الاستدلال لن يقبل دفعات أكبر من الحجم المحدد.
ملاحظة
أثناء المعايرة، ضعف batch
سيتم استخدام الحجم المقدم. يمكن أن يؤدي استخدام دفعات صغيرة إلى قياس غير دقيق أثناء المعايرة. وذلك لأن العملية يتم ضبطها بناءً على البيانات التي تراها. قد لا تلتقط الدُفعات الصغيرة النطاق الكامل للقيم، مما يؤدي إلى حدوث مشكلات في المعايرة النهائية، لذا فإن batch
يتضاعف الحجم تلقائيًا. إذا لم يكن هناك حجم الدُفعة محدد batch=1
، سيتم إجراء المعايرة عند batch=1 * 2
لتقليل أخطاء قياس المعايرة.
قادتهم التجربة التي أجراها NVIDIA إلى التوصية باستخدام ما لا يقل عن 500 صورة معايرة تمثل بيانات نموذجك، مع معايرة INT8 الكمية. هذا مبدأ توجيهي وليس صلبة شرط، و ستحتاج إلى تجربة ما هو مطلوب للأداء الجيد لمجموعة بياناتك. نظرًا لأن بيانات المعايرة مطلوبة لمعايرة INT8 مع TensorRT ، تأكد من استخدام data
الحجة عندما int8=True
ل TensorRT واستخدامها data="my_dataset.yaml"
والتي ستستخدم الصور من التحقق من الصحة للمعايرة بها. عندما لا يتم تمرير أي قيمة ل data
مع التصدير إلى TensorRT مع التكمية INT8، سيكون الافتراضي هو استخدام أحد مجموعات بيانات أمثلة "صغيرة" تستند إلى مهمة النموذج بدلاً من طرح خطأ.
مثال على ذلك
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
- التصدير بمحاور ديناميكية، سيتم تمكين ذلك افتراضيًا عند التصدير باستخدام
int8=True
حتى عندما لا يتم تعيينها بشكل صريح. انظر وسيطات التصدير للحصول على معلومات إضافية. - يضبط الحد الأقصى لحجم الدفعة 8 للنموذج المُصدَّر، والذي تتم معايرته مع
batch = 2 * 8
لتجنب أخطاء القياس أثناء المعايرة. - يخصص 4 غيغابايت من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
- يستخدم مجموعة بيانات COCO للمعايرة، وتحديداً الصور المستخدمة للتحقق من الصحة (إجمالي 5000 صورة).
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''
# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
ذاكرة التخزين المؤقت للمعايرة
TensorRT سينشئ معايرة .cache
والتي يمكن إعادة استخدامها لتسريع عملية تصدير أوزان النماذج المستقبلية باستخدام البيانات نفسها، ولكن قد يؤدي ذلك إلى معايرة ضعيفة عندما تكون البيانات مختلفة إلى حد كبير أو إذا كانت batch
تغيرت القيمة بشكل كبير. في هذه الظروف، فإن .cache
يجب إعادة تسميته ونقله إلى دليل مختلف أو حذفه بالكامل.
مميزات استخدام YOLO مع TensorRT INT8
-
تقليل حجم النموذج: يمكن أن يؤدي التحويل الكمي من FP32 إلى INT8 إلى تقليل حجم النموذج بمقدار 4 أضعاف (على القرص أو في الذاكرة)، مما يؤدي إلى تسريع أوقات التنزيل وتقليل متطلبات التخزين وتقليل بصمة الذاكرة عند نشر النموذج.
-
استهلاك أقل للطاقة: يمكن أن تستهلك العمليات ذات الدقة المنخفضة لنماذج INT8 المصدرة YOLO طاقة أقل مقارنةً بنماذج FP32، خاصةً للأجهزة التي تعمل بالبطارية.
-
سرعات استدلال محسّنة: يعمل TensorRT على تحسين النموذج للأجهزة المستهدفة، مما قد يؤدي إلى سرعات استدلال أسرع على وحدات معالجة الرسومات والأجهزة المدمجة والمسرعات.
ملاحظة حول سرعات الاستدلال
من المتوقع أن تستغرق المكالمات الاستدلالية القليلة الأولى مع نموذج تم تصديره إلى TensorRT INT8 أوقاتًا أطول من المعتاد في المعالجة المسبقة و/أو الاستدلال و/أو ما بعد المعالجة. قد يحدث هذا أيضًا عند تغيير imgsz
أثناء الاستدلال، خاصةً عند imgsz
ليس هو نفسه ما تم تحديده أثناء التصدير (تصدير imgsz
على TensorRT الملف الشخصي "الأمثل" ).
عيوب استخدام YOLO مع TensorRT INT8
-
الانخفاضات في مقاييس التقييم: استخدام دقة أقل يعني أن
mAP
,Precision
,Recall
أو أي المقاييس الأخرى المستخدمة لتقييم أداء النموذج من المرجح أن يكون أسوأ إلى حد ما. انظر قسم نتائج الأداء لمقارنة الاختلافات فيmAP50
وmAP50-95
عند التصدير باستخدام INT8 على عينة صغيرة من الأجهزة المختلفة. -
زيادة أوقات التطوير: يمكن أن يستغرق العثور على الإعدادات "المثلى" لمعايرة INT8 لمجموعة البيانات والجهاز قدرًا كبيرًا من الاختبارات.
-
تبعية الأجهزة: يمكن أن تكون المعايرة ومكاسب الأداء معتمدة بشكل كبير على الأجهزة، كما أن أوزان النماذج أقل قابلية للنقل.
Ultralytics YOLO TensorRT أداء التصدير
NVIDIA A100
الأداء
تم اختباره باستخدام Ubuntu 22.04.3 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
راجع مستندات الكشف للاطلاع على أمثلة استخدام هذه النماذج المدرّبة على COCO، والتي تتضمن 80 فئة مدرّبة مسبقًا.
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
FP32 | كوفال | 0.52 | 0.52 | 0.37 | 1 | 640 | |
FP16 | التنبؤ | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
FP16 | كوفال | 0.33 | 0.52 | 0.37 | 1 | 640 | |
INT8 | التنبؤ | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
INT8 | كوفال | 0.29 | 0.47 | 0.33 | 1 | 640 |
راجع مستندات التجزئة للاطلاع على أمثلة استخدام هذه النماذج المدرّبة على COCO، والتي تتضمن 80 فئة مدرّبة مسبقًا.
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-seg.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
mAPval 50(M) |
mAPval 50-95(M) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 0.62 | 0.61 | 0.68 | 8 | 640 | ||||
FP32 | كوفال | 0.63 | 0.52 | 0.36 | 0.49 | 0.31 | 1 | 640 | |
FP16 | التنبؤ | 0.40 | 0.39 | 0.44 | 8 | 640 | ||||
FP16 | كوفال | 0.43 | 0.52 | 0.36 | 0.49 | 0.30 | 1 | 640 | |
INT8 | التنبؤ | 0.34 | 0.33 | 0.37 | 8 | 640 | ||||
INT8 | كوفال | 0.36 | 0.46 | 0.32 | 0.43 | 0.27 | 1 | 640 |
راجع مستندات التصنيف للاطلاع على أمثلة استخدام هذه النماذج المدرّبة على ImageNet، والتي تتضمن 1000 فئة مدرّبة مسبقًا.
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-cls.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
أعلى 1 | أعلى 5 | batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 0.26 | 0.25 | 0.28 | 8 | 640 | ||
FP32 | إيمدج نتفال | 0.26 | 0.35 | 0.61 | 1 | 640 | |
FP16 | التنبؤ | 0.18 | 0.17 | 0.19 | 8 | 640 | ||
FP16 | إيمدج نتفال | 0.18 | 0.35 | 0.61 | 1 | 640 | |
INT8 | التنبؤ | 0.16 | 0.15 | 0.57 | 8 | 640 | ||
INT8 | إيمدج نتفال | 0.15 | 0.32 | 0.59 | 1 | 640 |
راجع مستندات تقدير الوضعية للاطلاع على أمثلة استخدام هذه النماذج المدرّبة على COCO، والتي تتضمن فئة واحدة مدرّبة مسبقًا، "شخص".
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-pose.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
mAPval 50(P) |
mAPval 50-95(P) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 0.54 | 0.53 | 0.58 | 8 | 640 | ||||
FP32 | كوفال | 0.55 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
FP16 | التنبؤ | 0.37 | 0.35 | 0.41 | 8 | 640 | ||||
FP16 | كوفال | 0.36 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
INT8 | التنبؤ | 0.29 | 0.28 | 0.33 | 8 | 640 | ||||
INT8 | كوفال | 0.30 | 0.90 | 0.68 | 0.78 | 0.47 | 1 | 640 |
راجع مستندات الكشف الموجّه للاطلاع على أمثلة الاستخدام مع هذه النماذج المدرّبة على DOTAv1، والتي تتضمن 15 فئة مدرّبة مسبقًا.
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n-obb.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 0.52 | 0.51 | 0.59 | 8 | 640 | ||
FP32 | DOTAv1val | 0.76 | 0.50 | 0.36 | 1 | 640 | |
FP16 | التنبؤ | 0.34 | 0.33 | 0.42 | 8 | 640 | ||
FP16 | DOTAv1val | 0.59 | 0.50 | 0.36 | 1 | 640 | |
INT8 | التنبؤ | 0.29 | 0.28 | 0.33 | 8 | 640 | ||
INT8 | DOTAv1val | 0.32 | 0.45 | 0.32 | 1 | 640 |
وحدات معالجة الرسومات الاستهلاكية
أداء الكشف (COCO)
تم اختباره مع نظام التشغيل Windows 10.0.19045, python 3.10.9
, ultralytics==8.2.4
, tensorrt==10.0.0b6
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
FP32 | كوفال | 1.37 | 0.52 | 0.37 | 1 | 640 | |
FP16 | التنبؤ | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
FP16 | كوفال | 0.85 | 0.52 | 0.37 | 1 | 640 | |
INT8 | التنبؤ | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
INT8 | كوفال | 0.74 | 0.47 | 0.33 | 1 | 640 |
تم اختباره مع Windows 10.0.22631, python 3.11.9
, ultralytics==8.2.4
, tensorrt==10.0.1
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 1.76 | 1.69 | 1.87 | 8 | 640 | ||
FP32 | كوفال | 1.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | التنبؤ | 0.86 | 0.75 | 1.00 | 8 | 640 | ||
FP16 | كوفال | 1.43 | 0.52 | 0.37 | 1 | 640 | |
INT8 | التنبؤ | 0.80 | 0.75 | 1.00 | 8 | 640 | ||
INT8 | كوفال | 1.35 | 0.47 | 0.33 | 1 | 640 |
تم اختباره مع نظام التشغيل Pop!_OS 22.04 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 2.84 | 2.84 | 2.85 | 8 | 640 | ||
FP32 | كوفال | 2.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | التنبؤ | 1.09 | 1.09 | 1.10 | 8 | 640 | ||
FP16 | كوفال | 1.20 | 0.52 | 0.37 | 1 | 640 | |
INT8 | التنبؤ | 0.75 | 0.74 | 0.75 | 8 | 640 | ||
INT8 | كوفال | 0.76 | 0.47 | 0.33 | 1 | 640 |
الأجهزة المدمجة
أداء الكشف (COCO)
تم اختباره باستخدام JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12
, ultralytics==8.2.16
, tensorrt==10.0.1
ملاحظة
أزمنة الاستدلال الموضَّحة ل mean
, min
(الأسرع)، و max
(الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقًا yolov8n.engine
الدقة | اختبار التقييم | المتوسط (مللي ثانية) |
الحد الأدنى | الحد الأقصى (مللي ثانية) |
mAPval 50(ب) 50(ب) |
mAPval 50-95(ب) |
batch |
الحجم (بكسل) |
---|---|---|---|---|---|---|---|
FP32 | التنبؤ | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
FP32 | كوفال | 6.17 | 0.52 | 0.37 | 1 | 640 | |
FP16 | التنبؤ | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
FP16 | كوفال | 3.19 | 0.52 | 0.37 | 1 | 640 | |
INT8 | التنبؤ | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
INT8 | كوفال | 2.32 | 0.46 | 0.32 | 1 | 640 |
المعلومات
راجع دليل البدء السريع الخاص بنا على NVIDIA Jetson مع Ultralytics YOLO لمعرفة المزيد حول الإعداد والتهيئة.
طرق التقييم
قم بتوسيع الأقسام أدناه للحصول على معلومات حول كيفية تصدير هذه النماذج واختبارها.
تكوينات التصدير
راجع وضع التصدير للحصول على التفاصيل المتعلقة بوسائط تكوين التصدير.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
حلقة التنبؤ
راجع وضع التنبؤ للحصول على معلومات إضافية.
تكوين التحقق من الصحة
انظر val
الوضع لمعرفة المزيد عن وسيطات تكوين التحقق من الصحة.
Deploying Exported YOLO11 TensorRT Models
Having successfully exported your Ultralytics YOLO11 models to TensorRT format, you're now ready to deploy them. For in-depth instructions on deploying your TensorRT models in various settings, take a look at the following resources:
-
نشر Ultralytics مع خادم Triton : دليلنا حول كيفية استخدام NVIDIA 0 ' Triton الاستدلال ( TensorRT الاستدلال سابقًا) الخادم خصيصًا للاستخدام مع Ultralytics YOLO النماذج.
-
نشر الشبكات العصبية العميقة مع NVIDIA TensorRT: تشرح هذه المقالة كيفية استخدام NVIDIA TensorRT لنشر الشبكات العصبية العميقة على منصات النشر المستندة إلى GPU بكفاءة.
-
الذكاء الاصطناعي المتكامل للحواسيب الشخصية NVIDIA- المستندة إلى : NVIDIA TensorRT النشر: يشرح منشور المدونة هذا استخدام NVIDIA TensorRT لتحسين نماذج الذكاء الاصطناعي ونشرها على أجهزة الكمبيوتر الشخصية المستندة إلى NVIDIA.
-
مستودع GitHub لـ NVIDIA TensorRT :: هذا هو مستودع GitHub الرسمي الذي يحتوي على الكود المصدري والوثائق الخاصة بـ NVIDIA TensorRT .
الملخص
In this guide, we focused on converting Ultralytics YOLO11 models to NVIDIA's TensorRT model format. This conversion step is crucial for improving the efficiency and speed of YOLO11 models, making them more effective and suitable for diverse deployment environments.
لمزيد من المعلومات حول تفاصيل الاستخدام، ألق نظرة على الوثائق الرسميةTensorRT .
If you're curious about additional Ultralytics YOLO11 integrations, our integration guide page provides an extensive selection of informative resources and insights.
الأسئلة الشائعة
How do I convert YOLO11 models to TensorRT format?
To convert your Ultralytics YOLO11 models to TensorRT format for optimized NVIDIA GPU inference, follow these steps:
-
قم بتثبيت الحزمة المطلوبة:
-
Export your YOLO11 model:
For more details, visit the YOLO11 Installation guide and the export documentation.
What are the benefits of using TensorRT for YOLO11 models?
Using TensorRT to optimize YOLO11 models offers several benefits:
- سرعة أسرع في الاستدلال: TensorRT يحسّن طبقات النموذج ويستخدم المعايرة الدقيقة (INT8 و FP16) لتسريع عملية الاستدلال دون التضحية بالدقة بشكل كبير.
- كفاءة الذاكرة: يدير TensorRT الذاكرة tensor بشكل ديناميكي، مما يقلل من النفقات العامة ويحسن استخدام الذاكرة GPU .
- دمج الطبقات: يجمع بين طبقات متعددة في عملية واحدة، مما يقلل من التعقيد الحسابي.
- الضبط التلقائي للنواة: يختار تلقائيًا نواة GPU المحسّنة تلقائيًا لكل طبقة نموذج، مما يضمن أقصى أداء.
لمزيد من المعلومات، استكشف الميزات التفصيليةلموقع TensorRT هنا واقرأ قسم نظرة عامة علىTensorRT .
Can I use INT8 quantization with TensorRT for YOLO11 models?
Yes, you can export YOLO11 models using TensorRT with INT8 quantization. This process involves post-training quantization (PTQ) and calibration:
-
التصدير باستخدام INT8:
-
تشغيل الاستدلال:
لمزيد من التفاصيل، راجع قسم التصدير TensorRT مع التكميم INT8.
How do I deploy YOLO11 TensorRT models on an NVIDIA Triton Inference Server?
Deploying YOLO11 TensorRT models on an NVIDIA Triton Inference Server can be done using the following resources:
- نشر Ultralytics YOLOv8 مع Triton خادم : إرشادات خطوة بخطوة حول إعداد واستخدام Triton Inference Server Inference Server.
- NVIDIA Triton وثائق الخادم الاستدلالي: التوثيق الرسمي NVIDIA لخيارات النشر والتكوينات التفصيلية.
ستساعدك هذه الأدلة على دمج نماذج YOLOv8 بكفاءة في بيئات النشر المختلفة.
ما هي تحسينات الأداء التي لوحظت مع نماذج YOLOv8 المصدرة إلى TensorRT ؟
يمكن أن تختلف تحسينات الأداء مع TensorRT بناءً على الأجهزة المستخدمة. فيما يلي بعض المعايير النموذجية:
-
NVIDIA A100:
- استدلال FP32: ~حوالي 0.52 مللي ثانية/صورة
- استدلال FP16: ~حوالي 0.34 مللي ثانية/صورة
- الاستدلال INT8 ~حوالي 0.28 مللي ثانية/صورة
- انخفاض طفيف في mAP مع دقة INT8، ولكن تحسن كبير في السرعة.
-
وحدات معالجة الرسومات الاستهلاكية (مثل RTX 3080):
- استدلال FP32 ~حوالي 1.06 مللي ثانية/صورة
- استدلال FP16: ~حوالي 0.62 مللي ثانية/صورة
- استدلال INT8 ~حوالي 0.52 مللي ثانية/صورة
يمكن العثور على معايير الأداء التفصيلية لتكوينات الأجهزة المختلفة في قسم الأداء.
للحصول على رؤى أكثر شمولاً حول أداء TensorRT ، راجع وثائقUltralytics وتقارير تحليل الأداء الخاصة بنا.