Ultralytics YOLO27:
Get Started

Exportación de modelos YOLO26 a TensorRT#

Implementar modelos de visión artificial en entornos de alto rendimiento puede requerir un formato que maximice la velocidad y la eficiencia. Esto es especialmente importante si implementas el modelo en GPU NVIDIA.

Al usar el formato de exportación TensorRT, puedes optimizar tus modelos Ultralytics YOLO26 para realizar inferencias rápidas y eficientes en hardware NVIDIA. Esta guía te ofrece pasos sencillos para el proceso de conversión y te ayuda a aprovechar al máximo la tecnología avanzada de NVIDIA en tus proyectos de aprendizaje profundo.

TensorRT#

NVIDIA TensorRT optimization workflow

TensorRT, desarrollado por NVIDIA, es un kit de desarrollo de software (SDK) avanzado diseñado para realizar inferencias de aprendizaje profundo a alta velocidad. Es idóneo para aplicaciones en tiempo real, como la detección de objetos.

Este conjunto de herramientas optimiza los modelos de aprendizaje profundo para GPU NVIDIA y permite realizar operaciones más rápidas y eficientes. Los modelos TensorRT se someten a optimización con TensorRT, que incluye técnicas como la fusión de capas, la calibración de precisión (INT8 y FP16), la gestión dinámica de la memoria de tensores y el ajuste automático de kernels. Convertir modelos de aprendizaje profundo al formato TensorRT permite a los desarrolladores aprovechar plenamente el potencial de las GPU NVIDIA.

TensorRT es conocido por su compatibilidad con varios formatos de modelo, como TensorFlow, PyTorch y ONNX, lo que proporciona a los desarrolladores una solución flexible para integrar y optimizar modelos de distintos marcos de trabajo. Esta versatilidad permite una implementación de modelos eficiente en diversos entornos de hardware y software.

Los motores TensorRT son específicos del hardware y del entorno de ejecución

TensorRT perfila y ajusta un motor en la GPU donde se compila. Compílalo para la arquitectura de GPU de destino y utiliza una versión compatible del entorno de ejecución de TensorRT/CUDA; no consideres un archivo .engine como un formato de modelo portátil. Para la implementación en dispositivos periféricos, Ultralytics Platform ofrece ocho selecciones de destino Jetson, con el estado de compilación física y validación documentado para cada una; también puedes exportar localmente en el dispositivo de destino.

Características principales de los modelos TensorRT#

Los modelos TensorRT ofrecen una serie de características clave que contribuyen a su eficiencia y eficacia al realizar inferencias de aprendizaje profundo a alta velocidad:

  • Calibración de precisión: TensorRT admite la calibración de precisión, lo que permite ajustar los modelos a requisitos de precisión específicos. Incluye compatibilidad con formatos de precisión reducida como INT8 y FP16, que pueden acelerar aún más la inferencia y mantener unos niveles de precisión aceptables.

  • Fusión de capas: El proceso de optimización de TensorRT incluye la fusión de capas, que combina varias capas de una red neuronal en una sola operación. Esto reduce la sobrecarga computacional y mejora la velocidad de inferencia al minimizar los accesos a memoria y los cálculos.

TensorRT neural network layer fusion optimization

  • Gestión dinámica de la memoria de tensores: TensorRT gestiona eficazmente el uso de la memoria de tensores durante la inferencia, reduce la sobrecarga de memoria y optimiza su asignación. Esto permite aprovechar la memoria de la GPU con mayor eficiencia.

  • Ajuste automático de kernels: TensorRT ajusta automáticamente los kernels para seleccionar el kernel de GPU más optimizado para cada capa del modelo. Este enfoque adaptativo garantiza que el modelo aproveche al máximo la capacidad de cálculo de la GPU.

Opciones de implementación de TensorRT#

Antes de ver el código para exportar modelos YOLO26 al formato TensorRT, veamos dónde se suelen utilizar los modelos TensorRT.

TensorRT ofrece varias opciones de implementación, cada una con un equilibrio distinto entre facilidad de integración, optimización del rendimiento y flexibilidad:

  • Implementación dentro de TensorFlow: Este método integra TensorRT en TensorFlow, lo que permite ejecutar modelos optimizados en un entorno de TensorFlow conocido. Es útil para modelos que combinan capas compatibles y no compatibles, ya que TF-TRT puede gestionarlas de forma eficiente.

