Экспорт моделей YOLO26 в TensorRT#
Для развёртывания моделей компьютерного зрения в высокопроизводительных средах может потребоваться формат, обеспечивающий максимальные скорость и эффективность. Это особенно важно при развёртывании модели на GPU NVIDIA.
С помощью формата экспорта TensorRT ты сможешь оптимизировать модели Ultralytics YOLO26 для быстрого и эффективного инференса на оборудовании NVIDIA. В этом руководстве приведены простые пошаговые инструкции по преобразованию, которые помогут максимально использовать передовые технологии NVIDIA в проектах глубокого обучения.
TensorRT#
TensorRT, разработанный NVIDIA, — это современный комплект средств разработки программного обеспечения (SDK) для высокоскоростного инференса глубокого обучения. Он отлично подходит для приложений реального времени, например для обнаружения объектов.
Этот инструментарий оптимизирует модели глубокого обучения для GPU NVIDIA, повышая скорость и эффективность операций. Модели TensorRT проходят оптимизацию TensorRT, которая включает такие методы, как объединение слоёв, калибровка точности (INT8 и FP16), динамическое управление памятью тензоров и автоматическая настройка ядер. Преобразование моделей глубокого обучения в формат TensorRT позволяет разработчикам в полной мере использовать возможности GPU NVIDIA.
TensorRT поддерживает различные форматы моделей, включая TensorFlow, PyTorch и ONNX, предоставляя разработчикам гибкое решение для интеграции и оптимизации моделей из разных фреймворков. Благодаря этой универсальности можно эффективно выполнять развёртывание моделей в различных аппаратных и программных средах.
TensorRT профилирует и настраивает движок на GPU, на котором он собирается. Собирай движок для архитектуры GPU, на которой он будет развёрнут, и используй совместимую среду выполнения TensorRT/CUDA; не считай файл .engine переносимым форматом модели. Для развёртывания на периферийных устройствах Ultralytics Platform предлагает восемь вариантов целевых устройств Jetson; для каждого задокументирован статус сборки и проверки на физическом устройстве. Также можно выполнить экспорт локально на целевом устройстве.
Основные возможности моделей 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: поддерживает модели из различных фреймворков. Особенно подходит для инференса в облаке и на периферийных устройствах и предоставляет такие функции, как одновременное выполнение и анализ моделей.
Поддерживаемые задачи#
Экспорт в TensorRT поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, в котором есть соответствующие выходные блоки.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Обнаружение | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Глубина | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Оценка позы | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт моделей YOLO26 в TensorRT#
Преобразовав модели YOLO26 в формат TensorRT, ты сможешь повысить эффективность выполнения и оптимизировать производительность.
Установка#
Чтобы установить необходимый пакет, выполни команду:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и рекомендации по установке смотри в нашем руководстве по установке YOLO26. Если при установке необходимых пакетов для YOLO26 возникнут трудности, решения и полезные советы найдёшь в нашем руководстве по распространённым проблемам.
Использование#
Прежде чем перейти к инструкциям по использованию, ознакомься с линейкой моделей YOLO26 от Ultralytics. Это поможет выбрать модель, которая лучше всего подходит для требований твоего проекта.
Формат TensorRT поддерживает режимы Export, Predict и Validate. Для инференса и валидации требуется GPU NVIDIA. Экспортируй модель, затем загрузи экспортированную модель для выполнения инференса или проверки её точности.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспортируй модель в формат TensorRT
model.export(format="engine") # создаёт 'yolo26n.engine'from ultralytics import YOLO
# Загрузи экспортированную модель TensorRT
model = YOLO("yolo26n.engine")
# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузи экспортированную модель TensorRT
model = YOLO("yolo26n.engine")
# Проверить точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'engine' | Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Заданный размер изображения на входе модели. Можно указать целое число для квадратных изображений или кортеж (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования: 16 (FP16) или 8 (INT8/PTQ; требуется калибровка data/fraction); 32/не задано — FP32. Чекпойнт, обученный с quantize=8, всегда экспортируется в INT8 с использованием имеющихся в нём диапазонов, без калибровки. Заменяет устаревшие флаги half/int8. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений разных размеров. |
simplify | bool | True | Упрощает граф модели с помощью onnxslim, что потенциально повышает производительность и совместимость. |
opset | int | None | Задает версию opset ONNX для промежуточного графа ONNX. Если значение не задано, используется последняя поддерживаемая версия. |
workspace | float или None | None | Задаёт максимальный размер рабочей области в GiB для оптимизации TensorRT, позволяя сбалансировать использование памяти и производительность; используй None, чтобы TensorRT автоматически выделил память в пределах максимума устройства. |
nms | bool, необязательно | None | Выбери необработанный выход (None, по умолчанию), встроенный NMS (True) или голову без NMS (False). |
batch | int | 1 | Задаёт размер пакета изображений для инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
data | str | None | Путь к YAML-файлу набора данных, необходимому для квантования; для классификации вместо него укажи каталог набора данных или название встроенного набора данных. Если параметр не задан вместе с quantize=8, Ultralytics выберет набор данных по умолчанию для калибровки задачи модели; чекпойнт, обученный с quantize=8, в калибровке не нуждается. |
fraction | float, int или list | 1.0 | Подмножество для калибровки, заданное как доля, количество изображений или [train, val, test] отношения/количества. Если список содержит два элемента, test остаётся без изменений, а 0 пропускает его. |
device | str | None | Задаёт устройство для экспорта: GPU (device=0) или DLA для NVIDIA Jetson (device=dla:0 или device=dla:1). |
Для экспорта в TensorRT обязательно используй GPU с поддержкой CUDA.
TensorRT 11.2.1 не поддерживает JetPack, включая Thor; используй среду выполнения TensorRT 10.x, поддерживаемую твоей версией JetPack. Для device=dla:0 или device=dla:1 NVIDIA указывает TensorRT 10.7 как последний выпуск с поддержкой DLA. TensorRT 11.0, 11.1 и 11.2 не поддерживают DLA.
Подробнее о процессе экспорта смотри на странице документации Ultralytics об экспорте.
Экспорт TensorRT с квантованием INT8#
Экспорт моделей Ultralytics YOLO в TensorRT с точностью INT8 выполняет посттренировочное квантование (PTQ). Для PTQ TensorRT использует калибровку: она измеряет распределение активаций в каждом тензоре активаций, пока модель YOLO выполняет инференс на репрезентативных входных данных, а затем использует это распределение, чтобы оценить значения масштабирования для каждого тензора. Для каждого тензора активаций, который можно квантовать, процесс калибровки определяет соответствующий масштаб. Чекпойнт, дообученный с помощью quantize=8 посредством квантования с учётом обучения, уже содержит диапазоны INT8, поэтому при экспорте используются они, а калибровка пропускается.
В TensorRT 11 удалены неявное квантование и интерфейс IInt8Calibrator. В TensorRT 11 и более новых версиях Ultralytics выполняет квантование INT8 с помощью явного квантования NVIDIA ModelOpt: перед созданием строго типизированного движка в граф ONNX добавляются узлы Q/DQ. Для FP16 преобразование смешанной точности выполняется с помощью ModelOpt AutoCast. Аргументы quantize=8, quantize=16 и data работают так же; при первом использовании ModelOpt устанавливается автоматически. В TensorRT 7–10 вместо этого применяется описанный ниже устаревший калибровщик.
При обработке сетей с неявным квантованием TensorRT использует INT8 для ускорения выполнения слоёв, когда это возможно. Если слой выполняется быстрее в INT8 и для его входных и выходных данных назначены масштабы квантования, этому слою назначается ядро с точностью INT8. В противном случае TensorRT выбирает для ядра точность FP32 или FP16 — ту, которая обеспечивает более быстрое выполнение слоя.
Крайне важно, чтобы экспорт с точностью INT8 выполнялся на том же устройстве, на котором затем будет использоваться модель TensorRT, поскольку результаты калибровки могут различаться на разных устройствах.
Настройка экспорта INT8#
Аргументы, передаваемые при экспорте модели Ultralytics YOLO, сильно влияют на производительность экспортированной модели. Их также нужно выбирать с учётом доступных ресурсов устройства, однако аргументы по умолчанию должны подойти для большинства дискретных GPU NVIDIA поколения Ampere и новее. Для экспорта на GPU используется алгоритм калибровки "MINMAX_CALIBRATION", а для экспорта на DLA устройств NVIDIA Jetson — "ENTROPY_CALIBRATION_2". Подробнее о доступных параметрах читай в руководстве разработчика TensorRT. По результатам тестирования Ultralytics, для экспорта на GPU лучше всего подходит "MINMAX_CALIBRATION"; алгоритм выбирается автоматически в зависимости от устройства экспорта.
-
workspace: управляет размером (в GiB) выделяемой памяти устройства при преобразовании весов модели.-
Настрой значение
workspaceс учётом требований калибровки и доступных ресурсов. Увеличениеworkspaceможет продлить калибровку, но позволит TensorRT рассмотреть больше вариантов оптимизации и, возможно, повысить производительность и точность модели. И наоборот, уменьшениеworkspaceсократит время калибровки, но может ограничить набор стратегий оптимизации и повлиять на качество квантованной модели. -
По умолчанию используется
workspace=None, и TensorRT автоматически выделяет память. При ручной настройке это значение, возможно, придётся увеличить, если во время калибровки происходит сбой (процесс завершается без предупреждения). -
Во время экспорта TensorRT сообщит о
UNSUPPORTED_STATE, если значениеworkspaceпревышает доступный объём памяти устройства. В таком случае нужно уменьшить значениеworkspaceили задатьNone. -
Если для
workspaceзадано максимальное значение, а калибровка завершается с ошибкой или происходит сбой, попробуй использоватьNoneдля автоматического выделения памяти либо уменьши значенияimgszиbatch, чтобы снизить требования к памяти. -
Помни, что калибровка для INT8 зависит от устройства: использование для калибровки мощного GPU, взятого у коллег, может привести к низкой производительности при инференсе на другом устройстве.
-
-
batch: максимальный размер пакета для инференса. При использованииdynamic=Trueво время инференса можно задавать пакеты меньшего размера, но размер пакета не может превышать указанное значение.
Из-за небольших пакетов при калибровке INT8 может быть неверно рассчитан масштаб. Это связано с тем, что процесс подстраивается под имеющиеся данные. В небольших пакетах может не оказаться всего диапазона значений, что приведёт к проблемам с итоговой калибровкой. Использование большего размера пакета помогает получить более репрезентативные результаты калибровки.
По результатам экспериментов NVIDIA рекомендует использовать для калибровки квантования INT8 не менее 500 изображений, репрезентативных для данных твоей модели. Это рекомендация, а не строгое требование, и тебе нужно будет экспериментировать, чтобы определить, что необходимо для хороших результатов на твоем наборе данных. Поскольку для калибровки INT8 в TensorRT необходимы калибровочные данные, обязательно используй аргумент data при экспорте чекпойнта, который не обучался с использованием quantize=8 (квантования после обучения) при quantize=8 для TensorRT, и используй data="my_dataset.yaml", чтобы для калибровки применялись изображения из валидационного набора. Для чекпойнта, обученного с quantize=8, калибровка пропускается, поэтому не указывай для него data. Если при экспорте в TensorRT с квантованием INT8 для data не задано значение, по умолчанию вместо ошибки будет использоваться один из «небольших» демонстрационных наборов данных, подходящих для задачи модели.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
quantize=8,
data="coco.yaml", # (4)!
)
# Загрузи экспортированную модель TensorRT INT8
model = YOLO("yolo26n.engine", task="detect")
# Выполнить инференс
result = model.predict("https://ultralytics.com/images/bus.jpg")- Экспортирует модель с динамическими осями, позволяя задавать размер входных данных от 32 пикселей до удвоенного значения экспортируемого
imgsz; значениеdynamicостаётся равнымFalse, если не задано явно. Дополнительную информацию см. в разделе аргументы экспорта. - Задаёт максимальный размер пакета 8 для экспортированной модели и калибровки INT8.
- Выделяет 4 GiB памяти вместо использования всего устройства для преобразования.
- Для калибровки используется набор данных COCO, а именно изображения из валидационного набора (всего 5 000).
Преимущества использования YOLO с TensorRT INT8#
-
Уменьшение размера модели: Квантование с FP32 до INT8 может уменьшить размер модели в 4 раза (на диске или в памяти), что ускоряет загрузку, снижает требования к хранилищу и уменьшает объем памяти, необходимый для развертывания модели.
-
Снижение энергопотребления: Операции с пониженной точностью в экспортированных моделях YOLO INT8 могут потреблять меньше энергии по сравнению с моделями FP32, особенно на устройствах с питанием от аккумулятора.
-
Ускорение инференса: TensorRT оптимизирует модель для целевого оборудования, что может ускорить инференс на GPU, встроенных устройствах и ускорителях.
Примечание о скорости инференса
При первых нескольких вызовах инференса модели, экспортированной в TensorRT INT8, этапы предобработки, инференса и/или постобработки могут занимать больше времени, чем обычно. Это также может происходить при изменении imgsz во время инференса, особенно если imgsz отличается от указанного при экспорте (для экспорта задан imgsz как «оптимальный» профиль TensorRT).
Недостатки использования YOLO с TensorRT INT8#
-
Снижение оценочных метрик: Использование пониженной точности означает, что
mAP,Precision,Recallили любая другая метрика для оценки качества модели, вероятно, покажет несколько худший результат. Слои Sigmoid остаются в более высокой точности, чтобы сохранить калибровку оценок, но INT8 все же может сместить значения уверенности, поэтому выбирай рабочий порог по собственной F1-кривой модели INT8. Сравнение различий в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 |
Потребительские GPU#
Тестирование выполнено на 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 |
Встроенные устройства#
Тестирование выполнено на 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.
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, quantize=16)
# TensorRT INT8 с калибровочным `data` (например, COCO, ImageNet или DOTAv1 для соответствующей задачи модели)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)Цикл предсказания
Дополнительную информацию смотри в описании режима predict.
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 одного и того же изображения
verbose=False,
device="cuda",
)Конфигурация валидации
Подробнее об аргументах конфигурации валидации читай в описании режима val.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet или DOTAv1 для соответствующей задачи модели
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Развертывание экспортированных моделей YOLO26 TensorRT#
После успешного экспорта моделей Ultralytics YOLO26 в формат TensorRT ты можешь приступить к их развертыванию. Подробные инструкции по развертыванию моделей TensorRT в различных средах смотри в следующих материалах:
-
Развертывание Ultralytics с помощью сервера Triton: наше руководство по использованию NVIDIA Triton Inference Server (ранее TensorRT Inference Server) именно с моделями Ultralytics YOLO.
-
Развертывание глубоких нейронных сетей с NVIDIA TensorRT: в этой статье объясняется, как эффективно использовать NVIDIA TensorRT для развертывания глубоких нейронных сетей на платформах с GPU.
-
Комплексные решения на базе ИИ для ПК с NVIDIA: развертывание NVIDIA TensorRT: в этой статье блога рассказывается об использовании NVIDIA TensorRT для оптимизации и развертывания моделей ИИ на ПК с оборудованием NVIDIA.
-
Репозиторий NVIDIA TensorRT на GitHub: официальный репозиторий GitHub с исходным кодом и документацией для NVIDIA TensorRT.
Итоги#
В этом руководстве мы рассмотрели преобразование моделей Ultralytics YOLO26 в формат моделей NVIDIA TensorRT. Этот шаг важен для повышения эффективности и скорости моделей YOLO26, делая их производительнее и подходящими для разных сред развертывания.
Подробнее об использовании читай в официальной документации TensorRT.
Если тебя интересуют другие интеграции Ultralytics YOLO, загляни на нашу страницу руководства по интеграциям: там собрано много полезных материалов и сведений.
Часто задаваемые вопросы#
Чтобы преобразовать модели Ultralytics YOLO26 в формат TensorRT для оптимизированного инференса на GPU NVIDIA, выполни следующие шаги:
-
Установи необходимый пакет:
pip install ultralytics -
Экспортируй модель YOLO26:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # создаёт 'yolo26n.engine' # Выполнить инференс model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Подробнее смотри в руководстве по установке YOLO26 и документации по экспорту.
-
Оптимизация моделей YOLO26 с помощью TensorRT дает несколько преимуществ:
- Более быстрый инференс: TensorRT оптимизирует слои модели и использует калибровку точности (INT8 и FP16), чтобы ускорить инференс без существенного снижения точности.
- Эффективное использование памяти: TensorRT динамически управляет памятью тензоров, снижая накладные расходы и повышая эффективность использования памяти GPU.
- Объединение слоев: объединяет несколько слоев в одну операцию, снижая вычислительную сложность.
- Автоматическая настройка ядер: автоматически выбирает оптимизированные ядра GPU для каждого слоя модели, обеспечивая максимальную производительность.
Подробнее читай в официальной документации TensorRT от NVIDIA и нашем подробном обзоре TensorRT.
Да, ты можешь экспортировать модели YOLO26 с помощью TensorRT и квантования INT8. Этот процесс включает посттренировочное квантование (PTQ) и калибровку, если только чекпойнт не был обучен с
quantize=8(квантованием с учетом квантования); в этом случае диапазоны, сохраненные в чекпойнте, экспортируются без калибровки:-
Экспорт с INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, 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 Server можно с помощью следующих материалов:
- Развертывание Ultralytics YOLO26 с помощью сервера Triton: пошаговые инструкции по настройке и использованию Triton Inference Server.
- Развертывание глубоких нейронных сетей с NVIDIA TensorRT: руководство NVIDIA по развертыванию моделей глубокого обучения с помощью TensorRT, в котором подробно описаны доступные варианты и конфигурации развертывания.
Эти руководства помогут эффективно интегрировать модели YOLO26 в различные среды развертывания.
Прирост производительности TensorRT зависит от используемых модели и оборудования. Ниже приведены типичные результаты тестов YOLOv8n, показывающие относительный прирост для каждой точности:
-
NVIDIA A100:
- Инференс FP32: ~0.52 мс / изображение
- Инференс FP16: ~0.34 мс / изображение
- Инференс INT8: ~0.28 мс / изображение
- При точности INT8 наблюдается небольшое снижение mAP, но скорость значительно повышается.
-
Потребительские GPU (например, RTX 3080):
- Инференс FP32: ~1.06 мс / изображение
- Инференс FP16: ~0.62 мс / изображение
- Инференс INT8: ~0.52 мс / изображение
Подробные результаты тестов производительности для разных конфигураций оборудования смотри в разделе о производительности.
Более подробную информацию о производительности TensorRT смотри в документации Ultralytics и наших отчетах об анализе производительности.
-