Ultralytics YOLO27:

Exportação TensorRT para modelos YOLO26#

A implementação de modelos de visão computacional em ambientes de alto desempenho pode exigir um formato que maximize a velocidade e a eficiência. Isso é especialmente importante quando implementas o teu modelo em GPUs NVIDIA.

Ao usar o formato de exportação TensorRT, podes otimizar os teus modelos Ultralytics YOLO26 para uma inferência rápida e eficiente em hardware NVIDIA. Este guia fornece instruções fáceis de seguir para o processo de conversão e ajuda-te a tirar o máximo partido da tecnologia avançada da NVIDIA nos teus projetos de aprendizagem profunda.

TensorRT#

NVIDIA TensorRT optimization workflow

O TensorRT, desenvolvido pela NVIDIA, é um kit avançado de desenvolvimento de software (SDK) concebido para inferência de aprendizagem profunda de alta velocidade. É adequado para aplicações em tempo real, como a deteção de objetos.

Este kit de ferramentas otimiza modelos de aprendizagem profunda para GPUs NVIDIA, resultando em operações mais rápidas e eficientes. Os modelos TensorRT são submetidos a otimização TensorRT, que inclui técnicas como fusão de camadas, calibração de precisão (INT8 e FP16), gestão dinâmica da memória de tensores e ajuste automático de kernels. A conversão de modelos de aprendizagem profunda para o formato TensorRT permite aos programadores tirar plenamente partido do potencial das GPUs NVIDIA.

O TensorRT é conhecido pela sua compatibilidade com vários formatos de modelos, incluindo TensorFlow, PyTorch e ONNX, fornecendo aos programadores uma solução flexível para integrar e otimizar modelos de diferentes frameworks. Esta versatilidade permite uma implementação de modelos eficiente em diversos ambientes de hardware e software.

Os motores TensorRT são específicos do hardware e do runtime

O TensorRT cria perfis e ajusta um motor na GPU usada para a compilação. Compila para a arquitetura da GPU de destino e garante a compatibilidade com o runtime TensorRT/CUDA; não trates um ficheiro .engine como um formato de modelo portátil. Para implementação na periferia, a Ultralytics Platform oferece oito seleções de destino Jetson, com o estado da compilação física e da validação documentado para cada uma, ou podes exportar localmente no dispositivo de destino.

Principais funcionalidades dos modelos TensorRT#

Os modelos TensorRT oferecem várias funcionalidades importantes que contribuem para a sua eficiência e eficácia na inferência de aprendizagem profunda de alta velocidade:

  • Calibração de precisão: O TensorRT suporta calibração de precisão, permitindo ajustar os modelos para requisitos específicos de precisão. Isto inclui suporte para formatos de precisão reduzida, como INT8 e FP16, que podem aumentar ainda mais a velocidade de inferência, mantendo níveis de precisão aceitáveis.

  • Fusão de camadas: O processo de otimização TensorRT inclui a fusão de camadas, na qual várias camadas de uma rede neural são combinadas numa única operação. Isto reduz a sobrecarga computacional e melhora a velocidade de inferência, minimizando o acesso à memória e os cálculos.

TensorRT neural network layer fusion optimization

  • Gestão dinâmica da memória de tensores: O TensorRT gere eficientemente o uso da memória dos tensores durante a inferência, reduzindo a sobrecarga de memória e otimizando a alocação de memória. Isto resulta numa utilização mais eficiente da memória da GPU.

  • Ajuste automático de kernels: O TensorRT aplica o ajuste automático de kernels para selecionar o kernel de GPU mais otimizado para cada camada do modelo. Esta abordagem adaptativa garante que o modelo aproveita plenamente o poder computacional da GPU.

Opções de implementação no TensorRT#

Antes de vermos o código para exportar modelos YOLO26 para o formato TensorRT, vamos perceber onde os modelos TensorRT são normalmente utilizados.