NVIDIA TensorRT optimization workflow

  • API de ejecución independiente de TensorRT: Ofrece un control detallado y es ideal para aplicaciones en las que el rendimiento es fundamental. Es más compleja, pero permite implementar operadores no compatibles de forma personalizada.

  • Servidor de inferencia NVIDIA Triton: Esta opción admite modelos de distintos marcos de trabajo. Es especialmente adecuada para la inferencia en la nube o en dispositivos periféricos y ofrece funciones como la ejecución simultánea de modelos y su análisis.

Tareas compatibles#

La exportación a TensorRT admite las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esas cabezas.

TareaYOLOv8YOLO11YOLO26
Detectar✅✅✅
Segmentar✅✅✅
Semántica❌❌✅
Profundidad❌❌✅
Clasificar✅✅✅
Pose✅✅✅
OBB✅✅✅

Exportación de modelos YOLO26 a TensorRT#

Puedes mejorar la eficiencia de ejecución y optimizar el rendimiento convirtiendo los modelos YOLO26 al formato TensorRT.

Instalación#

Para instalar el paquete necesario, ejecuta:

Instalación
# Install the required package for YOLO26
pip install ultralytics

Para obtener instrucciones detalladas y buenas prácticas sobre el proceso de instalación, consulta nuestra guía de instalación de YOLO26. Si tienes dificultades al instalar los paquetes necesarios para YOLO26, consulta nuestra guía de problemas habituales, donde encontrarás soluciones y consejos.

Uso#

Antes de consultar las instrucciones de uso, echa un vistazo a la gama de modelos YOLO26 que ofrece Ultralytics. Así podrás elegir el modelo más adecuado para los requisitos de tu proyecto.

El formato TensorRT admite los modos Exportar, Predecir y Validar. La inferencia y la validación requieren una GPU NVIDIA. Exporta el modelo y, a continuación, carga el modelo exportado para ejecutar inferencias o validar su precisión.

Exportar
from ultralytics import YOLO

# Carga un modelo YOLO26
model = YOLO("yolo26n.pt")

# Exporta el modelo al formato TensorRT
model.export(format="engine")  # crea 'yolo26n.engine'
Predecir
from ultralytics import YOLO

# Carga el modelo exportado a TensorRT
model = YOLO("yolo26n.engine")

# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")
Validar
from ultralytics import YOLO

# Carga el modelo exportado a TensorRT
model = YOLO("yolo26n.engine")

# Valida la precisión con el conjunto de datos COCO8
metrics = model.val(data="coco8.yaml")

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'engine'Formato de destino del modelo exportado, que define su compatibilidad con distintos entornos de implementación.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas.
quantizeint o strNonePrecisión de cuantización: 16 (FP16) o 8 (INT8/PTQ; necesita calibración data/fraction); 32/sin definir corresponde a FP32. Un punto de control entrenado con quantize=8 siempre se exporta a INT8 a partir de los rangos que contiene, sin calibración. Sustituye las opciones obsoletas half/int8.
dynamicboolFalsePermite tamaños de entrada dinámicos, lo que aumenta la flexibilidad para trabajar con imágenes de distintas dimensiones.
simplifyboolTrueSimplifica el grafo del modelo con onnxslim, lo que puede mejorar el rendimiento y la compatibilidad.
opsetintNoneEspecifica la versión del conjunto de operaciones de ONNX para el grafo ONNX intermedio. Si no se establece, se utiliza la última versión compatible.
workspacefloat o NoneNoneEstablece el tamaño máximo del espacio de trabajo, en GiB, para las optimizaciones de TensorRT y equilibra el uso de memoria y el rendimiento; usa None para que TensorRT asigne automáticamente memoria hasta el máximo del dispositivo.
nmsbool, opcionalNoneSelecciona la salida sin procesar (None, predeterminada), NMS integrada (True) o el cabezal sin NMS (False).
batchint1Especifica el tamaño del lote de inferencia del modelo exportado o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el modo predict.
datastrNoneRuta al archivo YAML del conjunto de datos, esencial para la cuantización; para la clasificación, se indica un directorio de conjunto de datos o el nombre de uno integrado. Si se omite al usar quantize=8, Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo; un punto de control entrenado con quantize=8 no necesita ninguno.
fractionfloat, int o list1.0Subconjunto de calibración expresado como proporción, número de imágenes o proporciones/recuentos [train, val, test]. Las listas de dos elementos dejan completo test, mientras que 0 lo omite.
devicestrNoneEspecifica el dispositivo para la exportación: GPU (device=0) o DLA para NVIDIA Jetson (device=dla:0 o device=dla:1).
Consejo

