Meet YOLO26: next-gen vision AI.

Link to this sectionتصدير TensorRT لنماذج YOLO26#

قد يتطلب نشر نماذج الرؤية الحاسوبية في بيئات عالية الأداء تنسيقاً يزيد من السرعة والكفاءة. وهذا ينطبق بشكل خاص عند نشر نموذجك على وحدات معالجة الرسومات (GPUs) من NVIDIA.

باستخدام تنسيق تصدير TensorRT، يمكنك تعزيز نماذج Ultralytics YOLO26 للحصول على استنتاج سريع وفعال على أجهزة NVIDIA. سيوفر لك هذا الدليل خطوات سهلة المتابعة لعملية التحويل ويساعدك على تحقيق أقصى استفادة من تقنية NVIDIA المتقدمة في مشاريع التعلم العميق الخاصة بك.

Link to this sectionTensorRT#

NVIDIA TensorRT optimization workflow

يعد TensorRT، الذي طورته NVIDIA، مجموعة تطوير برمجيات (SDK) متقدمة مصممة لاستنتاج التعلم العميق عالي السرعة. وهو مناسب تماماً للتطبيقات في الوقت الفعلي مثل اكتشاف الأشياء.

تعمل هذه المجموعة من الأدوات على تحسين نماذج التعلم العميق لوحدات معالجة الرسومات من NVIDIA وتؤدي إلى عمليات أسرع وأكثر كفاءة. تخضع نماذج TensorRT لتحسين TensorRT، والذي يتضمن تقنيات مثل دمج الطبقات (layer fusion)، ومعايرة الدقة (INT8 و FP16)، وإدارة ذاكرة الموتر الديناميكية، والضبط التلقائي للنواة (kernel auto-tuning). يتيح تحويل نماذج التعلم العميق إلى تنسيق TensorRT للمطورين إدراك إمكانات وحدات معالجة الرسومات من NVIDIA بالكامل.

يُعرف TensorRT بتوافقه مع تنسيقات النماذج المختلفة، بما في ذلك TensorFlow و PyTorch و ONNX، مما يوفر للمطورين حلاً مرناً لدمج النماذج وتحسينها من أطر عمل مختلفة. تتيح هذه المرونة نشر النماذج بكفاءة عبر بيئات الأجهزة والبرامج المتنوعة.

Link to this sectionالميزات الرئيسية لنماذج TensorRT#

توفر نماذج TensorRT مجموعة من الميزات الرئيسية التي تساهم في كفاءتها وفعاليتها في استنتاج التعلم العميق عالي السرعة:

  • معايرة الدقة (Precision Calibration): يدعم TensorRT معايرة الدقة، مما يسمح بضبط النماذج لتلبية متطلبات دقة محددة. يتضمن ذلك دعم تنسيقات الدقة المنخفضة مثل INT8 و FP16، والتي يمكن أن تعزز سرعة الاستنتاج مع الحفاظ على مستويات دقة مقبولة.

  • دمج الطبقات (Layer Fusion): تتضمن عملية تحسين TensorRT دمج الطبقات، حيث يتم دمج طبقات متعددة من الشبكة العصبية في عملية واحدة. هذا يقلل من العبء الحسابي ويحسن سرعة الاستنتاج عن طريق تقليل الوصول إلى الذاكرة والحسابات.

TensorRT neural network layer fusion optimization

  • إدارة ذاكرة الموتر الديناميكية (Dynamic Tensor Memory Management): يدير TensorRT استخدام ذاكرة الموتر بكفاءة أثناء الاستنتاج، مما يقلل من عبء الذاكرة ويحسن تخصيص الذاكرة. ينتج عن هذا استخدام أكثر كفاءة لذاكرة GPU.

  • الضبط التلقائي للنواة (Automatic Kernel Tuning): يطبق TensorRT الضبط التلقائي للنواة لاختيار نواة GPU الأكثر تحسيناً لكل طبقة من النموذج. يضمن هذا النهج التكيفي أن النموذج يستفيد بالكامل من القوة الحسابية لـ GPU.