O TensorRT oferece várias opções de implementação, e cada uma equilibra de forma diferente a facilidade de integração, a otimização do desempenho e a flexibilidade:

  • Implementação no TensorFlow: Este método integra o TensorRT no TensorFlow, permitindo que os modelos otimizados sejam executados num ambiente TensorFlow familiar. É útil para modelos com uma combinação de camadas suportadas e não suportadas, pois o TF-TRT consegue processá-las eficientemente.

NVIDIA TensorRT optimization workflow

  • API de runtime TensorRT autónoma: Oferece um controlo granular, ideal para aplicações críticas em termos de desempenho. É mais complexa, mas permite uma implementação personalizada de operadores não suportados.

  • NVIDIA Triton Inference Server: Uma opção que suporta modelos de vários frameworks. Particularmente adequada para inferência na cloud ou na periferia, fornece funcionalidades como execução concorrente de modelos e análise de modelos.

Tarefas suportadas#

A exportação TensorRT suporta todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui essas cabeças.

TarefaYOLOv8YOLO11YOLO26
Detetar
Segmentar
Semântica
Profundidade
Classificar
Pose
OBB

Exportar modelos YOLO26 para TensorRT#

Podes melhorar a eficiência de execução e otimizar o desempenho convertendo modelos YOLO26 para o formato TensorRT.

Instalação#

Para instalar o pacote necessário, executa:

Instalação
# Install the required package for YOLO26
pip install ultralytics

Para obter instruções detalhadas e boas práticas relacionadas com o processo de instalação, consulta o nosso guia de instalação do YOLO26. Durante a instalação dos pacotes necessários para YOLO26, se encontrares alguma dificuldade, consulta o nosso guia de problemas comuns para obter soluções e sugestões.

Utilização#

Antes de começares a consultar as instruções de utilização, vê a gama de modelos YOLO26 disponibilizados pela Ultralytics. Isto ajudar-te-á a escolher o modelo mais adequado aos requisitos do teu projeto.

O formato TensorRT suporta os modos Exportar, Prever e Validar. A inferência e a validação requerem uma GPU NVIDIA. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a sua precisão.

Exportação
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo26n.engine'
Previsão
from ultralytics import YOLO

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

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

# Load the exported TensorRT model
model = YOLO("yolo26n.engine")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Argumentos de Exportação#

ArgumentoTipoPredefiniçãoDescrição
formatstr'engine'Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implementação.
imgszint ou tuple640Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou um tuplo (height, width) para dimensões específicas.
quantizeint ou strNonePrecisão de quantização: 16 (FP16) ou 8 (INT8/PTQ; necessita de calibração data/fraction); 32/não definido é FP32. Um ponto de verificação treinado com quantize=8 exporta sempre INT8 a partir dos intervalos que transporta, sem calibração. Substitui os sinalizadores obsoletos half/int8.
dynamicboolFalsePermite tamanhos de entrada dinâmicos, aumentando a flexibilidade para lidar com diferentes dimensões de imagem.
simplifyboolTrueSimplifica o grafo do modelo com onnxslim, melhorando potencialmente o desempenho e a compatibilidade.
opsetintNoneEspecifica a versão do opset ONNX para o grafo ONNX intermédio. Se não for definida, utiliza a versão mais recente suportada.
workspacefloat ou NoneNoneDefine o tamanho máximo do espaço de trabalho, em GiB, para as otimizações TensorRT, equilibrando o uso de memória e o desempenho; usa None para a alocação automática pelo TensorRT até ao máximo do dispositivo.
nmsbool, opcionalNoneSeleciona a saída em bruto (None, predefinição), a NMS embutida (True) ou a cabeça sem NMS (False).
batchint1Especifica o tamanho do lote de inferência do modelo exportado ou o número máximo de imagens que o modelo exportado processará em simultâneo no modo predict.
datastrNoneCaminho para o YAML do conjunto de dados, essencial para a quantização; a classificação, em alternativa, requer um diretório de conjunto de dados ou um nome de conjunto de dados integrado. Se omitido com quantize=8, o Ultralytics seleciona o conjunto de dados de calibração predefinido para a tarefa do modelo; um ponto de verificação treinado com quantize=8 não precisa de nenhum.
fractionfloat, int ou list1.0Subconjunto de calibração como proporção, contagem de imagens ou proporções/contagens de [train, val, test]. Listas de dois itens deixam test completo, enquanto 0 o ignora.
devicestrNoneEspecifica o dispositivo para exportação: GPU (device=0), DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1).
Dica