Asegúrate de usar una GPU compatible con CUDA al exportar a TensorRT.

Compatibilidad con JetPack y DLA

TensorRT 11.2.1 no es compatible con JetPack, incluido Thor; usa el entorno de ejecución TensorRT 10.x compatible con tu versión de JetPack. Para device=dla:0 o device=dla:1, NVIDIA indica que TensorRT 10.7 es la última versión compatible con DLA. TensorRT 11.0, 11.1 y 11.2 no son compatibles con DLA.

Para obtener más información sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.

Exportación a TensorRT con cuantización INT8#

La exportación de modelos Ultralytics YOLO con TensorRT y precisión INT8 realiza una cuantización posterior al entrenamiento (PTQ). TensorRT utiliza la calibración para PTQ: mide la distribución de activaciones de cada tensor de activación mientras el modelo YOLO realiza inferencias con datos de entrada representativos y, a continuación, utiliza esa distribución para estimar los valores de escala de cada tensor. Cada tensor de activación candidato a la cuantización tiene una escala asociada, que se determina mediante un proceso de calibración. Un punto de control ajustado con quantize=8 mediante entrenamiento con conocimiento de la cuantización ya contiene sus rangos INT8, por lo que la exportación los utiliza y omite la calibración.

Cuantización en TensorRT 11

TensorRT 11 eliminó la cuantización implícita y la interfaz IInt8Calibrator. En TensorRT 11 y versiones posteriores, Ultralytics realiza la cuantización INT8 mediante cuantización explícita de NVIDIA ModelOpt, que inserta nodos Q/DQ en el grafo ONNX antes de compilar un motor con tipos estrictos; la precisión FP16 se aplica mediante la conversión de precisión mixta AutoCast de ModelOpt. Los argumentos quantize=8, quantize=16 y data funcionan del mismo modo; ModelOpt se instala automáticamente la primera vez que se utiliza. En TensorRT 7-10 se utiliza el calibrador heredado que se describe a continuación.

Al procesar redes cuantizadas implícitamente, TensorRT utiliza INT8 cuando resulta oportuno para optimizar el tiempo de ejecución de las capas. Si una capa se ejecuta más rápido en INT8 y tiene asignadas escalas de cuantización en sus entradas y salidas de datos, se le asigna un kernel con precisión INT8; de lo contrario, TensorRT selecciona para el kernel una precisión FP32 o FP16, según cuál permita ejecutar esa capa más rápido.

Consejo

Es fundamental utilizar para la exportación con precisión INT8 el mismo dispositivo que se usará para implementar los pesos del modelo TensorRT, ya que los resultados de la calibración pueden variar de un dispositivo a otro.

Configuración de la exportación INT8#

