Exportação para TensorRT de modelos YOLO26#
A implantaçã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 ao implantar o modelo em GPUs NVIDIA.
Com o formato de exportação TensorRT, você pode otimizar seus modelos Ultralytics YOLO26 para realizar inferências com rapidez e eficiência em hardware NVIDIA. Este guia apresenta etapas fáceis de seguir para o processo de conversão e ajuda você a aproveitar ao máximo a tecnologia avançada da NVIDIA em seus projetos de aprendizado profundo.
TensorRT#
O TensorRT, desenvolvido pela NVIDIA, é um kit de desenvolvimento de software (SDK) avançado projetado para inferência de aprendizado profundo em alta velocidade. Ele é adequado para aplicações em tempo real, como detecção de objetos.
Esse kit de ferramentas otimiza modelos de aprendizado profundo para GPUs NVIDIA, resultando em operações mais rápidas e eficientes. Os modelos TensorRT passam por otimização do TensorRT, que inclui técnicas como fusão de camadas, calibração de precisão (INT8 e FP16), gerenciamento dinâmico de memória de tensores e ajuste automático de kernels. Converter modelos de aprendizado profundo para o formato TensorRT permite que os desenvolvedores aproveitem plenamente o potencial das GPUs NVIDIA.
O TensorRT é conhecido pela compatibilidade com vários formatos de modelo, incluindo TensorFlow, PyTorch e ONNX, oferecendo aos desenvolvedores uma solução flexível para integrar e otimizar modelos de diferentes frameworks. Essa versatilidade permite a implantação de modelos com eficiência em diversos ambientes de hardware e software.
O TensorRT cria perfis e ajusta um mecanismo na GPU usada para compilá-lo. Compile para a arquitetura de GPU de destino da implantação e use um ambiente de execução compatível com TensorRT/CUDA; não trate um arquivo .engine como um formato de modelo portátil. Para implantação em dispositivos de borda, a Ultralytics Platform oferece oito seleções de destino Jetson, com o status de compilação física e validação documentado para cada uma; você também pode exportar localmente no dispositivo de destino.
Principais recursos dos modelos TensorRT#
Os modelos TensorRT oferecem vários recursos importantes que contribuem para sua eficiência e eficácia na inferência de aprendizado profundo em alta velocidade:
-
Calibração de precisão: O TensorRT é compatível com a calibração de precisão, permitindo ajustar os modelos para requisitos específicos de precisão. Isso inclui suporte a formatos de precisão reduzida, como INT8 e FP16, que podem aumentar ainda mais a velocidade de inferência mantendo níveis aceitáveis de precisão.
-
Fusão de camadas: O processo de otimização do TensorRT inclui a fusão de camadas, na qual várias camadas de uma rede neural são combinadas em uma única operação. Isso reduz a sobrecarga computacional e melhora a velocidade de inferência ao minimizar o acesso à memória e os cálculos.
-
Gerenciamento dinâmico de memória de tensores: O TensorRT gerencia com eficiência o uso da memória dos tensores durante a inferência, reduzindo a sobrecarga de memória e otimizando sua alocação. Isso resulta em um uso mais eficiente da memória da GPU.
-
Ajuste automático de kernels: O TensorRT realiza o ajuste automático de kernels para selecionar o kernel de GPU mais otimizado para cada camada do modelo. Essa abordagem adaptativa garante que o modelo aproveite plenamente o poder computacional da GPU.
Opções de implantação no TensorRT#
Antes de vermos o código para exportar modelos YOLO26 para o formato TensorRT, vamos entender onde os modelos TensorRT costumam ser usados.
O TensorRT oferece várias opções de implantação, e cada uma equilibra de forma diferente a facilidade de integração, a otimização de desempenho e a flexibilidade:
- Implantação no TensorFlow: Esse método integra o TensorRT ao TensorFlow, permitindo que modelos otimizados sejam executados em um ambiente TensorFlow familiar. É útil para modelos com uma combinação de camadas compatíveis e incompatíveis, pois o TF-TRT pode processá-las com eficiência.
-
API autônoma de ambiente de execução TensorRT: Oferece controle granular e é ideal para aplicações críticas em termos de desempenho. É mais complexa, mas permite a implementação personalizada de operadores incompatíveis.
-
Servidor de inferência NVIDIA Triton: Uma opção compatível com modelos de vários frameworks. Especialmente adequado para inferência na nuvem ou na borda, oferece recursos como execução simultânea de modelos e análise de modelos.
Tarefas suportadas#
A exportação para TensorRT é compatível com todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas no YOLO26, a única família que inclui essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportação de modelos YOLO26 para TensorRT#
Você pode aumentar a eficiência da execução e otimizar o desempenho convertendo modelos YOLO26 para o formato TensorRT.
Instalação#
Para instalar o pacote necessário, executa:
# Install the required package for YOLO26
pip install ultralyticsPara obter instruções detalhadas e práticas recomendadas sobre o processo de instalação, consulte nosso guia de instalação do YOLO26. Se encontrar dificuldades ao instalar os pacotes necessários para o YOLO26, consulte nosso guia de problemas comuns para encontrar soluções e dicas.
Uso#
Antes de consultares as instruções de utilização, não te esqueças de ver a variedade de modelos YOLO26 disponibilizados pelo Ultralytics. Isto vai ajudar-te a escolher o modelo mais adequado aos requisitos do teu projeto.
O formato TensorRT é compatível com os modos Export, Predict e Validate. A inferência e a validação exigem uma GPU NVIDIA. Exporte seu modelo e, em seguida, carregue o modelo exportado para executar inferências ou validar sua precisão.
from ultralytics import YOLO
# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta o modelo para o formato TensorRT
model.export(format="engine") # cria 'yolo26n.engine'from ultralytics import YOLO
# Carregar o modelo TensorRT exportado
model = YOLO("yolo26n.engine")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carregar o modelo TensorRT exportado
model = YOLO("yolo26n.engine")
# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportação#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'engine' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implantação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo. Pode ser um inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão da quantização: 16 (FP16) ou 8 (INT8/PTQ; requer calibração data/fraction); 32/não definido corresponde a FP32. Um checkpoint treinado com quantize=8 sempre é exportado como INT8 usando os intervalos que contém, sem calibração. Substitui os sinalizadores obsoletos half/int8. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade para processar imagens com dimensões variáveis. |
simplify | bool | True | Simplifica o grafo do modelo com onnxslim, podendo melhorar o desempenho e a compatibilidade. |
opset | int | None | Especifica a versão do opset ONNX para o grafo ONNX intermediário. Se não for definida, usa a versão mais recente compatível. |
workspace | float ou None | None | Define o tamanho máximo do espaço de trabalho, em GiB, para as otimizações do TensorRT, equilibrando o uso de memória e o desempenho; use None para que o TensorRT aloque memória automaticamente, até o máximo do dispositivo. |
nms | bool, opcional | None | Seleciona a saída bruta (None, padrão), NMS incorporado (True) ou a cabeça sem NMS (False). |
batch | int | 1 | Especifica 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. |
data | str | None | Caminho para o YAML do conjunto de dados, essencial para a quantização; a classificação aceita, em vez disso, um diretório de conjunto de dados ou o nome de um conjunto de dados integrado. Se omitido com quantize=8, a Ultralytics seleciona o conjunto de dados de calibração padrão para a tarefa do modelo; um checkpoint treinado com quantize=8 não precisa dele. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como proporção, número de imagens ou proporções/contagens [train, val, test]. Listas de dois itens deixam test completo, enquanto 0 o ignora. |
device | str | None | Especifica o dispositivo para a exportação: GPU (device=0), DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). |
Use uma GPU compatível com CUDA ao exportar para TensorRT.
O TensorRT 11.2.1 não é compatível com o JetPack, incluindo o Thor; use o ambiente de execução TensorRT 10.x compatível com a 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 são compatíveis com DLA.
Para mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Exportação para TensorRT com quantização INT8#
A exportação de modelos Ultralytics YOLO usando o TensorRT com precisão INT8 executa a quantização pós-treinamento (PTQ). O TensorRT usa calibração para PTQ, que mede a distribuição das ativações em cada tensor de ativação enquanto o modelo YOLO processa inferências com dados de entrada representativos; em seguida, usa essa distribuição para estimar os valores de escala de cada tensor. Cada tensor de ativação candidato à quantização tem uma escala associada, determinada por um processo de calibração. Um checkpoint ajustado com quantize=8 por meio do treinamento com reconhecimento de quantização já contém seus intervalos INT8; por isso, a exportação os utiliza e ignora a calibração.
O TensorRT 11 removeu a quantização implícita e a interface IInt8Calibrator. No TensorRT 11 e versões mais recentes, a Ultralytics realiza a quantização INT8 com a quantização explícita do NVIDIA ModelOpt, que insere nós Q/DQ no grafo ONNX antes de compilar um mecanismo fortemente tipado; o FP16 é aplicado 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 no primeiro uso. No TensorRT 7-10, é usado o calibrador legado descrito abaixo.
Ao processar redes com quantização implícita, o TensorRT usa INT8 de forma oportunista 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 entradas e saídas de dados, será atribuído a ela um kernel com precisão INT8; caso contrário, o TensorRT selecionará a precisão FP32 ou FP16 para o kernel, conforme a opção que resultar em menor tempo de execução para essa camada.
É essencial usar para a exportação com precisão INT8 o mesmo dispositivo que será usado na implantação do modelo TensorRT, pois os resultados da calibração podem variar entre dispositivos.
Configuração da exportação INT8#
Os argumentos fornecidos ao usar export para um modelo Ultralytics YOLO influenciam muito o desempenho do modelo exportado. Eles também precisam ser escolhidos de acordo com os recursos disponíveis no dispositivo; no entanto, os argumentos padrão devem funcionar na maioria das GPUs NVIDIA discretas Ampere (ou mais recentes). O algoritmo de calibração usado é "MINMAX_CALIBRATION" para exportações em GPU, enquanto as exportações DLA em NVIDIA Jetson usam "ENTROPY_CALIBRATION_2". Você pode ler mais detalhes sobre as opções disponíveis no Guia do desenvolvedor do TensorRT. Os testes da Ultralytics mostraram que "MINMAX_CALIBRATION" é a melhor opção para exportações em 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.-
Ajuste o valor de
workspacede acordo com suas necessidades de calibração e os recursos disponíveis. Embora umworkspacemaior possa aumentar o tempo de calibração, ele permite que o TensorRT explore uma gama mais ampla de estratégias de otimização, o que pode melhorar o desempenho e a precisão do modelo. Por outro lado, umworkspacemenor pode reduzir o tempo de calibração, mas limitar as estratégias de otimização, afetando a qualidade do modelo quantizado. -
O padrão é
workspace=None, que permite ao TensorRT alocar memória automaticamente. Ao configurar esse valor manualmente, talvez seja necessário aumentá-lo se a calibração falhar (for encerrada sem aviso). -
Durante a exportação, o TensorRT informará
UNSUPPORTED_STATEse o valor deworkspacefor maior que a memória disponível no dispositivo; nesse caso, o valor deworkspacedeve ser reduzido ou definido comoNone. -
Se
workspaceestiver definido com o valor máximo e a calibração falhar ou travar, considere usarNonepara alocação automática ou reduzir os valores deimgszebatchpara diminuir os requisitos de memória. -
Lembre-se de que a calibração para INT8 é específica de cada dispositivo. Usar uma GPU de "alto desempenho" emprestada para a calibração pode resultar em desempenho ruim quando a inferência for executada em outro dispositivo.
-
-
batch: O tamanho máximo do lote usado na inferência. Comdynamic=True, lotes menores podem ser usados durante a inferência, mas a inferência não aceitará lotes maiores que o valor especificado.
O uso de lotes pequenos pode levar a um escalonamento impreciso durante a calibração INT8, pois o processo se ajusta com base nos dados que recebe. Lotes pequenos podem não abranger toda a faixa de valores, causando problemas na calibração final. Usar um tamanho de lote maior ajuda a garantir resultados de calibração mais representativos.
Com base em experimentos, a NVIDIA recomenda usar pelo menos 500 imagens de calibração representativas dos dados do seu modelo para a calibração da quantização INT8. Essa é uma orientação, não um requisito rígido, e você precisará experimentar para descobrir o que funciona melhor para o seu conjunto de dados. Como os dados de calibração são necessários para a calibração INT8 com o TensorRT, use o argumento data ao exportar para TensorRT com quantize=8 um checkpoint que não tenha sido treinado com quantize=8 (quantização pós-treinamento) e use data="my_dataset.yaml", que utilizará as imagens de validação para a calibração. Um checkpoint treinado com quantize=8 ignora a calibração; por isso, omita data nesse caso. Se nenhum valor for passado para data ao exportar para TensorRT com quantização INT8, será usado por padrão um dos conjuntos de dados de exemplo "pequenos", com base na tarefa do modelo, em vez de gerar um erro.
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)!
)
# Carregar o modelo TensorRT INT8 exportado
model = YOLO("yolo26n.engine", task="detect")
# Executar inferência
result = model.predict("https://ultralytics.com/images/bus.jpg")- Exporta com eixos dinâmicos, aceitando tamanhos de entrada de 32 pixels até o dobro do valor de exportação de
imgsz;dynamicpermanece comoFalse, a menos que seja definido explicitamente. Consulte os argumentos de exportação para mais informações. - Define o tamanho máximo do lote como 8 para o modelo exportado e a calibração INT8.
- Aloca 4 GiB de memória em vez de usar o dispositivo inteiro durante o processo de conversão.
- Usa o conjunto de dados COCO para a calibração, especificamente as imagens usadas para validação (5.000 no total).
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 downloads mais rápidos, menos espaço de armazenamento necessário e menor uso de memória ao implantar um modelo.
-
Menor consumo de energia: As operações de precisão reduzida dos modelos YOLO exportados em INT8 podem consumir menos energia do que os modelos FP32, especialmente em dispositivos alimentados por bateria.
-
Maior velocidade de inferência: O TensorRT otimiza o modelo para o hardware de destino, o que pode resultar em inferências mais rápidas em GPUs, dispositivos incorporados e aceleradores.
Observação sobre a velocidade 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 maiores que o normal. Isso também pode ocorrer ao alterar imgsz durante a inferência, especialmente quando imgsz não é igual ao especificado durante a exportação (o perfil "ideal" do TensorRT está definido como imgsz na exportação).
Desvantagens de usar YOLO com TensorRT INT8#
-
Redução das métricas de avaliação: O uso de menor precisão significa que
mAP,Precision,Recallou qualquer outra métrica usada para avaliar o desempenho do modelo provavelmente terá resultados um pouco piores. As camadas Sigmoid são mantidas em maior precisão para preservar a calibração das pontuações, mas o INT8 ainda pode alterar os valores de confiança. Por isso, selecione o limiar operacional com base na própria curva F1 do modelo INT8. Consulte a seção de resultados de desempenho para comparar as diferenças emmAP50emAP50-95ao exportar com INT8 em uma pequena amostra de vários dispositivos. -
Aumento do tempo de desenvolvimento: Encontrar as configurações "ideais" para a calibração INT8 de um conjunto de dados e dispositivo pode exigir muitos testes.
-
Dependência de hardware: A calibração e os ganhos de desempenho podem depender muito do hardware, e os pesos do modelo são menos transferíveis.
Desempenho da exportação de Ultralytics YOLO para TensorRT#
NVIDIA A100#
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 no COCO, que incluem 80 classes pré-treinadas.
Tempos de inferência mostrados para mean, min (mais rápido) e max (mais lento) em cada teste, usando pesos pré-treinados yolov8n.engine
| Precisão | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prever | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prever | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prever | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
GPUs para consumidores#
Testado com Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6
Tempos de inferência mostrados para mean, min (mais rápido) e max (mais lento) em cada teste, usando pesos pré-treinados yolov8n.engine
| Precisão | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prever | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prever | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prever | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Dispositivos incorporados#
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
Tempos de inferência mostrados para mean, min (mais rápido) e max (mais lento) em cada teste, usando pesos pré-treinados yolov8n.engine
| Precisão | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (pixels) |
|---|---|---|---|---|---|---|---|
| FP32 | Prever | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prever | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prever | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Consulte nosso guia de início rápido sobre NVIDIA Jetson com Ultralytics YOLO para saber mais sobre instalação e configuração.
Consulte nosso guia de início rápido sobre NVIDIA DGX Spark com Ultralytics YOLO para saber mais sobre instalação e configuração.
Métodos de avaliação#
Expanda as seções abaixo para saber como esses modelos foram exportados e testados.
Configurações de exportação
Consulte o modo de exportação para ver 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 com calibração `data` (ou seja, COCO, ImageNet ou DOTAv1 para a tarefa apropriada do modelo)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)Loop de previsão
Consulte o modo de previsão para obter mais informações.
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 da mesma imagem
verbose=False,
device="cuda",
)Configuração de validação
Consulte 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 ou DOTAv1 para a tarefa apropriada do modelo
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)Implantação de modelos YOLO26 exportados para TensorRT#
Depois de exportar com sucesso seus modelos Ultralytics YOLO26 para o formato TensorRT, você já pode implantá-los. Para instruções detalhadas sobre a implantação dos modelos TensorRT em diferentes ambientes, consulte os seguintes recursos:
-
Implantar Ultralytics com um servidor Triton: nosso guia sobre como usar o servidor Triton Inference da NVIDIA (anteriormente TensorRT Inference), especificamente com modelos Ultralytics YOLO.
-
Implantação de redes neurais profundas com NVIDIA TensorRT: este artigo explica como usar o NVIDIA TensorRT para implantar redes neurais profundas com eficiência em plataformas de implantação baseadas em GPU.
-
IA de ponta a ponta para PCs baseados em NVIDIA: implantação com NVIDIA TensorRT: esta publicação do blog explica como usar o NVIDIA TensorRT para otimizar e implantar modelos de IA em PCs baseados em NVIDIA.
-
Repositório do GitHub do NVIDIA TensorRT: este é o repositório oficial do GitHub, que contém o código-fonte e a documentação do NVIDIA TensorRT.
Resumo#
Neste guia, mostramos como converter modelos Ultralytics YOLO26 para o formato de modelo TensorRT da NVIDIA. Essa etapa de conversão é essencial para aumentar a eficiência e a velocidade dos modelos YOLO26, tornando-os mais eficazes e adequados a diversos ambientes de implantação.
Para obter mais informações sobre como usar o TensorRT, consulte a documentação oficial do TensorRT.
Se quiser conhecer outras integrações do Ultralytics YOLO26, nossa página do guia de integrações oferece uma ampla seleção de recursos informativos e análises.
Perguntas frequentes#
Para converter seus modelos Ultralytics YOLO26 para o formato TensorRT e otimizar a inferência em GPUs NVIDIA, siga estas etapas:
-
Instale o pacote necessário:
pip install ultralytics -
Exporte seu modelo YOLO26:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # cria 'yolo26n.engine' # Executar inferência model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Para saber mais, consulte o guia de instalação do YOLO26 e a documentação de exportação.
-
O uso do TensorRT para otimizar modelos YOLO26 oferece vários benefícios:
- Inferência mais rápida: o TensorRT otimiza as camadas do modelo e usa 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 gerencia a memória dos tensores dinamicamente, reduzindo a sobrecarga e melhorando a utilização da memória da GPU.
- Fusão de camadas: combina várias camadas em operações únicas, 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 saber mais, consulte a documentação oficial do TensorRT da NVIDIA e nossa visão geral detalhada do TensorRT.
Sim, você pode exportar modelos YOLO26 usando TensorRT com quantização INT8. Esse processo envolve quantização pós-treinamento (PTQ) e calibração, a menos que o checkpoint tenha sido treinado com
quantize=8(treinamento com reconhecimento de quantização); nesse caso, os intervalos incluídos no checkpoint são exportados sem calibração:-
Exporte com INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
Execute a inferência:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Para obter mais detalhes, consulte a seção sobre como exportar para TensorRT com quantização INT8.
-
Você pode implantar modelos YOLO26 TensorRT em um servidor NVIDIA Triton Inference usando os seguintes recursos:
- Implantar Ultralytics YOLO26 com o servidor Triton: instruções passo a passo para configurar e usar o Triton Inference Server.
- Implantação de redes neurais profundas com NVIDIA TensorRT: guia da NVIDIA para implantar modelos de aprendizado profundo com TensorRT, com opções e configurações detalhadas de implantação.
Estes guias ajudarão você a integrar modelos YOLO26 com eficiência em diversos ambientes de implantação.
As melhorias de desempenho com TensorRT podem variar conforme o modelo e o hardware usados. Veja abaixo benchmarks típicos medidos com YOLOv8n, que ilustram os ganhos relativos de cada precisão:
-
NVIDIA A100:
- Inferência FP32: ~0.52 ms / imagem
- Inferência FP16: ~0.34 ms / imagem
- Inferência INT8: ~0.28 ms / imagem
- Pequena redução no mAP com precisão INT8, mas aumento significativo na velocidade.
-
GPUs para consumidores (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
Você encontra benchmarks detalhados de desempenho para diferentes configurações de hardware na seção de desempenho.
Para uma análise mais abrangente do desempenho do TensorRT, consulte a documentação da Ultralytics e nossos relatórios de análise de desempenho.
-