Link to this sectionتصدير TensorRT لنماذج YOLO26#
قد يتطلب نشر نماذج الرؤية الحاسوبية في بيئات عالية الأداء تنسيقًا يزيد من السرعة والكفاءة. وهذا صحيح بشكل خاص عند نشر نموذجك على وحدات معالجة الرسومات من NVIDIA.
باستخدام تنسيق تصدير TensorRT، يمكنك تعزيز نماذج Ultralytics YOLO26 للحصول على استنتاج سريع وفعال على أجهزة NVIDIA. سيوفر لك هذا الدليل خطوات سهلة المتابعة لعملية التحويل ويساعدك على تحقيق أقصى استفادة من تقنية NVIDIA المتقدمة في مشاريع التعلم العميق الخاصة بك.
Link to this sectionTensorRT#
TensorRT، الذي طورته شركة NVIDIA، هو مجموعة أدوات تطوير برمجية (SDK) متقدمة مصممة للاستنتاج عالي السرعة في التعلم العميق. وهي مناسبة تمامًا للتطبيقات ذات الوقت الفعلي مثل اكتشاف الكائنات.
تعمل مجموعة الأدوات هذه على تحسين نماذج التعلم العميق لوحدات معالجة الرسومات من NVIDIA وتؤدي إلى عمليات أسرع وأكثر كفاءة. تخضع نماذج TensorRT لتحسين TensorRT، والذي يتضمن تقنيات مثل دمج الطبقات، ومعايرة الدقة (INT8 و FP16)، وإدارة ذاكرة الموتر الديناميكية، والضبط التلقائي للنواة. يسمح تحويل نماذج التعلم العميق إلى تنسيق TensorRT للمطورين بإدراك إمكانات وحدات معالجة الرسومات من NVIDIA بالكامل.
يُعرف TensorRT بتوافقه مع تنسيقات النماذج المختلفة، بما في ذلك TensorFlow و PyTorch و ONNX، مما يوفر للمطورين حلاً مرنًا لدمج النماذج وتحسينها من أطر عمل مختلفة. تتيح هذه المرونة نشر النماذج بكفاءة عبر بيئات الأجهزة والبرامج المتنوعة.
Link to this sectionالميزات الرئيسية لنماذج TensorRT#
تقدم نماذج TensorRT مجموعة من الميزات الرئيسية التي تساهم في كفاءتها وفعاليتها في الاستنتاج عالي السرعة للتعلم العميق:
-
معايرة الدقة: يدعم TensorRT معايرة الدقة، مما يسمح بضبط النماذج لتلبية متطلبات دقة محددة. يتضمن ذلك دعم تنسيقات الدقة المنخفضة مثل INT8 و FP16، والتي يمكن أن تزيد من سرعة الاستنتاج مع الحفاظ على مستويات دقة مقبولة.
-
دمج الطبقات: تتضمن عملية تحسين TensorRT دمج الطبقات، حيث يتم دمج طبقات متعددة من شبكة عصبية في عملية واحدة. هذا يقلل من النفقات العامة الحسابية ويحسن سرعة الاستنتاج عن طريق تقليل الوصول إلى الذاكرة والحسابات.
-
إدارة ذاكرة الموتر الديناميكية: يدير TensorRT استخدام ذاكرة الموتر بكفاءة أثناء الاستنتاج، مما يقلل من النفقات العامة للذاكرة ويحسن تخصيص الذاكرة. وهذا يؤدي إلى استخدام أكثر كفاءة لذاكرة GPU.
-
الضبط التلقائي للنواة: يطبق TensorRT الضبط التلقائي للنواة لاختيار نواة GPU الأكثر تحسينًا لكل طبقة من النموذج. يضمن هذا النهج التكيفي أن النموذج يستفيد بشكل كامل من القوة الحسابية لـ GPU.
Link to this sectionخيارات النشر في TensorRT#
قبل أن ننظر إلى الكود الخاص بتصدير نماذج YOLO26 إلى تنسيق TensorRT، دعنا نفهم أين تُستخدم نماذج TensorRT عادةً.
يوفر TensorRT العديد من خيارات النشر، ويوازن كل خيار بين سهولة التكامل وتحسين الأداء والمرونة بشكل مختلف:
- النشر داخل TensorFlow: تدمج هذه الطريقة TensorRT في TensorFlow، مما يسمح بتشغيل النماذج المحسنة في بيئة TensorFlow مألوفة. إنها مفيدة للنماذج التي تحتوي على مزيج من الطبقات المدعومة وغير المدعومة، حيث يمكن لـ TF-TRT التعامل معها بكفاءة.
-
واجهة برمجة تطبيقات وقت تشغيل TensorRT المستقلة: توفر تحكمًا دقيقًا، وهي مثالية للتطبيقات ذات الأداء الحساس. إنها أكثر تعقيدًا ولكنها تسمح بالتنفيذ المخصص للمشغلات غير المدعومة.
-
خادم استنتاج NVIDIA Triton: خيار يدعم النماذج من مختلف أطر العمل. مناسب بشكل خاص للاستنتاج السحابي أو على الحافة، ويوفر ميزات مثل تنفيذ النموذج المتزامن وتحليل النموذج.
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 أوضاع التصدير و التنبؤ و التحقق. يتطلب الاستنتاج والتحقق وحدة معالجة رسومات 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وسائط التصدير#
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
format | str | 'engine' | التنسيق المستهدف للنموذج المصدر، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz | int أو tuple | 640 | حجم الصورة المطلوب لمدخلات النموذج. يمكن أن يكون عدداً صحيحاً للصور المربعة أو صفاً (height, width) لأبعاد محددة. |
half | bool | False | يُفعل كمية FP16 (نصف الدقة)، مما يقلل من حجم النموذج وربما يسرع الاستنتاج على الأجهزة المدعومة. |
int8 | bool | False | يُفعل كمية INT8، مما يضغط النموذج بشكل أكبر ويسرع الاستنتاج مع الحد الأدنى من فقدان الدقة، بشكل أساسي للأجهزة الطرفية. |
dynamic | bool | False | يسمح بأحجام مدخلات ديناميكية، مما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة. |
simplify | bool | True | يبسط رسم بياني النموذج باستخدام onnxslim، مما قد يحسن الأداء والتوافق. |
workspace | float أو None | None | يحدد الحد الأقصى لحجم مساحة العمل بـ GiB لتحسينات TensorRT، مما يوازن بين استخدام الذاكرة والأداء؛ استخدم None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز. |
nms | bool | False | يضيف كبح غير الأعظمي (NMS)، وهو أمر ضروري لمعالجة الكشف اللاحقة بدقة وكفاءة. |
batch | int | 1 | يحدد حجم استدلال دفعة النموذج المصدر أو الحد الأقصى لعدد الصور التي سيعالجها النموذج المصدر بالتوازي في وضع predict. |
data | str | 'coco8.yaml' | مسار ملف تهيئة مجموعة البيانات (الافتراضي: coco8.yaml)، وهو ضروري لعملية الكمية. |
fraction | float | 1.0 | يحدد جزء مجموعة البيانات لاستخدامه في معايرة كمية INT8. يسمح بالمعايرة على مجموعة فرعية من كامل البيانات، وهو مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تفعيل INT8، فسيتم استخدام كامل مجموعة البيانات. |
device | str | None | يحدد الجهاز للتصدير: GPU (device=0)، DLA لـ NVIDIA Jetson (device=dla:0 أو device=dla:1). |
يرجى التأكد من استخدام وحدة معالجة رسومات تدعم CUDA عند التصدير إلى TensorRT.
لمزيد من التفاصيل حول عملية التصدير، تفضل بزيارة صفحة وثائق Ultralytics حول التصدير.
Link to this sectionتصدير TensorRT مع تكميم INT8#
يُنفذ تصدير نماذج Ultralytics YOLO باستخدام TensorRT مع دقة INT8 تكميم ما بعد التدريب (PTQ). يستخدم TensorRT المعايرة لـ PTQ، والتي تقيس توزيع التنشيطات داخل كل موتر تنشيط أثناء معالجة نموذج YOLO للاستنتاج على بيانات إدخال تمثيلية، ثم يستخدم هذا التوزيع لتقدير قيم المقياس لكل موتر. كل موتر تنشيط مرشح للتكميم له مقياس مرتبط يتم استنتاجه بواسطة عملية معايرة.
عند معالجة الشبكات المكممة ضمنيًا، يستخدم 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: يتحكم في حجم (بالـ GiB) تخصيص ذاكرة الجهاز أثناء تحويل أوزان النموذج.-
Adjust the
workspacevalue according to your calibration needs and resource availability. While a largerworkspacemay increase calibration time, it allows TensorRT to explore a wider range of optimization tactics, potentially enhancing model performance and accuracy. Conversely, a smallerworkspacecan reduce calibration time but may limit the optimization strategies, affecting the quality of the quantized model. -
الافتراضي هو
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")- الصادرات ذات المحاور الديناميكية، سيتم تمكين هذا افتراضيًا عند التصدير باستخدام
int8=Trueحتى عند عدم تعيينه بشكل صريح. راجع وسائط التصدير للحصول على معلومات إضافية. - يضبط الحد الأقصى لحجم الدفعة على 8 للنموذج المصدر ومعايرة INT8.
- يخصص 4 GiB من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
- يستخدم مجموعة بيانات COCO للمعايرة، وتحديدًا الصور المستخدمة لـ التحقق (5000 إجمالي).
ذاكرة المعايرة المؤقتة
سيقوم 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
| الدقة | اختبار التقييم | متوسط (مللي ثانية) | الحد الأدنى | الأقصى (مللي ثانية) | mAPval 50(B) | mAPval 50-95(B) | batch | الحجم (بكسل) |
|---|---|---|---|---|---|---|---|
| FP32 | توقع | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | توقع | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | توقع | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionوحدات معالجة الرسومات للمستهلكين#
تم الاختبار باستخدام 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.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | توقع | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | توقع | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Link to this sectionالأجهزة المضمنة#
تم الاختبار باستخدام 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.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | توقع | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | توقع | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
راجع دليل البدء السريع الخاص بنا على 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 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",
)Link to this sectionنشر نماذج YOLO26 المصدرة بتنسيق TensorRT#
بعد تصدير نماذج Ultralytics YOLO26 بنجاح إلى تنسيق TensorRT، أنت الآن جاهز لنشرها. للحصول على تعليمات مفصلة حول نشر نماذج TensorRT الخاصة بك في بيئات مختلفة، ألقِ نظرة على الموارد التالية:
-
نشر Ultralytics باستخدام خادم Triton: دليلنا حول كيفية استخدام خادم NVIDIA Triton Inference (سابقاً TensorRT Inference) خصيصاً للاستخدام مع نماذج Ultralytics YOLO.
-
نشر الشبكات العصبية العميقة باستخدام NVIDIA TensorRT: تشرح هذه المقالة كيفية استخدام NVIDIA TensorRT لنشر الشبكات العصبية العميقة بكفاءة على منصات النشر القائمة على GPU.
-
الذكاء الاصطناعي الشامل لأجهزة الكمبيوتر التي تعمل بنظام NVIDIA: نشر NVIDIA TensorRT: تشرح هذه المدونة استخدام NVIDIA TensorRT لتحسين ونشر نماذج الذكاء الاصطناعي على أجهزة الكمبيوتر التي تعتمد على NVIDIA.
-
مستودع GitHub لـ NVIDIA TensorRT:: هذا هو مستودع GitHub الرسمي الذي يحتوي على الكود المصدري ووثائق NVIDIA TensorRT.
Link to this sectionملخص#
في هذا الدليل، ركزنا على تحويل نماذج Ultralytics YOLO26 إلى تنسيق نموذج TensorRT الخاص بـ NVIDIA. تُعد خطوة التحويل هذه حاسمة لتحسين كفاءة وسرعة نماذج YOLO26، مما يجعلها أكثر فاعلية ومناسبة لبيئات النشر المتنوعة.
لمزيد من المعلومات حول تفاصيل الاستخدام، ألقِ نظرة على وثائق TensorRT الرسمية.
إذا كنت مهتماً بمعرفة المزيد عن تكاملات Ultralytics YOLO26 الإضافية، فإن صفحة دليل التكامل الخاصة بنا توفر مجموعة واسعة من الموارد والرؤى المفيدة.
Link to this sectionأسئلة مكررة (FAQ)#
Link to this sectionكيف يمكنني تحويل نماذج YOLO26 إلى تنسيق TensorRT؟#
لتحويل نماذج Ultralytics YOLO26 الخاصة بك إلى تنسيق TensorRT لاستدلال محسن على NVIDIA GPU، اتبع الخطوات التالية:
-
تثبيت الحزمة المطلوبة:
pip install ultralytics -
تصدير نموذج 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.
- دمج الطبقات (Layer Fusion): يجمع طبقات متعددة في عمليات مفردة، مما يقلل من التعقيد الحسابي.
- الضبط التلقائي للنواة (Kernel Auto-Tuning): يختار تلقائياً أنوية GPU المحسنة لكل طبقة من طبقات النموذج، مما يضمن أقصى أداء.
لمعرفة المزيد، استكشف وثائق TensorRT الرسمية من NVIDIA ونظرتنا الشاملة حول TensorRT.
Link to this sectionهل يمكنني استخدام تكميم INT8 مع TensorRT لنماذج YOLO26؟#
نعم، يمكنك تصدير نماذج YOLO26 باستخدام TensorRT مع تكميم INT8. تتضمن هذه العملية التكميم بعد التدريب (PTQ) والمعايرة:
-
التصدير باستخدام INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml") -
تشغيل الاستدلال:
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؟#
يمكن القيام بنشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference باستخدام الموارد التالية:
- نشر Ultralytics YOLO26 باستخدام خادم Triton: توجيه خطوة بخطوة حول إعداد واستخدام خادم Triton Inference.
- نشر الشبكات العصبية العميقة باستخدام NVIDIA TensorRT: دليل NVIDIA حول نشر نماذج التعلم العميق باستخدام TensorRT للحصول على خيارات وإعدادات نشر مفصلة.
ستساعدك هذه الأدلة على دمج نماذج YOLO26 بكفاءة في بيئات نشر متنوعة.
Link to this sectionما هي تحسينات الأداء الملحوظة مع نماذج YOLO26 المصدرة إلى TensorRT؟#
يمكن أن تختلف تحسينات الأداء مع TensorRT بناءً على الأجهزة المستخدمة. إليك بعض المعايير النموذجية:
-
NVIDIA A100:
- استدلال FP32: ~0.52 مللي ثانية / صورة
- استدلال FP16: ~0.34 مللي ثانية / صورة
- استدلال INT8: ~0.28 مللي ثانية / صورة
- انخفاض طفيف في mAP مع دقة INT8، ولكن تحسن كبير في السرعة.
-
وحدات GPU للمستهلك (مثل RTX 3080):
- استدلال FP32: ~1.06 مللي ثانية / صورة
- استدلال FP16: ~0.62 مللي ثانية / صورة
- استدلال INT8: ~0.52 مللي ثانية / صورة
يمكن العثور على معايير الأداء التفصيلية لتكوينات الأجهزة المختلفة في قسم الأداء.
لمزيد من الرؤى الشاملة حول أداء TensorRT، ارجع إلى وثائق Ultralytics وتقارير تحليل الأداء الخاصة بنا.