Los argumentos que se proporcionan al usar export para un modelo Ultralytics YOLO influirán en gran medida en el rendimiento del modelo exportado. También tendrás que seleccionarlos según los recursos disponibles en el dispositivo, aunque los argumentos predeterminados deberían funcionar en la mayoría de las GPU NVIDIA discretas Ampere (o posteriores). El algoritmo de calibración utilizado es "MINMAX_CALIBRATION" para las exportaciones a GPU, mientras que las exportaciones a DLA en NVIDIA Jetson usan "ENTROPY_CALIBRATION_2". Puedes consultar más información sobre las opciones disponibles en la guía para desarrolladores de TensorRT. Las pruebas de Ultralytics determinaron que "MINMAX_CALIBRATION" era la mejor opción para las exportaciones a GPU; el algoritmo se selecciona automáticamente según el dispositivo de exportación.

  • workspace : Controla el tamaño (en GiB) de la asignación de memoria del dispositivo durante la conversión de los pesos del modelo.

    • Ajusta el valor de workspace según tus necesidades de calibración y los recursos disponibles. Aunque un valor mayor de workspace puede aumentar el tiempo de calibración, permite que TensorRT explore un abanico más amplio de estrategias de optimización, lo que puede mejorar el rendimiento y la precisión del modelo. Por el contrario, un valor menor de workspace puede reducir el tiempo de calibración, pero también limitar las estrategias de optimización y afectar a la calidad del modelo cuantizado.

    • El valor predeterminado es workspace=None, que permite a TensorRT asignar memoria automáticamente. Si configuras este valor manualmente, quizá tengas que aumentarlo si la calibración falla (el proceso se cierra sin avisar).

    • Durante la exportación, TensorRT mostrará UNSUPPORTED_STATE si el valor de workspace supera la memoria disponible en el dispositivo; en ese caso, reduce el valor de workspace o establécelo en None.

    • Si workspace está establecido en el valor máximo y la calibración falla o se interrumpe, prueba a usar None para la asignación automática o reduce los valores de imgsz y batch para disminuir los requisitos de memoria.

    • Recuerda que la calibración para INT8 es específica de cada dispositivo; usar una GPU «de gama alta» para calibrar puede dar lugar a un rendimiento deficiente si la inferencia se ejecuta en otro dispositivo.

  • batch : El tamaño máximo del lote que se utilizará para la inferencia. Con dynamic=True, se pueden usar lotes más pequeños durante la inferencia, pero no se aceptarán lotes mayores que el tamaño especificado.

Nota

Usar lotes pequeños puede provocar un escalado impreciso durante la calibración INT8, porque el proceso se ajusta a los datos que recibe. Es posible que los lotes pequeños no representen todo el rango de valores, lo que puede causar problemas en la calibración final. Usar un tamaño de lote mayor ayuda a obtener resultados de calibración más representativos.

A partir de sus experimentos, NVIDIA recomienda usar al menos 500 imágenes de calibración representativas de los datos del modelo para la calibración de cuantización INT8. Se trata de una recomendación, no de un requisito estricto, y tendrás que experimentar para determinar qué se necesita para obtener un buen rendimiento con tu conjunto de datos. Como los datos de calibración son necesarios para la calibración INT8 con TensorRT, asegúrate de usar el argumento data al exportar a TensorRT con quantize=8 un punto de control que no se haya entrenado con quantize=8 (cuantización posterior al entrenamiento), y usa data="my_dataset.yaml", que utilizará las imágenes de validación para la calibración. Los puntos de control entrenados con quantize=8 omiten la calibración, así que no incluyas data. Si no se proporciona ningún valor para data al exportar a TensorRT con cuantización INT8, se utilizará de forma predeterminada uno de los conjuntos de datos de ejemplo «pequeños» según la tarea del modelo en lugar de generar un error.

Ejemplo
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)!
)

# Cargar el modelo TensorRT INT8 exportado
model = YOLO("yolo26n.engine", task="detect")

# Ejecutar inferencia
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Exporta con ejes dinámicos para aceptar tamaños de entrada desde 32 píxeles hasta el doble del valor de exportación imgsz; dynamic mantiene el valor False salvo que se establezca explícitamente. Consulta los argumentos de exportación para obtener más información.
  2. Establece un tamaño de lote máximo de 8 para el modelo exportado y la calibración INT8.
  3. Asigna 4 GiB de memoria en lugar de reservar todo el dispositivo para el proceso de conversión.
  4. Usa el conjunto de datos COCO para la calibración; en concreto, las imágenes utilizadas para la validación (5000 en total).

Ventajas de usar YOLO con TensorRT INT8#

  • Tamaño reducido del modelo: La cuantización de FP32 a INT8 puede reducir el tamaño del modelo 4 veces (en disco o en memoria), lo que permite descargas más rápidas, reduce los requisitos de almacenamiento y ocupa menos memoria al desplegar un modelo.

  • Menor consumo energético: Las operaciones de precisión reducida de los modelos YOLO exportados a INT8 pueden consumir menos energía que los modelos FP32, especialmente en dispositivos alimentados por batería.

  • Mayor velocidad de inferencia: TensorRT optimiza el modelo para el hardware de destino, lo que puede acelerar la inferencia en GPU, dispositivos integrados y aceleradores.