Certifica-te de que utilizas uma GPU com suporte para CUDA ao exportar para TensorRT.

Compatibilidade com JetPack e DLA

O TensorRT 11.2.1 não é compatível com o JetPack, incluindo o Thor; usa o runtime do TensorRT 10.x suportado pela tua versão do JetPack. Para device=dla:0 ou device=dla:1, a NVIDIA identifica o TensorRT 10.7 como a última versão com suporte a DLA. O TensorRT 11.0, 11.1 e 11.2 não suportam DLA.

Para obter mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.

Exportar TensorRT com quantização INT8#

A exportação de modelos YOLO do Ultralytics utilizando TensorRT com precisão INT8 executa a quantização pós-treinamento (PTQ). O TensorRT utiliza a calibração para a quantização pós-treinamento, que mede a distribuição das ativações dentro de cada tensor de ativação à medida que o modelo YOLO processa a inferência em dados de entrada representativos e, em seguida, utiliza essa distribuição para estimar os valores de escala para cada tensor. Cada tensor de ativação que é um candidato para quantização tem uma escala associada que é deduzida por um processo de calibração. Um ponto de verificação ajustado com quantize=8 através do treinamento consciente de quantização já transporta os seus intervalos INT8, pelo que a sua exportação utiliza-os e ignora a calibração.

Quantização do TensorRT 11

O TensorRT 11 removeu a quantização implícita e a interface IInt8Calibrator. No TensorRT 11 e versões posteriores, a Ultralytics executa a quantização INT8 com a quantização explícita do NVIDIA ModelOpt, que insere nós Q/DQ no grafo ONNX antes de criar um motor fortemente tipado, e aplica FP16 com a conversão de precisão mista AutoCast do ModelOpt. Os argumentos quantize=8, quantize=16 e data funcionam da mesma forma; o ModelOpt é instalado automaticamente na primeira utilização. No TensorRT 7-10, é utilizado o calibrador legado descrito abaixo.

Ao processar redes quantizadas implicitamente, o TensorRT utiliza INT8 oportunisticamente para otimizar o tempo de execução das camadas. Se uma camada for executada mais rapidamente em INT8 e tiver escalas de quantização atribuídas às suas entradas e saídas de dados, será atribuído a essa camada um kernel com precisão INT8; caso contrário, o TensorRT seleciona uma precisão FP32 ou FP16 para o kernel, com base na opção que resultar num tempo de execução mais rápido para essa camada.

Dica

É fundamental garantir que o mesmo dispositivo que utilizará os pesos do modelo TensorRT na implementação seja usado para exportar com precisão INT8, pois os resultados da calibração podem variar entre dispositivos.

Configurar a exportação INT8#