Link to this sectionخيارات النشر في TensorRT#

قبل أن ننظر إلى الكود الخاص بتصدير نماذج YOLO26 إلى تنسيق TensorRT، دعنا نفهم أين تُستخدم نماذج TensorRT عادةً.

يوفر TensorRT العديد من خيارات النشر، ويوازن كل خيار بين سهولة التكامل وتحسين الأداء والمرونة بشكل مختلف:

  • النشر داخل TensorFlow: يدمج هذا الأسلوب TensorRT في TensorFlow، مما يسمح بتشغيل النماذج المحسنة في بيئة TensorFlow مألوفة. إنه مفيد للنماذج التي تحتوي على مزيج من الطبقات المدعومة وغير المدعومة، حيث يمكن لـ TF-TRT التعامل مع هذه بكفاءة.

NVIDIA TensorRT optimization workflow

  • واجهة برمجة تطبيقات وقت التشغيل المستقلة (Standalone TensorRT Runtime API): توفر تحكماً دقيقاً، وهي مثالية للتطبيقات الحساسة للأداء. إنها أكثر تعقيداً ولكنها تسمح بتنفيذ مخصص للمشغلين غير المدعومين.

  • خادم استنتاج NVIDIA Triton (NVIDIA Triton Inference Server): خيار يدعم النماذج من أطر عمل مختلفة. وهو مناسب بشكل خاص للاستنتاج السحابي أو على الحافة (edge)، حيث يوفر ميزات مثل تنفيذ النموذج المتزامن وتحليل النموذج.

Link to this sectionتصدير نماذج YOLO26 إلى TensorRT#

يمكنك تحسين كفاءة التنفيذ وتعزيز الأداء عن طريق تحويل نماذج YOLO26 إلى تنسيق TensorRT.

Link to this sectionالتثبيت#

لتثبيت الحزمة المطلوبة، قم بتشغيل:

التثبيت
# Install the required package for YOLO26
pip install ultralytics

للحصول على تعليمات مفصلة وأفضل الممارسات المتعلقة بعملية التثبيت، راجع دليل تثبيت YOLO26. أثناء تثبيت الحزم المطلوبة لـ YOLO26، إذا واجهت أي صعوبات، استشر دليل المشكلات الشائعة للحصول على حلول ونصائح.

Link to this sectionالاستخدام#

قبل الغوص في تعليمات الاستخدام، تأكد من الاطلاع على مجموعة نماذج YOLO26 التي تقدمها Ultralytics. سيساعدك هذا في اختيار النموذج الأنسب لمتطلبات مشروعك.

يدعم تنسيق TensorRT أوضاع التصدير (Export) و التنبؤ (Predict) و التحقق (Validate). يتطلب الاستنتاج والتحقق وجود GPU من NVIDIA. قم بتصدير نموذجك، ثم قم بتحميل النموذج المصدر لتشغيل الاستنتاج أو التحقق من دقته.

التصدير
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo26n.engine'
التنبؤ
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
التحقق
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Link to this sectionوسائط التصدير#