Nota sobre la velocidad de inferencia

Cabe esperar que las primeras llamadas de inferencia con un modelo exportado a TensorRT INT8 tengan tiempos de preprocesamiento, inferencia o posprocesamiento más largos de lo habitual. Esto también puede ocurrir al cambiar imgsz durante la inferencia, especialmente si imgsz no coincide con lo especificado durante la exportación (la exportación imgsz se establece como perfil «optimal» de TensorRT).

Inconvenientes de usar YOLO con TensorRT INT8#

  • Descenso de las métricas de evaluación: El uso de una precisión menor implica que mAP, Precision, Recall o cualquier otra métrica utilizada para evaluar el rendimiento del modelo probablemente empeore en cierta medida. Las capas Sigmoid se mantienen a una precisión mayor para conservar la calibración de las puntuaciones, pero INT8 puede seguir desplazando los valores de confianza, así que selecciona el umbral operativo a partir de la propia curva F1 del modelo INT8. Consulta la sección de resultados de rendimiento para comparar las diferencias de mAP50 y mAP50-95 al exportar con INT8 usando una pequeña muestra de distintos dispositivos.

  • Aumento del tiempo de desarrollo: Encontrar los ajustes «óptimos» para la calibración INT8 en un conjunto de datos y dispositivo puede requerir muchas pruebas.

  • Dependencia del hardware: La calibración y las mejoras de rendimiento pueden depender mucho del hardware, y los pesos del modelo son menos transferibles.

Rendimiento de la exportación de Ultralytics YOLO a TensorRT#

NVIDIA A100#

Rendimiento

Probado con Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Consulta la documentación de detección para ver ejemplos de uso de estos modelos entrenados con COCO, que incluyen 80 clases preentrenadas.

Nota

Tiempos de inferencia indicados para mean, min (el más rápido) y max (el más lento) en cada prueba, usando los pesos preentrenados yolov8n.engine

PrecisiónPrueba de evaluaciónmedia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamaño
(píxeles)
FP32Predecir0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Predecir0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Predecir0.280.27 | 0.318640
INT8COCOval0.290.470.331640

GPU de consumo#

Rendimiento de detección (COCO)

Probado con Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Nota

Tiempos de inferencia indicados para mean, min (el más rápido) y max (el más lento) en cada prueba, usando los pesos preentrenados yolov8n.engine

PrecisiónPrueba de evaluaciónmedia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamaño
(píxeles)
FP32Predecir1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Predecir0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Predecir0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Dispositivos integrados#

Rendimiento de detección (COCO)

Probado con JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

Nota

Tiempos de inferencia indicados para mean, min (el más rápido) y max (el más lento) en cada prueba, usando los pesos preentrenados yolov8n.engine

PrecisiónPrueba de evaluaciónmedia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamaño
(píxeles)
FP32Predecir6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Predecir3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Predecir2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Información

Consulta nuestra guía de inicio rápido de NVIDIA Jetson con Ultralytics YOLO para obtener más información sobre la configuración.

Información

Consulta nuestra guía de inicio rápido de NVIDIA DGX Spark con Ultralytics YOLO para obtener más información sobre la configuración.

Métodos de evaluación#

Despliega las secciones siguientes para obtener información sobre cómo se exportaron y probaron estos modelos.

Configuraciones de exportación

Consulta el modo de exportación para obtener más información sobre los argumentos de configuración de la exportación.

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 con calibración `data` (es decir, COCO, ImageNet o DOTAv1 para la tarea del modelo correspondiente)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)
Bucle de predicción

Consulta el modo de predicción para obtener más información.

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 de la misma imagen
        verbose=False,
        device="cuda",
    )
Configuración de validación

Consulta el modo val para obtener más información sobre los argumentos de configuración de la validación.

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet o DOTAv1 para la tarea del modelo correspondiente
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Despliegue de modelos YOLO26 exportados a TensorRT#