Os argumentos fornecidos ao utilizar exportar para um modelo Ultralytics YOLO influenciam significativamente o desempenho do modelo exportado. No entanto, também têm de ser selecionados com base nos recursos disponíveis no dispositivo; os argumentos predefinidos devem funcionar para a maioria das GPUs NVIDIA discretas Ampere (ou mais recentes). O algoritmo de calibração utilizado é "MINMAX_CALIBRATION" para exportações GPU, enquanto as exportações DLA no NVIDIA Jetson utilizam "ENTROPY_CALIBRATION_2". Podes consultar mais detalhes sobre as opções disponíveis no TensorRT Developer Guide. Os testes da Ultralytics concluíram que "MINMAX_CALIBRATION" é a melhor opção para exportações GPU, e o algoritmo é selecionado automaticamente com base no dispositivo de exportação.

  • workspace : Controla o tamanho (em GiB) da alocação de memória do dispositivo durante a conversão dos pesos do modelo.

    • Ajusta o valor de workspace de acordo com as tuas necessidades de calibração e a disponibilidade de recursos. Embora um workspace maior possa aumentar o tempo de calibração, permite que o TensorRT explore uma gama mais ampla de estratégias de otimização, melhorando potencialmente o desempenho e a precisão do modelo. Por outro lado, um workspace menor pode reduzir o tempo de calibração, mas limitar as estratégias de otimização, afetando a qualidade do modelo quantizado.

    • O valor predefinido é workspace=None, o que permite ao TensorRT alocar memória automaticamente. Ao configurar manualmente, pode ser necessário aumentar este valor se a calibração falhar ou terminar inesperadamente (sem aviso).

    • O TensorRT comunicará UNSUPPORTED_STATE durante a exportação se o valor de workspace for superior à memória disponível no dispositivo, o que significa que o valor de workspace deve ser reduzido ou definido como None.

    • Se workspace estiver definido com o valor máximo e a calibração falhar ou terminar inesperadamente, considera usar None para alocação automática ou reduzir os valores de imgsz e batch para diminuir os requisitos de memória.

    • Lembra-te de que a calibração para INT8 é específica de cada dispositivo; pedir emprestada uma GPU de "alta gama" para a calibração pode resultar num desempenho fraco quando a inferência for executada noutro dispositivo.

  • batch : O tamanho máximo do batch que será utilizado para a inferência. Durante a inferência, podem ser utilizados batches menores, mas a inferência não aceitará batches maiores do que o especificado.

Nota

A utilização de batches pequenos pode resultar num dimensionamento impreciso durante a calibração INT8. Isto acontece porque o processo se ajusta com base nos dados que observa. Batches pequenos podem não captar todo o intervalo de valores, causando problemas na calibração final. A utilização de um tamanho de batch maior ajuda a garantir resultados de calibração mais representativos.

A experimentação levada a cabo pela NVIDIA levou-os a recomendar a utilização de pelo menos 500 imagens de calibração que sejam representativas dos dados para o teu modelo, com a calibração de quantização INT8. Esta é uma diretriz e não um requisito estrito, e terás de fazer experiências com o que é necessário para ter um bom desempenho para o teu conjunto de dados. Uma vez que os dados de calibração são necessários para a calibração de INT8 com TensorRT, certifica-te de que utilizas o argumento data ao exportar um ponto de verificação que não foi treinado com quantize=8 (quantização pós-treinamento) em quantize=8 para TensorRT, e utiliza data="my_dataset.yaml", que utilizará as imagens da validação para calibrar. Um ponto de verificação treinado com quantize=8 ignora a calibração, pelo que deves omitir data para o mesmo. Quando nenhum valor é passado para data com a exportação para TensorRT com quantização INT8, a predefinição será utilizar um dos conjuntos de dados de exemplo "pequenos" com base na tarefa do modelo em vez de gerar um erro.

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

# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Exportações com eixos dinâmicos; dynamic permanece False a menos que seja definido explicitamente. Consulta os argumentos de exportação para obter informações adicionais.
  2. Define o tamanho máximo do batch como 8 para o modelo exportado e a calibração INT8.
  3. Aloca 4 GiB de memória em vez de alocar todo o dispositivo para o processo de conversão.
  4. Utiliza o conjunto de dados COCO para a calibração, especificamente as imagens utilizadas para a validação (5.000 no total).
Cache de calibração

O TensorRT gera um .cache de calibração que pode ser reutilizado para acelerar a exportação de futuros pesos de modelos utilizando os mesmos dados, mas isto pode resultar numa calibração fraca quando os dados forem muito diferentes ou quando o valor de batch for alterado drasticamente. Nestas circunstâncias, o .cache existente deve ser renomeado e movido para um diretório diferente, ou eliminado por completo.

