Exportação TensorRT para Modelos YOLO26#
A implantação de modelos de computer vision em ambientes de alto desempenho pode exigir um formato que maximize a velocidade e a eficiência. Isso é especialmente verdade quando estás a implantar o teu modelo em GPUs NVIDIA.
Ao usares 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 passos 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 deep learning.
TensorRT#
TensorRT, desenvolvido pela NVIDIA, é um kit de desenvolvimento de software (SDK) avançado concebido para inferência de deep learning de alta velocidade. É ideal para aplicações em tempo real, como object detection.
Este kit de ferramentas otimiza modelos de deep learning para GPUs NVIDIA e resulta em operações mais rápidas e eficientes. Os modelos TensorRT passam por otimização 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 kernel. Converter modelos de deep learning para o formato TensorRT permite que os desenvolvedores realizem plenamente o potencial das GPUs NVIDIA.
O TensorRT é conhecido pela sua compatibilidade com vários formatos de modelos, incluindo TensorFlow, PyTorch e ONNX, oferecendo aos programadores uma solução flexível para integrar e otimizar modelos de diferentes frameworks. Esta versatilidade permite uma model deployment eficiente em diversos ambientes de hardware e software.
O TensorRT perfila e ajusta um motor na sua GPU de compilação. Compila para a arquitetura da GPU de implantação e corresponde ao tempo de execução TensorRT/CUDA; não trates um ficheiro .engine como um formato de modelo portável. Para implantação na edge, a Ultralytics Platform oferece oito seleções de destino Jetson, com o estado físico de compilação e validação documentado para cada uma, ou podes exportar localmente no dispositivo de destino.
Principais Recursos dos Modelos TensorRT#
Os modelos TensorRT oferecem uma gama de recursos importantes que contribuem para sua eficiência e eficácia na inferência de deep learning de alta velocidade:
-
Calibração de Precisão: O TensorRT oferece suporte à calibração de precisão, permitindo que os modelos sejam ajustados para requisitos de precisão específicos. Isso inclui suporte para formatos de precisão reduzida como INT8 e FP16, o que pode aumentar ainda mais a velocidade de inferência enquanto mantém níveis de precisão aceitáveis.
-
Layer Fusion: O processo de otimização do TensorRT inclui a fusão de camadas, onde múltiplas camadas de uma neural network são combinadas numa única operação. Isto reduz a sobrecarga computacional e melhora a velocidade de inferência ao minimizar o acesso à memória e a computação.
-
Gerenciamento Dinâmico de Memória de Tensores: O TensorRT gerencia de forma eficiente o uso de memória de tensores durante a inferência, reduzindo a sobrecarga de memória e otimizando a alocação. Isso resulta em uma utilização mais eficiente da memória da GPU.
-
Ajuste Automático de Kernel: O TensorRT aplica ajuste automático de kernel para selecionar o kernel de GPU mais otimizado para cada camada do modelo. Essa abordagem adaptativa garante que o modelo aproveite ao máximo o poder computacional da GPU.
Opções de Implantação no TensorRT#
Antes de analisarmos o código para exportar modelos YOLO26 para o formato TensorRT, vamos entender onde os modelos TensorRT são normalmente usados.
O TensorRT oferece várias opções de implantação, e cada uma equilibra facilidade de integração, otimização de desempenho e flexibilidade de maneiras diferentes:
- Implantação no TensorFlow: Este método integra o TensorRT no TensorFlow, permitindo que modelos otimizados sejam executados num ambiente TensorFlow familiar. É útil para modelos com uma mistura de camadas suportadas e não suportadas, uma vez que o TF-TRT consegue geri-las de forma eficiente.
-
API de Runtime do TensorRT Independente: Oferece controle granular, ideal para aplicações onde o desempenho é crítico. É mais complexo, mas permite a implementação personalizada de operadores não suportados.
-
NVIDIA Triton Inference Server: Uma opção que suporta modelos de vários frameworks. Particularmente adequado para inferência em nuvem ou edge, fornece recursos como execução de modelo concorrente e análise de modelo.
Tarefas Suportadas#
A exportação para TensorRT suporta todas as sete tarefas do Ultralytics. Segmentação semântica e estimativa de profundidade estão disponíveis apenas com o YOLO26, a única família que possui essas camadas.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportando Modelos YOLO26 para TensorRT#
Você pode melhorar 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, execute:
# Install the required package for YOLO26
pip install ultralyticsPara instruções detalhadas e melhores práticas relacionadas com o processo de instalação, consulta o nosso YOLO26 Installation guide. Ao instalar os pacotes necessários para o YOLO26, se encontrares alguma dificuldade, consulta o nosso Common Issues guide para obter soluções e dicas.
Uso#
Antes de mergulhares nas instruções de uso, certifica-te de explorar a gama de YOLO26 models offered by Ultralytics. Isto ajudar-te-á a escolher o modelo mais adequado para os requisitos do teu projeto.
O formato TensorRT suporta os modos Export, Predict e Validate. 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.
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'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")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#
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'engine' | Formato de destino para o modelo exportado, definindo a compatibilidade com vários ambientes de implementação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão de quantização: 16 (FP16) ou 8 (INT8/PTQ; necessita de calibração data/fraction); 32/não definido é FP32. Substitui as flags obsoletas half/int8. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade no manuseio de dimensões variáveis de imagem. |
simplify | bool | True | Simplifica o grafo do modelo com onnxslim, melhorando potencialmente 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, utiliza a versão mais recente suportada. |
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; usa None para alocação automática pelo TensorRT até ao máximo do dispositivo. |
nms | bool | False | Adiciona a Supressão Não-Máxima (NMS), essencial para um pós-processamento de detecção preciso e eficiente. |
batch | int | 1 | Especifica o tamanho de inferência em lote do modelo de exportação ou o número máximo de imagens que o modelo exportado processará concorrentemente no modo predict. |
data | str | None | Caminho para o YAML do dataset, essencial para a quantização; a classificação, por sua vez, requer um diretório de dataset ou um nome de dataset incorporado. Se omitido com quantize=8, o Ultralytics seleciona o dataset de calibração padrão para a tarefa do modelo. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como uma proporção, contagem de imagens ou proporções/contagens de [train, val, test]. Listas de dois itens deixam test cheio, enquanto 0 o pula. |
device | str | None | Especifica o dispositivo para exportação: GPU (device=0), DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). |
Certifique-se de usar uma GPU com suporte a CUDA ao exportar para TensorRT.
O TensorRT 11.0 não suporta DLA; usa o TensorRT 10.x para device=dla:0 ou device=dla:1, ou exporta um motor GPU do TensorRT 11.0.
Para mais detalhes sobre o processo de exportação, visita a página de documentação do Ultralytics sobre exportação.
Exportando TensorRT com Quantização INT8#
A exportação de modelos Ultralytics YOLO utilizando TensorRT com precision INT8 executa a quantização pós-treino (PTQ). O TensorRT utiliza calibração para PTQ, que mede a distribuição de ativações dentro de cada tensor de ativação à medida que o modelo YOLO processa a inferência em dados de entrada representativos, e depois usa essa distribuição para estimar os valores de escala para cada tensor. Cada tensor de ativação que é candidato a quantização tem uma escala associada que é deduzida por um processo de calibração.
O TensorRT 11 removeu a quantização implícita e a interface IInt8Calibrator. No TensorRT 11 e mais recente, a Ultralytics realiza a quantização INT8 com a quantização explícita NVIDIA ModelOpt, que insere nós Q/DQ no grafo ONNX antes de construir um motor fortemente tipado, e o FP16 é aplicado com a conversão de precisão mista ModelOpt AutoCast. Os argumentos quantize=8, quantize=16 e data funcionam da mesma forma; o ModelOpt é instalado automaticamente na primeira utilização. No TensorRT 7-10, utiliza-se em alternativa o calibrador legado descrito abaixo.
Ao processar redes quantizadas implicitamente, o TensorRT usa INT8 de forma oportunista para otimizar o tempo de execução da camada. Se uma camada é executada mais rápido em INT8 e possui escalas de quantização atribuídas em suas entradas e saídas de dados, então um kernel com precisão INT8 é atribuído a essa camada; caso contrário, o TensorRT seleciona uma precisão FP32 ou FP16 para o kernel, com base no que resultar em um tempo de execução mais rápido para aquela camada.
É crítico garantir que o mesmo dispositivo que usará os pesos do modelo TensorRT para implantação seja usado para a exportação com precisão INT8, já que os resultados da calibração podem variar entre dispositivos.
Configurando a Exportação INT8#
Os argumentos fornecidos ao usar export para um modelo Ultralytics YOLO vão influenciar grandemente o desempenho do modelo exportado. Também precisarão de ser selecionados com base nos recursos do dispositivo disponíveis; no entanto, os argumentos predefinidos devem funcionar para a maioria das Ampere (ou mais recentes) GPUs dedicadas da NVIDIA. O algoritmo de calibração utilizado é "MINMAX_CALIBRATION" para exportações em GPU, enquanto as exportações em DLA na NVIDIA Jetson usam "ENTROPY_CALIBRATION_2". Podes ler mais detalhes sobre as opções disponíveis no Guia de Desenvolvimento do TensorRT. Os testes da Ultralytics descobriram que "MINMAX_CALIBRATION" é a melhor escolha 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.-
Ajusta o valor de
workspacede acordo com as tuas necessidades de calibração e a disponibilidade de recursos. Embora umworkspacemaior possa aumentar o tempo de calibração, permite que o TensorRT explore uma gama mais ampla de táticas de otimização, melhorando potencialmente o desempenho e a accuracy do modelo. Inversamente, umworkspacemenor pode reduzir o tempo de calibração, mas pode limitar as estratégias de otimização, afetando a qualidade do modelo quantizado. -
O valor predefinido é
workspace=None, que permitirá ao TensorRT alocar memória automaticamente; ao configurar manualmente, este valor poderá ter de ser aumentado se a calibração falhar (terminar sem aviso). -
O TensorRT reportará
UNSUPPORTED_STATEdurante a exportação se o valor paraworkspacefor maior do que a memória disponível para o dispositivo, o que significa que o valor paraworkspacedeve ser reduzido ou definido comoNone. -
Se
workspaceestiver definido para o valor máximo e a calibração falhar/terminar inesperadamente, considera usarNonepara alocação automática ou reduzir os valores paraimgszebatchpara diminuir os requisitos de memória. -
Lembre-se: a calibração para INT8 é específica para cada dispositivo; pegar emprestada uma GPU "high-end" para calibração pode resultar em baixo desempenho quando a inferência for executada em outro dispositivo.
-
-
batch: O tamanho máximo do lote (batch-size) que será usado para inferência. Durante a inferência, podem ser usados lotes menores, mas a inferência não aceitará lotes maiores do que o especificado.
O uso de lotes pequenos pode levar a um dimensionamento impreciso durante a calibração INT8. Isto acontece porque o processo se ajusta com base nos dados que observa. Lotes pequenos podem não capturar toda a gama de valores, gerando problemas na calibração final. Usar um batch size maior ajuda a garantir resultados de calibração mais representativos.
A experimentação por parte da 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 rígido, e vais precisar de experimentar o que é necessário para ter um bom desempenho com o teu conjunto de dados. Uma vez que os dados de calibração são necessários para a calibração INT8 com o TensorRT, certifica-te de usar o argumento data quando quantize=8 para o TensorRT e usa data="my_dataset.yaml", que utilizará as imagens de validation para calibrar. Quando nenhum valor é passado para data na exportação para o TensorRT com quantização INT8, a predefinição será usar um dos conjuntos de dados de exemplo "pequenos" com base na tarefa do modelo em vez de lançar 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)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Exportações com eixos dinâmicos; isto será ativado por predefinição ao exportar com
quantize=8, mesmo quando não for explicitamente definido. Consulta os export arguments para obter informações adicionais. - Define o tamanho máximo de lote como 8 para o modelo exportado e calibração INT8.
- Aloca 4 GiB de memória em vez de alocar todo o dispositivo para o processo de conversão.
- Usa o COCO dataset para calibração, especificamente as imagens usadas para validation (5.000 no total).
Cache de Calibração
O TensorRT gerará um .cache de calibração que pode ser reutilizado para acelerar a exportação de futuros pesos de modelos usando os mesmos dados, mas isto pode resultar numa fraca calibração quando os dados forem muito diferentes ou se 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 de modelo reduzido: A quantização de FP32 para INT8 pode reduzir o tamanho do modelo em 4x (em disco ou na memória), levando a tempos de download mais rápidos, menores requisitos de armazenamento e menor pegada de memória ao implantar um modelo.
-
Menor consumo de energia: Operações de precisão reduzida para modelos YOLO exportados em INT8 podem consumir menos energia em comparação com modelos FP32, especialmente para dispositivos alimentados por bateria.
-
Velocidades de inferência aprimoradas: O TensorRT otimiza o modelo para o hardware alvo, levando potencialmente a velocidades de inferência mais rápidas em GPUs, dispositivos embarcados e aceleradores.
Nota sobre Velocidades de Inferência
Podes esperar 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 aos normais. Isto também pode acontecer ao alterar imgsz durante a inferência, especialmente quando imgsz não é o mesmo que foi especificado durante a exportação (o imgsz de exportação é definido como o perfil "ideal" do TensorRT).
Desvantagens de usar YOLO com TensorRT INT8#
-
Diminuições nas métricas de avaliação: Usar uma precisão inferior significa que
mAP,Precision,Recallou qualquer outra métrica usada para avaliar o desempenho do modelo será provavelmente um pouco pior. As camadas sigmóides são mantidas a uma maior precisão para preservar a calibração de pontuação, mas o INT8 ainda pode alterar os valores de confiança, por isso seleciona o limiar de operação a partir da curva F1 do próprio modelo INT8. Consulta a seção de resultados de desempenho para comparar as diferenças emmAP50emAP50-95ao exportar com INT8 numa pequena amostra de vários dispositivos. -
Aumento nos tempos de desenvolvimento: Encontrar as configurações "ideais" para calibração INT8 para o conjunto de dados e dispositivo pode exigir uma quantidade significativa de testes.
-
Dependência de hardware: A calibração e os ganhos de desempenho podem ser altamente dependentes do hardware, e os pesos do modelo são menos transferíveis.
Desempenho da Exportação TensorRT do Ultralytics YOLO#
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 Detecção para exemplos de uso com esses 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) para cada teste utilizando 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 de Consumo#
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) para cada teste utilizando 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 Embarcados#
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) para cada teste utilizando 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 |
Consulta o nosso guia de início rápido sobre a NVIDIA Jetson com o Ultralytics YOLO para saberes mais sobre a configuração e os parâmetros.
Consulta o nosso guia de início rápido sobre a NVIDIA DGX Spark com o Ultralytics YOLO para saberes mais sobre a configuração e os parâmetros.
Métodos de avaliação#
Expanda as seções abaixo para informações sobre como esses 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 de 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"
)Loop de previsão
Consulta o modo de previsão para 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 de validação
Consulta o modo val para saberes mais sobre os argumentos de configuração de 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",
)Implantando modelos YOLO26 TensorRT exportados#
Após exportar com sucesso seus modelos Ultralytics YOLO26 para o formato TensorRT, você está pronto para implantá-los. Para instruções detalhadas sobre a implantação de seus modelos TensorRT em vários cenários, dê uma olhada nos seguintes recursos:
-
Implantar o Ultralytics com um Servidor Triton: O nosso guia sobre como utilizar o Servidor Triton Inference da NVIDIA (antigo TensorRT Inference) especificamente para modelos Ultralytics YOLO.
-
Implantação de Redes Neuronais Profundas com NVIDIA TensorRT: Este artigo explica como utilizar o NVIDIA TensorRT para implantar redes neuronais profundas de forma eficiente 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 no blog explica a utilização do NVIDIA TensorRT para otimizar e implantar modelos de IA em PCs baseados em NVIDIA.
-
Repositório GitHub para o NVIDIA TensorRT:: Este é o repositório oficial do GitHub que contém o código-fonte e a documentação para o NVIDIA TensorRT.
Resumo#
Neste guia, focamos na conversão de modelos Ultralytics YOLO26 para o formato de modelo TensorRT da NVIDIA. Esta etapa de conversão é crucial para melhorar a eficiência e a velocidade dos modelos YOLO26, tornando-os mais eficazes e adequados para diversos ambientes de implantação.
Para mais informações sobre detalhes de utilização, consulta a documentação oficial do TensorRT.
Se tens curiosidade sobre outras integrações do Ultralytics YOLO26, a nossa página do guia de integração disponibiliza uma seleção abrangente de recursos e informações úteis.
FAQ#
Para converter os teus modelos Ultralytics YOLO26 para o formato TensorRT para inferência otimizada em GPU NVIDIA, segue estes passos:
-
Instala o pacote necessário:
pip install ultralytics -
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 mais detalhes, visita o Guia de instalação do YOLO26 e a documentação de exportação.
-
Usar TensorRT para otimizar modelos YOLO26 oferece vários benefícios:
- Velocidade de 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 gere a memória de 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.
- Auto-ajuste de Kernel: Seleciona automaticamente kernels de GPU otimizados para cada camada do modelo, garantindo o desempenho máximo.
Para saberes mais, explora a documentação oficial do TensorRT da NVIDIA e a nossa visão geral aprofundada do TensorRT.
Sim, podes exportar modelos YOLO26 usando TensorRT com quantização INT8. Este processo envolve quantização pós-treino (PTQ) e calibração:
-
Exportar com INT8:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
Executar inferência:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
Para mais detalhes, consulta a seção de exportação do TensorRT com quantização INT8.
-
A implementação de modelos YOLO26 TensorRT num NVIDIA Triton Inference Server pode ser feita usando os seguintes recursos:
- Implantar o Ultralytics YOLO26 com o Servidor Triton: Orientação passo a passo sobre a configuração e utilização do Triton Inference Server.
- Implantação de Redes Neuronais Profundas com NVIDIA TensorRT: O guia da NVIDIA sobre a implantação de modelos de deep learning com o TensorRT para opções e configurações detalhadas de implantação.
Estes guias ajudar-te-ão a integrar modelos YOLO26 de forma eficiente em vários ambientes de implementação.
As melhorias de desempenho com TensorRT podem variar com base no hardware usado. Aqui estão alguns benchmarks 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 no mAP com precisão INT8, mas melhoria significativa na velocidade.
-
GPUs de consumidor (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
Benchmarks de desempenho detalhados para diferentes configurações de hardware podem ser encontrados na seção de desempenho.
Para obter mais informações abrangentes sobre o desempenho do TensorRT, consulta a documentação do Ultralytics e os nossos relatórios de análise de desempenho.
-