Ahora que has exportado correctamente tus modelos Ultralytics YOLO26 al formato TensorRT, ya puedes desplegarlos. Para consultar instrucciones detalladas sobre cómo desplegar tus modelos TensorRT en distintos entornos, echa un vistazo a estos recursos:

Resumen#

En esta guía, nos hemos centrado en convertir modelos Ultralytics YOLO26 al formato de modelo NVIDIA TensorRT. Este paso de conversión es fundamental para mejorar la eficiencia y la velocidad de los modelos YOLO26, y hacerlos más eficaces y adecuados para diversos entornos de despliegue.

Para obtener más información sobre su uso, consulta la documentación oficial de TensorRT.

Si te interesan otras integraciones de Ultralytics YOLO26, nuestra página de la guía de integración ofrece una amplia selección de recursos e información útiles.

Preguntas frecuentes#

  • Para convertir tus modelos Ultralytics YOLO26 al formato TensorRT y optimizar la inferencia en GPU NVIDIA, sigue estos pasos:

    1. Instala el paquete necesario:

      pip install ultralytics
    2. Exporta tu modelo YOLO26:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine")  # crea 'yolo26n.engine'
      
      # Ejecutar inferencia
      model = YOLO("yolo26n.engine")
      results = model("https://ultralytics.com/images/bus.jpg")

    Para obtener más información, consulta la guía de instalación de YOLO26 y la documentación de exportación.

  • Optimizar modelos YOLO26 con TensorRT ofrece varias ventajas:

    • Mayor velocidad de inferencia: TensorRT optimiza las capas del modelo y utiliza la calibración de precisión (INT8 y FP16) para acelerar la inferencia sin sacrificar significativamente la precisión.
    • Eficiencia de memoria: TensorRT gestiona dinámicamente la memoria de los tensores, reduce la sobrecarga y mejora el aprovechamiento de la memoria de la GPU.
    • Fusión de capas: combina varias capas en una sola operación, lo que reduce la complejidad computacional.
    • Ajuste automático de kernels: selecciona automáticamente kernels de GPU optimizados para cada capa del modelo, lo que garantiza el máximo rendimiento.

    Para obtener más información, consulta la documentación oficial de TensorRT de NVIDIA y nuestra guía detallada de TensorRT.

  • Sí, puedes exportar modelos YOLO26 con TensorRT y cuantización INT8. Este proceso implica cuantización posterior al entrenamiento (PTQ) y calibración, a menos que el punto de control se haya entrenado con quantize=8 (entrenamiento consciente de la cuantización); en ese caso, los rangos incluidos en el punto de control se exportan sin calibración:

    1. Exportar con INT8:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
    2. Ejecutar la inferencia:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.engine", task="detect")
      result = model.predict("https://ultralytics.com/images/bus.jpg")

    Para obtener más información, consulta la sección sobre la exportación a TensorRT con cuantización INT8.

  • Puedes desplegar modelos YOLO26 TensorRT en un servidor NVIDIA Triton Inference Server con estos recursos:

    Estas guías te ayudarán a integrar modelos YOLO26 de forma eficiente en distintos entornos de despliegue.

  • Las mejoras de rendimiento con TensorRT pueden variar según el modelo y el hardware utilizado. A continuación se muestran los valores de referencia habituales, medidos con YOLOv8n, que ilustran las mejoras relativas de cada nivel de precisión:

    • NVIDIA A100:

      • Inferencia FP32: ~0.52 ms / imagen
      • Inferencia FP16: ~0.34 ms / imagen
      • Inferencia INT8: ~0.28 ms / imagen
      • La precisión INT8 reduce ligeramente el mAP, pero mejora significativamente la velocidad.
    • GPU de consumo (p. ej., RTX 3080):

      • Inferencia FP32: ~1.06 ms / imagen
      • Inferencia FP16: ~0.62 ms / imagen
      • Inferencia INT8: ~0.52 ms / imagen

    Encontrarás valores de referencia detallados del rendimiento para distintas configuraciones de hardware en la sección de rendimiento.

    Para obtener una visión más completa del rendimiento de TensorRT, consulta la documentación de Ultralytics y nuestros informes de análisis de rendimiento.

Comentarios