تصدير TensorRT لنماذج YOLO26

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

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

TensorRT

NVIDIA TensorRT optimization workflow

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

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

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

الميزات الرئيسية لنماذج TensorRT

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

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

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

TensorRT neural network layer fusion optimization

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

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

خيارات النشر في TensorRT

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

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

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

NVIDIA TensorRT optimization workflow

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

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

تصدير نماذج YOLO26 إلى TensorRT

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

التثبيت

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

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

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

الاستخدام

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

الاستخدام
from ultralytics import YOLO

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

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo26n.engine'

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

# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")

وسائط التصدير

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

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

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

تصدير TensorRT مع تكميم INT8

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

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

تلميحة

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

تكوين تصدير INT8

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

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

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

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

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

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

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

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

ملاحظة

يمكن أن يؤدي استخدام دفعات صغيرة إلى قياس غير دقيق أثناء معايرة 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 GiB من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
  4. يستخدم مجموعة بيانات COCO للمعايرة، وتحديداً الصور المستخدمة لـ التحقق (5,000 إجمالي).
ذاكرة المعايرة المؤقتة

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

مزايا استخدام YOLO مع TensorRT INT8

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

  • استهلاك أقل للطاقة: يمكن لعمليات الدقة المنخفضة لنماذج YOLO المُصدَّرة بتنسيق INT8 أن تستهلك طاقة أقل مقارنة بنماذج 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(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

وحدات معالجة الرسوميات للمستهلك (Consumer GPUs)

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

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

ملاحظة

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

الدقةاختبار التقييمالمتوسط
(مللي ثانية)
الأدنى | الأقصى
(مللي ثانية)
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

الأجهزة المدمجة (Embedded Devices)

أداء الاكتشاف (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(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 لمعرفة المزيد حول الإعداد والتهيئة.

طرق التقييم

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

إعدادات التصدير

راجع وضع التصدير (export mode) للحصول على تفاصيل حول وسائط إعداد التصدير.

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"
)
دورة التنبؤ (Predict loop)

راجع وضع التنبؤ (predict mode) لمزيد من المعلومات.

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 mode) لمعرفة المزيد حول وسائط إعداد التحقق.

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",
)

نشر نماذج YOLO26 TensorRT المصدرة

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

ملخص

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

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

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

الأسئلة الشائعة

كيف أقوم بتحويل نماذج 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 ووثائق التصدير.

ما هي فوائد استخدام TensorRT لنماذج YOLO26؟

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

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

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

هل يمكنني استخدام تكميم 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.

كيف يمكنني نشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference؟

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

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

ما هي تحسينات الأداء الملحوظة مع نماذج YOLO26 المُصدَّرة إلى 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 وتقارير تحليل الأداء الخاصة بنا.

التعليقات