الوسيطالنوعالافتراضيالوصف
formatstr'engine'التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة.
imgszint أو tuple640حجم الصورة المطلوب لمدخل النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو زوجاً مرتباً (height, width) لأبعاد محددة.
halfboolFalseيُمكّن تكميم FP16 (نصف الدقة)، مما يقلل من حجم النموذج ويسرع الاستنتاج على الأجهزة المدعومة.
int8boolFalseينشط تكميم INT8، مما يزيد من ضغط النموذج ويسرع الاستدلال مع الحد الأدنى من فقدان الدقة، بشكل أساسي لأجهزة الحافة.
dynamicboolFalseيسمح بأحجام إدخال ديناميكية، مما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة.
simplifyboolTrueيبسط رسم بياني للنموذج باستخدام onnxslim، مما قد يحسن الأداء والتوافق.
workspacefloat أو NoneNoneيضبط الحد الأقصى لحجم مساحة العمل (workspace) بالجيجابايت (GiB) لتحسينات TensorRT، مما يوازن بين استخدام الذاكرة والأداء؛ استخدم None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز.
nmsboolFalseيضيف كبت غير الحد الأقصى (NMS)، وهو أمر ضروري لمعالجة الاكتشاف بدقة وكفاءة.
batchint1يحدد حجم استدلال دفعة النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر في وقت واحد في وضع predict.
datastr'coco8.yaml'مسار ملف تكوين مجموعة البيانات (الافتراضي: coco8.yaml)، وهو ضروري للتكميم.
fractionfloat1.0يحدد جزءاً من مجموعة البيانات لاستخدامه في معايرة تكميم INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تمكين INT8، فسيتم استخدام مجموعة البيانات الكاملة.
devicestrNoneيحدد الجهاز للتصدير: GPU (device=0)، أو DLA لـ NVIDIA Jetson (device=dla:0 أو device=dla:1).
نصيحة

يرجى التأكد من استخدام GPU مع دعم CUDA عند التصدير إلى TensorRT.

TensorRT 11.0 و DLA

لا يدعم TensorRT 11.0 تقنية DLA؛ استخدم TensorRT 10.x لـ device=dla:0 أو device=dla:1، أو قم بتصدير محرك GPU لـ TensorRT 11.0.

لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة وثائق Ultralytics حول التصدير.

Link to this sectionتصدير TensorRT مع تكميم INT8#

يؤدي تصدير نماذج Ultralytics YOLO باستخدام TensorRT مع دقة INT8 إلى تنفيذ تكميم ما بعد التدريب (PTQ). يستخدم TensorRT المعايرة لـ PTQ، التي تقيس توزيع التنشيطات داخل كل موتر تنشيط أثناء معالجة نموذج YOLO للاستنتاج على بيانات إدخال تمثيلية، ثم يستخدم هذا التوزيع لتقدير قيم القياس لكل موتر. كل موتر تنشيط هو مرشح للتكميم وله مقياس مرتبط يتم استنتاجه بواسطة عملية المعايرة.

تكميم TensorRT 11

أزال TensorRT 11 التكميم الضمني وواجهة IInt8Calibrator. في TensorRT 11 والإصدارات الأحدث، تقوم Ultralytics بتنفيذ تكميم INT8 باستخدام التكميم الصريح لـ NVIDIA ModelOpt، والذي يدرج عقد Q/DQ في رسم ONNX البياني قبل بناء محرك مكتوب بقوة، ويتم تطبيق FP16 مع تحويل الدقة المختلطة ModelOpt AutoCast. تعمل وسائط int8=True و half=True و data بنفس الطريقة؛ يتم تثبيت ModelOpt تلقائياً عند الاستخدام الأول. في TensorRT 7-10، يتم استخدام المعاير القديم الموصوف أدناه بدلاً من ذلك.

عند معالجة الشبكات المكممة ضمنياً، يستخدم TensorRT تقنية INT8 بشكل انتهازي لتحسين وقت تنفيذ الطبقة. إذا كانت الطبقة تعمل بشكل أسرع في INT8 ولديها مقاييس تكميم معينة على مدخلات ومخرجات بياناتها، فسيتم تعيين نواة بدقة INT8 لتلك الطبقة، وإلا يختار TensorRT دقة إما FP32 أو FP16 للنواة بناءً على أيهما ينتج وقت تنفيذ أسرع لتلك الطبقة.

نصيحة

من الحاسم التأكد من استخدام نفس الجهاز الذي سيستخدم أوزان نموذج TensorRT للنشر عند التصدير بدقة INT8، حيث يمكن أن تختلف نتائج المعايرة عبر الأجهزة.

Link to this sectionتكوين تصدير INT8#

