TensorRT Экспорт для моделей YOLOv8
Для развертывания моделей компьютерного зрения в высокопроизводительных средах может потребоваться формат, обеспечивающий максимальную скорость и эффективность. Это особенно актуально при развертывании модели на графических процессорах NVIDIA .
Используя формат экспорта TensorRT , вы можете улучшить свои Ultralytics YOLOv8 модели для быстрых и эффективных выводов на оборудовании NVIDIA . В этом руководстве вы найдете простые и понятные шаги по конвертации и сможете максимально использовать передовые технологии NVIDIA в своих проектах глубокого обучения.
TensorRT
TensorRTразработанный компанией NVIDIA, представляет собой расширенный набор средств разработки программного обеспечения (SDK), предназначенный для высокоскоростного глубокого обучения выводам. Он хорошо подходит для приложений реального времени, таких как обнаружение объектов.
Этот инструментарий оптимизирует модели глубокого обучения для графических процессоров NVIDIA и обеспечивает более быструю и эффективную работу. Модели TensorRT подвергаются оптимизации TensorRT , которая включает такие техники, как слияние слоев, калибровка точности (INT8 и FP16), динамическое управление памятью tensor и автонастройка ядра. Преобразование моделей глубокого обучения в формат TensorRT позволяет разработчикам в полной мере реализовать потенциал NVIDIA GPU.
TensorRT известен своей совместимостью с различными форматами моделей, включая TensorFlow, PyTorch, и ONNX, предоставляя разработчикам гибкое решение для интеграции и оптимизации моделей из различных фреймворков. Такая универсальность позволяет эффективно развертывать модели в различных аппаратных и программных средах.
Ключевые особенности моделей TensorRT
TensorRT Модели обладают рядом ключевых особенностей, которые способствуют их эффективности и результативности в высокоскоростном глубоком обучении:
-
Точная калибровка: TensorRT поддерживает точную калибровку, позволяя настраивать модели в соответствии с конкретными требованиями к точности. В том числе поддерживаются форматы пониженной точности, такие как INT8 и FP16, что позволяет еще больше увеличить скорость вычислений при сохранении приемлемого уровня точности.
-
Слияние слоев: Процесс оптимизации TensorRT включает в себя объединение слоев, когда несколько слоев нейронной сети объединяются в одну операцию. Это снижает вычислительные затраты и повышает скорость вывода за счет минимизации доступа к памяти и вычислений.
-
Динамическое управление памятью Tensor : TensorRT эффективно управляет использованием памяти tensor во время вывода, сокращая накладные расходы памяти и оптимизируя ее выделение. Это приводит к более эффективному использованию памяти GPU .
-
Автоматическая настройка ядра: TensorRT применяет автоматическую настройку ядра для выбора наиболее оптимизированного GPU ядра для каждого слоя модели. Этот адаптивный подход гарантирует, что модель полностью использует вычислительные возможности GPU.
Варианты развертывания в TensorRT
Прежде чем мы рассмотрим код для экспорта моделей YOLOv8 в формат TensorRT , давайте разберемся, где обычно используются модели TensorRT .
TensorRT Предлагается несколько вариантов развертывания, и в каждом из них по-разному сочетаются простота интеграции, оптимизация производительности и гибкость:
- Развертывание внутри TensorFlow: Этот метод интегрирует TensorRT в TensorFlow, позволяя оптимизированным моделям работать в знакомой среде TensorFlow . Это полезно для моделей со смесью поддерживаемых и неподдерживаемых слоев, так как TF-TRT может эффективно обрабатывать их.
-
Автономный TensorRT Runtime API: Обеспечивает гранулярный контроль, идеально подходит для приложений, критичных к производительности. Он более сложен, но позволяет реализовать неподдерживаемые операторы.
-
NVIDIA Triton Сервер выводов: Вариант, поддерживающий модели из различных фреймворков. Он особенно подходит для облачных или пограничных выводов и предоставляет такие возможности, как одновременное выполнение моделей и их анализ.
Экспорт моделей YOLOv8 в TensorRT
Вы можете повысить эффективность выполнения и оптимизировать производительность, конвертируя модели YOLOv8 в формат TensorRT .
Установка
Чтобы установить необходимый пакет, выполните команду:
Для получения подробных инструкций и лучших практик, связанных с процессом установки, ознакомьтесь с нашим руководством по установкеYOLOv8 . При установке необходимых пакетов для YOLOv8, если вы столкнетесь с какими-либо трудностями, обратитесь к нашему руководству по общим проблемам, чтобы найти решения и советы.
Использование
Прежде чем приступить к изучению инструкции по эксплуатации, обязательно ознакомьтесь с ассортиментом моделейYOLOv8 , предлагаемых компанией Ultralytics. Это поможет вам выбрать наиболее подходящую модель, соответствующую требованиям вашего проекта.
Использование
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO("yolov8n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolov8n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolov8n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
Более подробную информацию о процессе экспорта можно найти на странице документацииUltralytics , посвященной экспорту.
Экспорт TensorRT с квантованием INT8
Экспорт моделей Ultralytics YOLO с помощью TensorRT с точностью INT8 выполняет квантование после обучения (PTQ). TensorRT использует калибровку для PTQ, которая измеряет распределение активаций внутри каждой активации tensor по мере того, как модель YOLO обрабатывает вывод на репрезентативных входных данных, а затем использует это распределение для оценки значений шкалы для каждой tensor. Каждая активация tensor , являющаяся кандидатом на квантование, имеет соответствующую шкалу, которая определяется в процессе калибровки.
При обработке сетей с неявным квантованием TensorRT использует INT8 оппортунистически для оптимизации времени выполнения слоя. Если слой работает быстрее в INT8 и имеет назначенные шкалы квантования на входах и выходах данных, то этому слою назначается ядро с точностью INT8, в противном случае TensorRT выбирает точность FP32 или FP16 для ядра, основываясь на том, что приводит к более быстрому времени выполнения для данного слоя.
Наконечник
Очень важно убедиться, что для экспорта с точностью INT8 используется то же устройство, которое будет использовать весовые коэффициенты модели TensorRT для развертывания, поскольку результаты калибровки могут отличаться на разных устройствах.
Настройка экспорта INT8
Аргументы, предоставляемые при использовании экспорт для модели Ultralytics YOLO будет очень влияют на производительность экспортируемой модели. Их также необходимо выбирать в зависимости от доступных ресурсов устройства, однако аргументы по умолчанию следует работать для большинства Дискретные графические процессоры Ampere (или более новые) NVIDIA. Используется следующий алгоритм калибровки "ENTROPY_CALIBRATION_2"
и вы можете прочитать более подробную информацию о доступных опциях в руководстве для разработчиков TensorRT .. Ultralytics тесты показали, что "ENTROPY_CALIBRATION_2"
оказался наилучшим выбором, и экспортные поставки будут осуществляться именно по этому алгоритму.
-
workspace
: Управляет размером (в GiB) выделяемой памяти устройства при преобразовании весов модели.-
Отрегулируйте
workspace
значение в соответствии с вашими потребностями в калибровке и доступностью ресурсов. Хотя большееworkspace
может увеличить время калибровки, но позволяет TensorRT исследовать более широкий спектр тактик оптимизации, потенциально повышая производительность модели и точность. И наоборот, меньшийworkspace
может сократить время калибровки, но может ограничить стратегии оптимизации, что скажется на качестве квантованной модели. -
По умолчанию
workspace=None
, что позволит TensorRT автоматически выделять память, при ручной настройке это значение может потребоваться увеличить, если калибровка завершится аварийно (без предупреждения). -
TensorRT сообщит
UNSUPPORTED_STATE
во время экспорта, если значение дляworkspace
больше, чем объем памяти, доступной устройству, что означает, что значение дляworkspace
должен быть снижен или установлен наNone
. -
Если
workspace
установлено на максимальное значение, и калибровка не проходит/проваливается, рассмотрите возможность использованияNone
для автораспределения или уменьшая значения дляimgsz
иbatch
чтобы снизить требования к памяти. -
Помните, что калибровка для INT8 специфична для каждого устройства, поэтому заимствование "высококлассного" GPU для калибровки может привести к ухудшению производительности при выполнении выводов на другом устройстве.
-
-
batch
: Максимальный размер партии, который будет использоваться для вывода. В процессе вычисления могут использоваться меньшие партии, но вычисление не будет принимать партии больше указанной.
Примечание
Во время калибровки дважды нажмите кнопку batch
будут использоваться предоставленные размеры. Использование небольших партий может привести к неточному масштабированию при калибровке. Это связано с тем, что процесс настраивается на основе данных, которые он видит. Небольшие партии могут не охватить весь диапазон значений, что приведет к проблемам с окончательной калибровкой, поэтому batch
размер автоматически удваивается. Если не размер партии указано batch=1
Калибровка будет выполняться при batch=1 * 2
для уменьшения ошибок масштабирования при калибровке.
Эксперименты NVIDIA привели к тому, что они рекомендуют использовать не менее 500 калибровочных изображений, представляющих данные для вашей модели, с калибровкой квантования INT8. Это рекомендация, а не твердый требование, и вам придется поэкспериментировать с тем, что необходимо для достижения высоких результатов в вашем наборе данных. Поскольку калибровочные данные требуются для калибровки INT8 с помощью TensorRT, обязательно используйте data
аргумент, когда int8=True
для TensorRT и используйте data="my_dataset.yaml"
, который будет использовать изображения из валидация для калибровки. Если значение не передано для data
при экспорте на TensorRT с квантованием INT8, по умолчанию будет использоваться один из вариантов "маленькие" наборы примеров, основанные на модельной задаче вместо того, чтобы выдать ошибку.
Пример
from ultralytics import YOLO
model = YOLO("yolov8n.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("yolov8n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
- Экспорт с динамическими осями, это будет включено по умолчанию при экспорте с
int8=True
даже если он не задан явно. См. аргументы экспорта для получения дополнительной информации. - Устанавливает максимальный размер партии 8 для экспортируемой модели, которая калибруется с помощью
batch = 2 * 8
чтобы избежать ошибок масштабирования при калибровке. - Выделяет 4 Гб памяти вместо того, чтобы выделять все устройство для процесса преобразования.
- Для калибровки используется набор данных COCO, в частности, изображения, используемые для проверки (всего 5 000).
# Export a YOLOv8n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolov8n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''
# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Кэш калибровки
TensorRT создаст калибровку .cache
которые можно повторно использовать для ускорения экспорта весов будущих моделей, используя те же данные, но это может привести к плохой калибровке, если данные сильно отличаются или если batch
значение резко меняется. В этих обстоятельствах существующие .cache
следует переименовать и переместить в другой каталог или удалить совсем.
Преимущества использования YOLO с TensorRT INT8
-
Уменьшение размера модели: Квантование с FP32 на INT8 позволяет уменьшить размер модели в 4 раза (на диске или в памяти), что приводит к ускорению загрузки, снижению требований к хранению и уменьшению занимаемой памяти при развертывании модели.
-
Более низкое энергопотребление: Операции пониженной точности для INT8, экспортируемые в модели YOLO , могут потреблять меньше энергии по сравнению с моделями FP32, особенно в устройствах с питанием от батарей.
-
Повышение скорости вывода: TensorRT оптимизирует модель для целевого оборудования, что потенциально может привести к повышению скорости вывода на графических процессорах, встроенных устройствах и ускорителях.
Замечание о скорости умозаключений
Можно ожидать, что первые несколько вызовов вычислений с моделью, экспортированной в TensorRT INT8, будут иметь большее, чем обычно, время предварительной обработки, вычислений и/или постпроцессинга. Это также может произойти при изменении imgsz
во время умозаключений, особенно когда imgsz
не совпадает с тем, что было указано при экспорте (export 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
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
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 |
Примеры использования этих моделей, обученных на COCO и включающих 80 предварительно обученных классов, см. в разделе Segmentation Docs.
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-seg.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
mAPval 50(B) |
mAPval 50-95(B) |
mAPval 50(M) |
mAPval 50-95(M) |
batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Предсказать | 0.62 | 0.61 | 0.68 | 8 | 640 | ||||
FP32 | COCOval | 0.63 | 0.52 | 0.36 | 0.49 | 0.31 | 1 | 640 | |
FP16 | Предсказать | 0.40 | 0.39 | 0.44 | 8 | 640 | ||||
FP16 | COCOval | 0.43 | 0.52 | 0.36 | 0.49 | 0.30 | 1 | 640 | |
INT8 | Предсказать | 0.34 | 0.33 | 0.37 | 8 | 640 | ||||
INT8 | COCOval | 0.36 | 0.46 | 0.32 | 0.43 | 0.27 | 1 | 640 |
Примеры использования этих моделей, обученных на ImageNet и включающих 1000 предварительно обученных классов, см. в разделе Classification Docs.
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-cls.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
топ-1 | топ-5 | batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|
FP32 | Предсказать | 0.26 | 0.25 | 0.28 | 8 | 640 | ||
FP32 | ImageNetval | 0.26 | 0.35 | 0.61 | 1 | 640 | |
FP16 | Предсказать | 0.18 | 0.17 | 0.19 | 8 | 640 | ||
FP16 | ImageNetval | 0.18 | 0.35 | 0.61 | 1 | 640 | |
INT8 | Предсказать | 0.16 | 0.15 | 0.57 | 8 | 640 | ||
INT8 | ImageNetval | 0.15 | 0.32 | 0.59 | 1 | 640 |
Примеры использования этих моделей, обученных на COCO и включающих 1 предварительно обученный класс "человек", см. в документации Pose Estimation Docs.
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-pose.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
mAPval 50(B) |
mAPval 50-95(B) |
mAPval 50(P) |
mAPval 50-95(P) |
batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Предсказать | 0.54 | 0.53 | 0.58 | 8 | 640 | ||||
FP32 | COCOval | 0.55 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
FP16 | Предсказать | 0.37 | 0.35 | 0.41 | 8 | 640 | ||||
FP16 | COCOval | 0.36 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
INT8 | Предсказать | 0.29 | 0.28 | 0.33 | 8 | 640 | ||||
INT8 | COCOval | 0.30 | 0.90 | 0.68 | 0.78 | 0.47 | 1 | 640 |
Примеры использования этих моделей, обученных на DOTAv1 и включающих 15 предварительно обученных классов, см. в Документах по ориентированному обнаружению.
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n-obb.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|
FP32 | Предсказать | 0.52 | 0.51 | 0.59 | 8 | 640 | ||
FP32 | DOTAv1val | 0.76 | 0.50 | 0.36 | 1 | 640 | |
FP16 | Предсказать | 0.34 | 0.33 | 0.42 | 8 | 640 | ||
FP16 | DOTAv1val | 0.59 | 0.50 | 0.36 | 1 | 640 | |
INT8 | Предсказать | 0.29 | 0.28 | 0.33 | 8 | 640 | ||
INT8 | DOTAv1val | 0.32 | 0.45 | 0.32 | 1 | 640 |
Потребительские графические процессоры
Производительность обнаружения (COCO)
Проверено на Windows 10.0.19045, python 3.10.9
, ultralytics==8.2.4
, tensorrt==10.0.0b6
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
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 |
Проверено на Windows 10.0.22631, python 3.11.9
, ultralytics==8.2.4
, tensorrt==10.0.1
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|
FP32 | Предсказать | 1.76 | 1.69 | 1.87 | 8 | 640 | ||
FP32 | COCOval | 1.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Предсказать | 0.86 | 0.75 | 1.00 | 8 | 640 | ||
FP16 | COCOval | 1.43 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Предсказать | 0.80 | 0.75 | 1.00 | 8 | 640 | ||
INT8 | COCOval | 1.35 | 0.47 | 0.33 | 1 | 640 |
Проверено на Pop!_OS 22.04 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
Примечание
Время вывода показано для mean
, min
(самый быстрый), и max
(самый медленный) для каждого теста с использованием предварительно обученных весов yolov8n.engine
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
размер (пикселей) |
---|---|---|---|---|---|---|---|
FP32 | Предсказать | 2.84 | 2.84 | 2.85 | 8 | 640 | ||
FP32 | COCOval | 2.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Предсказать | 1.09 | 1.09 | 1.10 | 8 | 640 | ||
FP16 | COCOval | 1.20 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Предсказать | 0.75 | 0.74 | 0.75 | 8 | 640 | ||
INT8 | COCOval | 0.76 | 0.47 | 0.33 | 1 | 640 |
Встраиваемые устройства
Производительность обнаружения (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
Точность | Оценочный тест | среднее (мс) |
min | max (мс) |
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 , чтобы узнать больше об установке и настройке.
Методы оценки
Информация о том, как экспортировались и тестировались эти модели, представлена в следующих разделах.
Экспорт конфигураций
Подробную информацию об аргументах конфигурации экспорта см. в разделе Режим экспорта.
from ultralytics import YOLO
model = YOLO("yolov8n.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"
)
Прогнозируемая петля
Дополнительные сведения см. в разделе Режим прогнозирования.
Конфигурация проверки
См. val
режим чтобы узнать больше об аргументах конфигурации проверки.
Развертывание экспортированных моделей YOLOv8 TensorRT
Успешно экспортировав модели Ultralytics YOLOv8 в формат TensorRT , вы теперь готовы к их развертыванию. Для получения подробных инструкций по развертыванию моделей TensorRT в различных условиях ознакомьтесь со следующими ресурсами:
-
Развертывание Ultralytics с помощью сервера Triton : Наше руководство по использованию NVIDIA's Triton Inference (ранее TensorRT Inference) Server специально для использования с Ultralytics YOLO моделями.
-
Развертывание глубоких нейронных сетей с помощью NVIDIA TensorRT: В этой статье рассказывается о том, как использовать NVIDIA TensorRT для эффективного развертывания глубоких нейронных сетей на платформах развертывания, основанных на GPU.
-
Комплексный искусственный интеллект для компьютеров на базе NVIDIA: NVIDIA TensorRT Развертывание: В этой статье блога рассказывается об использовании NVIDIA TensorRT для оптимизации и развертывания моделей ИИ на NVIDIA-базированных ПК.
-
Репозиторий GitHub для NVIDIA TensorRT :: Это официальный репозиторий GitHub, содержащий исходный код и документацию для NVIDIA TensorRT .
Резюме
В этом руководстве мы сосредоточились на преобразовании моделей Ultralytics YOLOv8 в формат моделей NVIDIA's TensorRT . Этот шаг преобразования имеет решающее значение для повышения эффективности и скорости работы моделей YOLOv8 , делая их более эффективными и подходящими для различных сред развертывания.
Более подробную информацию об особенностях использования можно найти в официальной документацииTensorRT .
Если вам интересно узнать о дополнительных интеграциях Ultralytics YOLOv8 , на странице нашего руководства по интеграции вы найдете обширную подборку информативных ресурсов.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как конвертировать модели YOLOv8 в формат TensorRT ?
Чтобы преобразовать модели Ultralytics YOLOv8 в формат TensorRT для оптимизированного вывода NVIDIA GPU , выполните следующие действия:
-
Установите необходимый пакет:
-
Экспортируйте модель YOLOv8 :
Более подробную информацию можно найти в руководстве по установкеYOLOv8 и в документации по экспорту.
В чем преимущества использования TensorRT для моделей YOLOv8 ?
Использование сайта TensorRT для оптимизации моделей YOLOv8 дает ряд преимуществ:
- Более высокая скорость вывода: TensorRT оптимизирует слои модели и использует прецизионную калибровку (INT8 и FP16) для ускорения вывода без существенного снижения точности.
- Эффективность использования памяти: TensorRT управляет памятью tensor динамически, снижая накладные расходы и повышая эффективность использования памяти GPU .
- Слияние слоев: Объединяет несколько слоев в одну операцию, снижая вычислительную сложность.
- Автоматическая настройка ядра: Автоматически выбирает оптимизированные ядра GPU для каждого слоя модели, обеспечивая максимальную производительность.
Для получения дополнительной информации ознакомьтесь с подробными возможностями TensorRT здесь и прочитайте наш обзорTensorRT .
Могу ли я использовать квантование INT8 с TensorRT для моделей YOLOv8 ?
Да, вы можете экспортировать модели YOLOv8 , используя TensorRT с квантованием INT8. Этот процесс включает квантование после обучения (PTQ) и калибровку:
-
Экспорт с помощью INT8:
-
Выполните вывод:
Более подробную информацию см. в разделе "Экспорт TensorRT с квантованием INT8".
Как развернуть YOLOv8 TensorRT модели на NVIDIA Triton Inference Server?
Развертывание YOLOv8 TensorRT моделей на NVIDIA Triton Inference Server можно выполнить с помощью следующих ресурсов:
- Разверните Ultralytics YOLOv8 с помощью Triton Server: Пошаговое руководство по настройке и использованию Triton Inference Server.
- NVIDIA Triton Документация по серверу выводов: Официальная документация NVIDIA для подробного описания вариантов развертывания и конфигураций.
Эти руководства помогут вам эффективно интегрировать модели YOLOv8 в различные среды развертывания.
Какие улучшения производительности наблюдаются при экспорте моделей YOLOv8 в TensorRT?
Увеличение производительности с помощью TensorRT может зависеть от используемого оборудования. Вот несколько типичных бенчмарков:
-
NVIDIA A100:
- FP32 Inference: ~0,52 мс / изображение
- Вывод FP16: ~0,34 мс / изображение
- Вывод INT8: ~0,28 мс / изображение
- Небольшое уменьшение mAP при использовании точности INT8, но значительное увеличение скорости.
-
Потребительские графические процессоры (например, RTX 3080):
- FP32 Inference: ~1,06 мс / изображение
- FP16 Inference: ~0,62 мс / изображение
- INT8 Inference: ~0,52 мс / изображение
Подробные бенчмарки производительности для различных аппаратных конфигураций можно найти в разделе "Производительность".
Для получения более полной информации о производительности TensorRT обратитесь к документацииUltralytics и нашим отчетам по анализу производительности.