Vantagens de usar YOLO com TensorRT INT8#

  • Tamanho reduzido do modelo: A quantização de FP32 para INT8 pode reduzir o tamanho do modelo em 4x (no disco ou na memória), resultando em tempos de transferência mais rápidos, menores requisitos de armazenamento e uma menor utilização de memória ao implementar um modelo.

  • Menor consumo de energia: As operações de precisão reduzida dos modelos YOLO exportados para INT8 podem consumir menos energia do que os modelos FP32, especialmente em dispositivos alimentados por bateria.

  • Velocidades de inferência melhoradas: O TensorRT otimiza o modelo para o hardware de destino, podendo resultar em velocidades de inferência superiores em GPUs, dispositivos incorporados e aceleradores.

Nota sobre as velocidades de inferência

É esperado que as primeiras chamadas de inferência com um modelo exportado para TensorRT INT8 tenham tempos de pré-processamento, inferência e/ou pós-processamento superiores ao habitual. Isto também pode ocorrer ao alterar imgsz durante a inferência, especialmente quando imgsz não é igual ao valor especificado durante a exportação (a exportação imgsz é definida como o perfil "ideal" do TensorRT).

Desvantagens de usar YOLO com TensorRT INT8#

  • Diminuição das métricas de avaliação: A utilização de uma precisão inferior significa que mAP, Precision, Recall ou qualquer outra métrica usada para avaliar o desempenho do modelo provavelmente será um pouco pior. As camadas Sigmoid são mantidas com maior precisão para preservar a calibração das pontuações, mas o INT8 ainda pode alterar os valores de confiança; por isso, seleciona o limiar de operação a partir da própria curva F1 do modelo INT8. Consulta a secção de resultados de desempenho para comparar as diferenças em mAP50 e mAP50-95 ao exportar com INT8 numa pequena amostra de vários dispositivos.

  • Aumento do tempo de desenvolvimento: Encontrar as definições "ideais" para a calibração INT8 do conjunto de dados e do dispositivo pode exigir uma quantidade significativa de testes.

  • Dependência do hardware: A calibração e os ganhos de desempenho podem depender fortemente do hardware, e os pesos dos modelos são menos transferíveis.

Desempenho da exportação Ultralytics YOLO TensorRT#

NVIDIA A100#

Desempenho

Testado com Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Consulta a documentação de deteção para ver exemplos de utilização destes modelos treinados com COCO, que incluem 80 classes pré-treinadas.

Nota

Tempos de inferência apresentados para mean, min (mais rápido) e max (mais lento) em cada teste, utilizando os pesos pré-treinados yolov8n.engine

PrecisionTeste de avaliaçãomédia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamanho
(píxeis)
FP32Previsão0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Previsão0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Previsão0.280.27 | 0.318640
INT8COCOval0.290.470.331640

GPUs de consumo#

Desempenho de deteção (COCO)

Testado com Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Nota

Tempos de inferência apresentados para mean, min (mais rápido) e max (mais lento) em cada teste, utilizando os pesos pré-treinados yolov8n.engine

PrecisionTeste de avaliaçãomédia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamanho
(píxeis)
FP32Previsão1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Previsão0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Previsão0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Dispositivos incorporados#

Desempenho de deteção (COCO)

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

Nota

Tempos de inferência apresentados para mean, min (mais rápido) e max (mais lento) em cada teste, utilizando os pesos pré-treinados yolov8n.engine

PrecisionTeste de avaliaçãomédia
(ms)
mín. | máx.
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchtamanho
(píxeis)
FP32Previsão6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Previsão3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Previsão2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Informação

Consulta o nosso guia de início rápido sobre NVIDIA Jetson com Ultralytics YOLO para saber mais sobre a configuração e instalação.

Informação

Consulta o nosso guia de início rápido sobre NVIDIA DGX Spark com Ultralytics YOLO para saber mais sobre a configuração e instalação.

Métodos de avaliação#

Expande as secções abaixo para obter informações sobre como estes modelos foram exportados e testados.

Configurações de exportação

Consulta o modo de exportação para obter detalhes sobre os argumentos de configuração da exportação.

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 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, quantize=8, data="coco8.yaml"
)
Ciclo de previsão

Consulta o modo de previsão para obter informações adicionais.

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",
    )