الوسائط المقدمة عند استخدام تصدير لنموذج Ultralytics YOLO ستؤثر بشكل كبير على أداء النموذج المصدر. ستحتاج أيضاً إلى اختيارها بناءً على موارد الجهاز المتاحة، ومع ذلك فإن الوسائط الافتراضية يجب أن تعمل لمعظم وحدات معالجة الرسومات المنفصلة من NVIDIA بمعمارية Ampere (أو أحدث). خوارزمية المعايرة المستخدمة هي "MINMAX_CALIBRATION" لتصديرات GPU، بينما تستخدم تصديرات DLA على NVIDIA Jetson "ENTROPY_CALIBRATION_2". يمكنك قراءة المزيد من التفاصيل حول الخيارات المتاحة في دليل مطور TensorRT. وجدت اختبارات Ultralytics أن "MINMAX_CALIBRATION" هو الخيار الأفضل لتصديرات GPU، ويتم اختيار الخوارزمية تلقائياً بناءً على جهاز التصدير.

  • workspace : يتحكم في حجم (بالجيجابايت) تخصيص ذاكرة الجهاز أثناء تحويل أوزان النموذج.

    • قم بضبط قيمة workspace وفقاً لاحتياجات المعايرة وتوفر الموارد. في حين أن workspace الأكبر قد يزيد من وقت المعايرة، فإنه يسمح لـ TensorRT باستكشاف مجموعة أوسع من تكتيكات التحسين، مما قد يعزز أداء النموذج ودقة النموذج. على العكس من ذلك، يمكن لـ workspace أصغر أن يقلل وقت المعايرة ولكنه قد يحد من استراتيجيات التحسين، مما يؤثر على جودة النموذج المكمم.

    • القيمة الافتراضية هي workspace=None، والتي ستسمح لـ TensorRT بتخصيص الذاكرة تلقائياً. عند التكوين يدوياً، قد تحتاج هذه القيمة إلى الزيادة إذا تعطلت المعايرة (خرجت دون سابق إنذار).

    • سيبلغ TensorRT عن UNSUPPORTED_STATE أثناء التصدير إذا كانت قيمة workspace أكبر من الذاكرة المتاحة للجهاز، مما يعني أنه يجب خفض قيمة workspace أو تعيينها على None.

    • إذا تم تعيين workspace على القيمة القصوى وفشلت/تعطلت المعايرة، ففكر في استخدام None للتخصيص التلقائي أو عن طريق تقليل قيم imgsz و batch لتقليل متطلبات الذاكرة.

    • تذكر أن المعايرة لـ INT8 خاصة بكل جهاز، حيث أن استعارة GPU "عالي الأداء" للمعايرة قد يؤدي إلى ضعف الأداء عند تشغيل الاستنتاج على جهاز آخر.

  • batch : الحد الأقصى لحجم الدفعة (batch-size) الذي سيتم استخدامه للاستنتاج. أثناء الاستنتاج يمكن استخدام دفعات أصغر، لكن الاستنتاج لن يقبل دفعات أكبر مما تم تحديده.

ملاحظة

استخدام دفعات صغيرة يمكن أن يؤدي إلى قياس غير دقيق أثناء معايرة INT8. هذا لأن العملية تتكيف بناءً على البيانات التي تراها. قد لا تلتقط الدفعات الصغيرة النطاق الكامل للقيم، مما يؤدي إلى مشاكل في المعايرة النهائية. يساعد استخدام حجم دفعة أكبر في ضمان نتائج معايرة أكثر تمثيلية.

أدت تجارب NVIDIA بهم إلى التوصية باستخدام 500 صورة معايرة على الأقل تكون تمثيلية للبيانات الخاصة بنموذجك، مع معايرة تكميم INT8. هذا دليل إرشادي وليس متطلباً صارماً، وستحتاج إلى تجربة ما هو مطلوب ليعمل بشكل جيد مع مجموعة البيانات الخاصة بك. نظراً لأن بيانات المعايرة مطلوبة لمعايرة INT8 مع TensorRT، تأكد من استخدام وسيط data عند تعيين int8=True لـ TensorRT واستخدم data="my_dataset.yaml"، والذي سيستخدم الصور من التحقق للمعايرة معها. عند عدم تمرير أي قيمة لـ data مع التصدير إلى TensorRT مع تكميم INT8، سيكون الافتراضي هو استخدام إحدى مجموعات البيانات التجريبية "الصغيرة" بناءً على مهمة النموذج بدلاً من طرح خطأ.

