تصدير TensorRT لنماذج YOLO26
قد يتطلب نشر نماذج الرؤية الحاسوبية في بيئات عالية الأداء تنسيقاً يزيد من السرعة والكفاءة. وهذا صحيح بشكل خاص عند نشر نموذجك على وحدات معالجة الرسومات (GPUs) من NVIDIA.
باستخدام تنسيق تصدير TensorRT، يمكنك تحسين نماذج Ultralytics YOLO26 الخاصة بك لإجراء استنتاج سريع وفعال على أجهزة NVIDIA. سيوفر لك هذا الدليل خطوات سهلة المتابعة لعملية التحويل ويساعدك على تحقيق أقصى استفادة من تقنية NVIDIA المتقدمة في مشاريع التعلم العميق الخاصة بك.
TensorRT
TensorRT، الذي طورته NVIDIA، هو مجموعة تطوير برمجيات (SDK) متقدمة مصممة للاستنتاج عالي السرعة في التعلم العميق. وهو مناسب تماماً للتطبيقات في الوقت الفعلي مثل اكتشاف الكائنات.
تعمل هذه المجموعة البرمجية على تحسين نماذج التعلم العميق لوحدات معالجة الرسومات NVIDIA، مما يؤدي إلى عمليات أسرع وأكثر كفاءة. تخضع نماذج TensorRT لتحسين TensorRT، والذي يتضمن تقنيات مثل دمج الطبقات، ومعايرة الدقة (INT8 و FP16)، وإدارة ذاكرة الموترات الديناميكية، والضبط التلقائي للنواة (kernel). يسمح تحويل نماذج التعلم العميق إلى تنسيق TensorRT للمطورين بإدراك إمكانات وحدات معالجة الرسومات NVIDIA بالكامل.
تشتهر TensorRT بتوافقها مع تنسيقات النماذج المختلفة، بما في ذلك TensorFlow و PyTorch و ONNX، مما يوفر للمطورين حلاً مرناً لدمج النماذج من أطر عمل مختلفة وتحسينها. تتيح هذه المرونة نشر النماذج بكفاءة عبر بيئات أجهزة وبرمجيات متنوعة.
الميزات الرئيسية لنماذج TensorRT
توفر نماذج TensorRT مجموعة من الميزات الرئيسية التي تساهم في كفاءتها وفعاليتها في الاستنتاج عالي السرعة في التعلم العميق:
-
معايرة الدقة: تدعم TensorRT معايرة الدقة، مما يسمح بضبط النماذج لتلبية متطلبات دقة محددة. يتضمن ذلك الدعم لتنسيقات الدقة المنخفضة مثل INT8 و FP16، والتي يمكن أن تزيد من سرعة الاستنتاج مع الحفاظ على مستويات دقة مقبولة.
-
دمج الطبقات: تتضمن عملية تحسين TensorRT دمج الطبقات، حيث يتم دمج طبقات متعددة من الشبكة العصبية في عملية واحدة. هذا يقلل من العبء الحسابي ويحسن سرعة الاستنتاج عن طريق تقليل الوصول إلى الذاكرة والحسابات.
-
إدارة ذاكرة الموترات الديناميكية: تدير TensorRT استخدام ذاكرة الموترات بكفاءة أثناء الاستنتاج، مما يقلل من العبء الزائد على الذاكرة ويحسن تخصيصها. وينتج عن ذلك استخدام أكثر كفاءة لذاكرة GPU.
-
الضبط التلقائي للنواة: تطبق TensorRT الضبط التلقائي للنواة لاختيار نواة GPU الأكثر تحسيناً لكل طبقة في النموذج. يضمن هذا النهج التكيفي أن النموذج يستفيد بالكامل من القوة الحسابية لـ GPU.
خيارات النشر في TensorRT
قبل أن ننظر إلى الكود الخاص بتصدير نماذج YOLO26 إلى تنسيق TensorRT، دعونا نفهم أين تُستخدم نماذج TensorRT عادةً.
توفر TensorRT العديد من خيارات النشر، ويوازن كل خيار بين سهولة التكامل وتحسين الأداء والمرونة بشكل مختلف:
- النشر داخل TensorFlow: تدمج هذه الطريقة TensorRT في TensorFlow، مما يسمح للنماذج المحسنة بالعمل في بيئة TensorFlow مألوفة. إنها مفيدة للنماذج التي تحتوي على مزيج من الطبقات المدعومة وغير المدعومة، حيث يمكن لـ TF-TRT التعامل مع هذه بكفاءة.
-
واجهة برمجة تطبيقات (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")وسائط التصدير
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
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)، وهو ضروري للكمية (quantization). |
fraction | float | 1.0 | يحدد جزء مجموعة البيانات المستخدم لمعايرة تكميم INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عند محدودية الموارد. إذا لم يتم تحديده مع تفعيل INT8، فسيتم استخدام مجموعة البيانات الكاملة. |
device | str | None | يحدد الجهاز للتصدير: 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")- عمليات التصدير ذات المحاور الديناميكية، سيتم تمكين هذا افتراضياً عند التصدير مع
int8=Trueحتى عندما لا يتم ضبطه صراحةً. راجع وسائط التصدير للحصول على معلومات إضافية. - يضبط الحد الأقصى لحجم الدفعة على 8 للنموذج المُصدَّر ومعايرة INT8.
- يخصص 4 GiB من الذاكرة بدلاً من تخصيص الجهاز بالكامل لعملية التحويل.
- يستخدم مجموعة بيانات 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.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 |
وحدات معالجة الرسوميات للمستهلك (Consumer GPUs)
تم الاختبار باستخدام 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 |
الأجهزة المدمجة (Embedded Devices)
تم الاختبار باستخدام 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 لمعرفة المزيد حول الإعداد والتهيئة.
طرق التقييم
قم بتوسيع الأقسام أدناه للحصول على معلومات حول كيفية تصدير هذه النماذج واختبارها.
إعدادات التصدير
راجع وضع التصدير (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 مع خادم 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.
ملخص
في هذا الدليل، ركزنا على تحويل نماذج Ultralytics YOLO26 إلى تنسيق نموذج TensorRT الخاص بـ NVIDIA. تعد خطوة التحويل هذه بالغة الأهمية لتحسين كفاءة وسرعة نماذج YOLO26، مما يجعلها أكثر فعالية ومناسبة لبيئات النشر المتنوعة.
لمزيد من المعلومات حول تفاصيل الاستخدام، ألقِ نظرة على الوثائق الرسمية لـ TensorRT.
إذا كنت مهتماً بمعرفة المزيد عن تكاملات Ultralytics YOLO26 الإضافية، فإن صفحة دليل التكامل (integration guide page) الخاصة بنا توفر مجموعة واسعة من الموارد والرؤى المعلوماتية.
الأسئلة الشائعة
كيف أقوم بتحويل نماذج 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 ووثائق التصدير.
ما هي فوائد استخدام 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) والمعايرة:
-
التصدير باستخدام 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.
كيف يمكنني نشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference؟
يمكن نشر نماذج YOLO26 TensorRT على خادم NVIDIA Triton Inference باستخدام الموارد التالية:
- نشر Ultralytics YOLO26 باستخدام خادم Triton: إرشادات خطوة بخطوة حول إعداد واستخدام خادم Triton Inference Server.
- توثيق NVIDIA Triton Inference Server: توثيق NVIDIA الرسمي للحصول على خيارات النشر والتكوينات التفصيلية.
ستساعدك هذه الأدلة على دمج نماذج 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 وتقارير تحليل الأداء الخاصة بنا.