Configuração da validação

Consulta o modo val para saber mais sobre os argumentos de configuração da validação.

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",
)

Implementação de modelos YOLO26 TensorRT exportados#

Depois de exportares com sucesso os teus modelos Ultralytics YOLO26 para o formato TensorRT, estás agora pronto para os implementar. Para obteres instruções detalhadas sobre a implementação dos teus modelos TensorRT em vários contextos, consulta os seguintes recursos:

Resumo#

Neste guia, concentramo-nos na conversão de modelos Ultralytics YOLO26 para o formato de modelo TensorRT da NVIDIA. Este passo de conversão é essencial para melhorar a eficiência e a velocidade dos modelos YOLO26, tornando-os mais eficazes e adequados a diversos ambientes de implementação.

Para obteres mais informações sobre os detalhes de utilização, consulta a documentação oficial do TensorRT.

Se tens curiosidade sobre integrações adicionais do Ultralytics YOLO26, a nossa página do guia de integrações disponibiliza uma vasta seleção de recursos informativos e conhecimentos.

Perguntas frequentes#

  • Para converteres os teus modelos Ultralytics YOLO26 para o formato TensorRT e obteres inferência otimizada em GPU NVIDIA, segue estes passos:

    1. Instala o pacote necessário:

      pip install ultralytics
    2. Exporta o teu modelo 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")

    Para obteres mais detalhes, visita o guia de instalação do YOLO26 e a documentação de exportação.

  • A utilização do TensorRT para otimizar modelos YOLO26 oferece várias vantagens:

    • Maior velocidade de inferência: o TensorRT otimiza as camadas do modelo e utiliza calibração de precisão (INT8 e FP16) para acelerar a inferência sem sacrificar significativamente a precisão.
    • Eficiência de memória: o TensorRT gere dinamicamente a memória dos tensores, reduzindo a sobrecarga e melhorando a utilização da memória da GPU.
    • Fusão de camadas: combina várias camadas em operações individuais, reduzindo a complexidade computacional.
    • Ajuste automático de kernels: seleciona automaticamente kernels de GPU otimizados para cada camada do modelo, garantindo o máximo desempenho.

    Para saberes mais, consulta a documentação oficial do TensorRT da NVIDIA e a nossa visão geral detalhada do TensorRT.

  • Sim, podes exportar modelos YOLO26 utilizando o TensorRT com quantização INT8. Este processo envolve a quantização pós-treinamento (PTQ) e a calibração, a menos que o ponto de verificação tenha sido treinado com quantize=8 (treinamento consciente de quantização), caso em que os intervalos que o ponto de verificação transporta são exportados sem calibração:

    1. Exportar com INT8:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
    2. Executar inferência:

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

    Para obteres mais detalhes, consulta a secção sobre a exportação TensorRT com quantização INT8.

  • A implementação de modelos YOLO26 TensorRT num NVIDIA Triton Inference Server pode ser feita utilizando os seguintes recursos:

    Estes guias vão ajudar-te a integrar modelos YOLO26 de forma eficiente em vários ambientes de implementação.

  • As melhorias de desempenho com TensorRT podem variar consoante o hardware utilizado. Eis alguns resultados de referência típicos:

    • NVIDIA A100:

      • Inferência FP32: ~0.52 ms / imagem
      • Inferência FP16: ~0.34 ms / imagem
      • Inferência INT8: ~0.28 ms / imagem
      • Ligeira redução do mAP com precisão INT8, mas melhoria significativa da velocidade.
    • GPUs de consumo (por exemplo, RTX 3080):

      • Inferência FP32: ~1.06 ms / imagem
      • Inferência FP16: ~0.62 ms / imagem
      • Inferência INT8: ~0.52 ms / imagem

    Podes encontrar resultados de referência detalhados de desempenho para diferentes configurações de hardware na secção de desempenho.

    Para obteres uma visão mais abrangente do desempenho do TensorRT, consulta a documentação do Ultralytics e os nossos relatórios de análise de desempenho.

Comentários