مثال
from ultralytics import YOLO

model = YOLO("yolo26n.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("yolo26n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. تصدير مع محاور ديناميكية، سيتم تمكين هذا افتراضياً عند التصدير مع int8=True حتى عند عدم تعيينه صراحةً. راجع وسائط التصدير للحصول على معلومات إضافية.
  2. يضبط الحد الأقصى لحجم الدفعة على 8 للنموذج المصدر ومعايرة INT8.
  3. يخصص 4 جيجابايت من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
  4. يستخدم مجموعة بيانات COCO للمعايرة، وتحديداً الصور المستخدمة لـ التحقق (5000 إجمالي).
ذاكرة التخزين المؤقت للمعايرة (Calibration Cache)

سيقوم TensorRT بإنشاء .cache معايرة يمكن إعادة استخدامه لتسريع تصدير أوزان النموذج المستقبلية باستخدام نفس البيانات، ولكن هذا قد يؤدي إلى معايرة ضعيفة عندما تكون البيانات مختلفة تماماً أو إذا تم تغيير قيمة batch بشكل كبير. في هذه الظروف، يجب إعادة تسمية .cache الموجود ونقله إلى دليل مختلف أو حذفه تماماً.

Link to this sectionمزايا استخدام YOLO مع TensorRT INT8#

  • حجم نموذج أصغر: يمكن أن يؤدي التكميم من FP32 إلى INT8 إلى تقليل حجم النموذج بمقدار 4 مرات (على القرص أو في الذاكرة)، مما يؤدي إلى أوقات تنزيل أسرع، ومتطلبات تخزين أقل، وتقليل بصمة الذاكرة عند نشر النموذج.

  • استهلاك أقل للطاقة: يمكن لعمليات الدقة المنخفضة لنماذج YOLO المصدرة بتنسيق INT8 أن تستهلك طاقة أقل مقارنة بنماذج FP32، خاصة للأجهزة التي تعمل بالبطارية.

  • سرعات استنتاج محسنة: يعمل TensorRT على تحسين النموذج للأجهزة المستهدفة، مما قد يؤدي إلى سرعات استنتاج أسرع على وحدات معالجة الرسومات والأجهزة المدمجة والمسرعات.

ملاحظة حول سرعات الاستنتاج

يمكن توقع أن تستغرق مكالمات الاستنتاج القليلة الأولى مع نموذج مصدر إلى TensorRT INT8 أوقات معالجة مسبقة، أو استنتاج، أو معالجة لاحقة أطول من المعتاد. قد يحدث هذا أيضاً عند تغيير imgsz أثناء الاستنتاج، خاصة عندما لا يكون imgsz هو نفسه ما تم تحديده أثناء التصدير (يتم تعيين imgsz للتصدير كملف تعريف "مثالي" لـ TensorRT).

Link to this sectionعيوب استخدام YOLO مع TensorRT INT8#

  • انخفاض في مقاييس التقييم: استخدام دقة أقل يعني أن mAP أو Precision أو Recall أو أي مقياس آخر يستخدم لتقييم أداء النموذج من المرجح أن يكون أسوأ قليلاً. راجع قسم نتائج الأداء لمقارنة الاختلافات في mAP50 و mAP50-95 عند التصدير مع INT8 على عينة صغيرة من أجهزة مختلفة.

  • زيادة أوقات التطوير: قد يستغرق العثور على الإعدادات "المثالية" لمعايرة INT8 لمجموعة البيانات والجهاز قدراً كبيراً من الاختبار.

  • التبعية على الأجهزة: قد تكون مكاسب المعايرة والأداء معتمدة بشكل كبير على الأجهزة، وتكون أوزان النموذج أقل قابلية للنقل.

Link to this sectionأداء تصدير Ultralytics YOLO TensorRT#

Link to this sectionNVIDIA 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

الدقة (Precision)اختبار التقييمالمتوسط
(ملي ثانية)
الحد الأدنى | الأقصى
(ملي ثانية)
mAPval
50(B)
mAPval
50-95(B)
batchالحجم
(بكسل)
FP32التنبؤ0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16التنبؤ0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8التنبؤ0.280.27 | 0.318640
INT8COCOval0.290.470.331640

Link to this sectionوحدات معالجة الرسومات للمستهلكين#

أداء الكشف (COCO)

تم الاختبار باستخدام Windows 10.0.19045، python 3.10.9، ultralytics==8.2.4، tensorrt==10.0.0b6

ملاحظة

أوقات الاستنتاج المعروضة لـ mean (المتوسط)، و min (الأسرع)، و max (الأبطأ) لكل اختبار باستخدام الأوزان المدربة مسبقاً yolov8n.engine

الدقة (Precision)اختبار التقييمالمتوسط
(ملي ثانية)
الحد الأدنى | الأقصى
(ملي ثانية)
mAPval
50(B)
mAPval
50-95(B)
batchالحجم
(بكسل)
FP32التنبؤ1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16التنبؤ0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8التنبؤ0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Link to this sectionأجهزة مضمنة#

أداء الكشف (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

الدقة (Precision)اختبار التقييمالمتوسط
(ملي ثانية)
الحد الأدنى | الأقصى
(ملي ثانية)
mAPval
50(B)
mAPval
50-95(B)
batchالحجم
(بكسل)
FP32التنبؤ6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16التنبؤ3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8التنبؤ2.302.29 | 2.358640
INT8COCOval2.320.460.321640
معلومات

راجع دليل البدء السريع على NVIDIA Jetson مع Ultralytics YOLO لمعرفة المزيد حول الإعداد والتكوين.

معلومات

راجع دليل البدء السريع على NVIDIA DGX Spark مع Ultralytics YOLO لمعرفة المزيد حول الإعداد والتكوين.

Link to this sectionطرق التقييم#

قم بتوسيع الأقسام أدناه للحصول على معلومات حول كيفية تصدير هذه النماذج واختبارها.

تكوينات التصدير

راجع وضع التصدير للحصول على تفاصيل حول وسيطات تكوين التصدير.

from ultralytics import YOLO

model = YOLO("yolo26n.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"
)
حلقة التنبؤ

راجع وضع التنبؤ للحصول على معلومات إضافية.

import cv2

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
تكوين التحقق

راجع val وضع لمعرفة المزيد حول وسيطات تكوين التحقق.

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Link to this sectionنشر نماذج YOLO26 المصدرة إلى TensorRT#

بعد تصدير نماذج Ultralytics YOLO26 الخاصة بك بنجاح إلى تنسيق TensorRT، أنت الآن جاهز لنشرها. للحصول على تعليمات مفصلة حول نشر نماذج TensorRT الخاصة بك في بيئات مختلفة، ألقِ نظرة على الموارد التالية:

Link to this sectionملخص#

في هذا الدليل، ركزنا على تحويل نماذج Ultralytics YOLO26 إلى تنسيق نموذج TensorRT الخاص بـ NVIDIA. تعد خطوة التحويل هذه حاسمة لتحسين كفاءة وسرعة نماذج YOLO26، مما يجعلها أكثر فاعلية ومناسبة لبيئات النشر المتنوعة.

لمزيد من المعلومات حول تفاصيل الاستخدام، ألقِ نظرة على الوثائق الرسمية لـ TensorRT.

إذا كنت مهتماً بمعرفة المزيد عن تكاملات Ultralytics YOLO26 الإضافية، فإن صفحة دليل التكامل الخاصة بنا توفر مجموعة واسعة من الموارد والرؤى المعلوماتية.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني تحويل نماذج YOLO26 إلى تنسيق TensorRT؟#

لتحويل نماذج Ultralytics YOLO26 الخاصة بك إلى تنسيق TensorRT من أجل استدلال محسّن على NVIDIA GPU، اتبع الخطوات التالية:

  1. تثبيت الحزمة المطلوبة:

    pip install ultralytics
  2. تصدير نموذج YOLO26 الخاص بك:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="engine")  # creates 'yolo26n.engine'
    
    # Run inference
    model = YOLO("yolo26n.engine")
    results = model("https://ultralytics.com/images/bus.jpg")

لمزيد من التفاصيل، قم بزيارة دليل تثبيت YOLO26 ووثائق التصدير.

Link to this sectionما هي فوائد استخدام TensorRT لنماذج YOLO26؟#

يوفر استخدام TensorRT لتحسين نماذج YOLO26 العديد من المزايا:

  • سرعة استدلال أسرع: يعمل TensorRT على تحسين طبقات النموذج ويستخدم معايرة الدقة (INT8 وFP16) لتسريع الاستدلال دون التضحية بالدقة بشكل كبير.
  • كفاءة الذاكرة: يدير TensorRT ذاكرة الـ tensor ديناميكيًا، مما يقلل من النفقات العامة ويحسن استخدام ذاكرة GPU.
  • دمج الطبقات: يجمع طبقات متعددة في عمليات مفردة، مما يقلل من التعقيد الحسابي.
  • الضبط التلقائي للنواة (Kernel Auto-Tuning): يختار تلقائيًا أنوية GPU المحسّنة لكل طبقة من طبقات النموذج، مما يضمن أقصى أداء.

لمعرفة المزيد، استكشف وثائق TensorRT الرسمية من NVIDIA ونظرتنا العامة المتعمقة حول TensorRT.

Link to this sectionهل يمكنني استخدام تكميم INT8 مع TensorRT لنماذج YOLO26؟#

نعم، يمكنك تصدير نماذج YOLO26 باستخدام TensorRT مع تكميم INT8. تتضمن هذه العملية التكميم بعد التدريب (PTQ) والمعايرة:

  1. التصدير باستخدام INT8:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
  2. تشغيل الاستدلال:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.engine", task="detect")
    result = model.predict("https://ultralytics.com/images/bus.jpg")

لمزيد من التفاصيل، راجع قسم تصدير TensorRT مع تكميم INT8.

Link to this sectionكيف أقوم بنشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference Server؟#

يمكن نشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference Server باستخدام الموارد التالية:

ستساعدك هذه الأدلة على دمج نماذج YOLO26 بكفاءة في بيئات نشر متنوعة.

Link to this sectionما هي تحسينات الأداء التي تمت ملاحظتها مع نماذج YOLO26 المصدرة إلى TensorRT؟#

يمكن أن تختلف تحسينات الأداء مع TensorRT بناءً على الأجهزة المستخدمة. إليك بعض المعايير النموذجية:

  • NVIDIA A100:

    • FP32 الاستدلال: ~0.52 مللي ثانية / صورة
    • FP16 الاستدلال: ~0.34 مللي ثانية / صورة
    • INT8 الاستدلال: ~0.28 مللي ثانية / صورة
    • انخفاض طفيف في mAP مع دقة INT8، ولكن تحسن ملحوظ في السرعة.
  • GPUs للمستهلكين (مثل RTX 3080):

    • FP32 الاستدلال: ~1.06 مللي ثانية / صورة
    • FP16 الاستدلال: ~0.62 مللي ثانية / صورة
    • INT8 الاستدلال: ~0.52 مللي ثانية / صورة

يمكن العثور على معايير أداء مفصلة لتكوينات الأجهزة المختلفة في قسم الأداء.

للحصول على رؤى أكثر شمولاً حول أداء TensorRT، ارجع إلى وثائق Ultralytics وتقارير تحليل الأداء الخاصة بنا.

التعليقات