TensorRT Export for YOLO11 Models
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. Isto é especialmente verdadeiro quando está a implementar o seu modelo em NVIDIA GPUs.
By using the TensorRT export format, you can enhance your Ultralytics YOLO11 models for swift and efficient inference on NVIDIA hardware. This guide will give you easy-to-follow steps for the conversion process and help you make the most of NVIDIA's advanced technology in your deep learning projects.
TensorRT
TensorRT, desenvolvido por NVIDIA, é um kit de desenvolvimento de software (SDK) avançado concebido para inferência de aprendizagem profunda a alta velocidade. É adequado para aplicações em tempo real, como a deteção de objectos.
Este kit de ferramentas optimiza os modelos de aprendizagem profunda para NVIDIA GPUs e resulta em operações mais rápidas e eficientes. Os modelos TensorRT são submetidos à otimização TensorRT , que inclui técnicas como a fusão de camadas, calibração de precisão (INT8 e FP16), gestão dinâmica da memória tensor e afinação automática do kernel. A conversão de modelos de aprendizagem profunda para o formato TensorRT permite aos programadores tirar o máximo partido do potencial das NVIDIA GPUs.
TensorRT é conhecido por sua compatibilidade com vários formatos de modelo, incluindo TensorFlow, PyTorche ONNX, proporcionando aos programadores uma solução flexível para integrar e otimizar modelos de diferentes estruturas. Essa versatilidade permite a implantação eficiente de modelos em diversos ambientes de hardware e software.
Principais caraterísticas dos modelos TensorRT
TensorRT oferecem uma série de caraterísticas-chave que contribuem para a sua eficiência e eficácia na inferência de aprendizagem profunda a alta velocidade:
-
Calibração de precisão: TensorRT suporta calibração de precisão, permitindo que os modelos sejam ajustados para requisitos de precisão específicos. 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, em que várias camadas de uma rede neuronal são combinadas numa única operação. Isso reduz a sobrecarga computacional e melhora a velocidade de inferência, minimizando o acesso à memória e a computação.
-
Gestão dinâmica da memória Tensor : TensorRT gere eficazmente a utilização da memória tensor durante a inferência, reduzindo a sobrecarga de memória e optimizando a atribuição de memória. Isto resulta numa utilização mais eficiente da memória GPU .
-
Automatic Kernel Tuning: TensorRT applies automatic kernel tuning to select the most optimized GPU kernel for each layer of the model. This adaptive approach ensures that the model takes full advantage of the GPUs computational power.
Opções de implantação em TensorRT
Before we look at the code for exporting YOLO11 models to the TensorRT format, let's understand where TensorRT models are normally used.
TensorRT oferece várias opções de implementação, e cada opção equilibra a facilidade de integração, a otimização do desempenho e a flexibilidade de forma diferente:
- Implementando dentro de TensorFlow: Este método integra TensorRT em TensorFlow, permitindo que modelos otimizados sejam executados em um ambiente familiar TensorFlow . É útil para modelos com uma mistura de camadas suportadas e não suportadas, pois TF-TRT pode lidar com elas de forma eficiente.
-
Autónomo TensorRT API de tempo de execução: Oferece controlo granular, ideal para aplicações de desempenho crítico. É mais complexa, mas permite a implementação personalizada de operadores não suportados.
-
NVIDIA Triton Servidor de inferência: Uma opção que suporta modelos de várias estruturas. Particularmente adequado para inferência na nuvem ou na borda, ele fornece recursos como execução simultânea de modelos e análise de modelos.
Exporting YOLO11 Models to TensorRT
You can improve execution efficiency and optimize performance by converting YOLO11 models to TensorRT format.
Instalação
Para instalar o pacote necessário, execute:
Para obter instruções detalhadas e melhores práticas relacionadas com o processo de instalação, consulte o nosso guia de instalaçãoYOLO11 . Ao instalar os pacotes necessários para YOLO11, se encontrar alguma dificuldade, consulte o nosso guia de Problemas comuns para obter soluções e dicas.
Utilização
Antes de se debruçar sobre as instruções de utilização, não deixe de consultar a gama de modelosYOLO11 propostos por Ultralytics. Isto ajudá-lo-á a escolher o modelo mais adequado às necessidades do seu projeto.
Utilização
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo11n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
Para mais informações sobre o processo de exportação, visite a página de documentaçãoUltralytics sobre exportação.
Exportação de TensorRT com quantização INT8
A exportação de modelos Ultralytics YOLO utilizando TensorRT com precisão INT8 executa a quantização pós-treino (PTQ). TensorRT utiliza a calibração para PTQ, que mede a distribuição de activações dentro de cada ativação tensor à medida que o modelo YOLO processa a inferência em dados de entrada representativos e, em seguida, utiliza essa distribuição para estimar valores de escala para cada tensor. Cada ativação tensor candidata a quantização tem uma escala associada que é deduzida por um processo de calibração.
Ao processar redes implicitamente quantizadas, o TensorRT utiliza a INT8 de forma oportuna para otimizar o tempo de execução das camadas. Se uma camada funcionar mais rapidamente em INT8 e tiver atribuído escalas de quantização às suas entradas e saídas de dados, é-lhe atribuído um kernel com precisão INT8; caso contrário, TensorRT seleciona uma precisão de FP32 ou FP16 para o kernel com base no que resultar num tempo de execução mais rápido para essa camada.
Dica
É fundamental garantir que o mesmo dispositivo que irá utilizar os pesos do modelo TensorRT para a implantação seja utilizado para exportar com precisão INT8, uma vez que os resultados da calibração podem variar entre dispositivos.
Configuração da exportação INT8
Os argumentos fornecidos quando se utiliza exportação para um modelo Ultralytics YOLO muito influenciam o desempenho do modelo exportado. Também terão de ser selecionados com base nos recursos disponíveis do dispositivo, mas os argumentos predefinidos deve funcionam para a maioria Ampere (ou mais recente) NVIDIA GPUs discretas. O algoritmo de calibração utilizado é "ENTROPY_CALIBRATION_2"
e pode ler mais pormenores sobre as opções disponíveis no TensorRT Developer Guide. Ultralytics testes revelaram que "ENTROPY_CALIBRATION_2"
foi a melhor escolha e as exportações estão fixadas na utilização deste algoritmo.
-
workspace
: Controla o tamanho (em GiB) da atribuição de memória do dispositivo durante a conversão dos pesos do modelo.-
Ajustar o
workspace
de acordo com as suas necessidades de calibração e disponibilidade de recursos. Embora um valor maiorworkspace
pode aumentar o tempo de calibração, permite ao TensorRT explorar uma gama mais vasta de tácticas de otimização, melhorando potencialmente o desempenho do modelo e exatidão. Inversamente, um menorworkspace
pode reduzir o tempo de calibração, mas pode limitar as estratégias de otimização, afectando a qualidade do modelo quantizado. -
A predefinição é
workspace=None
que permitirá que o TensorRT atribua automaticamente a memória; ao configurar manualmente, este valor pode ter de ser aumentado se a calibração falhar (sair sem aviso). -
TensorRT comunicará
UNSUPPORTED_STATE
durante a exportação se o valor deworkspace
é maior do que a memória disponível no dispositivo, o que significa que o valor paraworkspace
deve ser reduzido ou fixado emNone
. -
Se
workspace
estiver definido para o valor máximo e a calibração falhar, considere a utilização deNone
para atribuição automática ou reduzindo os valores deimgsz
ebatch
para reduzir os requisitos de memória. -
Lembre-se de que a calibração da INT8 é específica de cada dispositivo, pelo que a utilização de um dispositivo "topo de gama" GPU para calibração pode resultar num desempenho deficiente quando a inferência é executada noutro dispositivo.
-
-
batch
: O tamanho máximo do lote que será utilizado para a inferência. Durante a inferência, podem ser utilizados lotes mais pequenos, mas a inferência não aceitará lotes maiores do que o especificado.
Nota
Durante a calibração, duas vezes o batch
O tamanho fornecido será utilizado. A utilização de pequenos lotes pode levar a um escalonamento impreciso durante a calibragem. Isto deve-se ao facto de o processo se ajustar com base nos dados que vê. Os lotes pequenos podem não captar a gama completa de valores, o que pode causar problemas na calibragem final. batch
é duplicado automaticamente. Se não houver tamanho do lote é especificado batch=1
, a calibração será efectuada a batch=1 * 2
para reduzir os erros de escala de calibração.
As experiências efectuadas por NVIDIA levaram-nos a recomendar a utilização de, pelo menos, 500 imagens de calibração representativas dos dados do seu modelo, com calibração de quantização INT8. Esta é uma diretriz e não uma duro requisito, e terá de experimentar o que é necessário para obter um bom desempenho para o seu conjunto de dados. Uma vez que os dados de calibração são necessários para a calibração INT8 com TensorRT, certifique-se de que utiliza o data
argumento quando int8=True
para TensorRT e utilizar data="my_dataset.yaml"
, que utilizará as imagens de validação para calibrar. Quando não é passado nenhum valor para data
com exportação para TensorRT com quantização INT8, a predefinição será a utilização de um dos "pequenos" conjuntos de dados de exemplo baseados na tarefa modelo em vez de lançar um erro.
Exemplo
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
- Exportações com eixos dinâmicos, esta opção será activada por defeito ao exportar com
int8=True
mesmo que não esteja explicitamente definido. Ver argumentos de exportação para mais informações. - Define um tamanho máximo de lote de 8 para o modelo exportado, que calibra com
batch = 2 * 8
para evitar erros de escala durante a calibração. - Atribui 4 GiB de memória em vez de atribuir todo o dispositivo para o processo de conversão.
- Utiliza o conjunto de dados COCO para calibração, especificamente as imagens utilizadas para validação (5.000 no total).
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''
# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Cache de calibração
TensorRT irá gerar uma calibração .cache
que pode ser reutilizado para acelerar a exportação de futuros pesos do modelo utilizando os mesmos dados, mas isto pode resultar numa calibração deficiente quando os dados são muito diferentes ou se o batch
é alterado drasticamente. Nestas circunstâncias, o .cache
deve ser renomeado e movido para um diretório diferente ou eliminado por completo.
Vantagens da utilização de YOLO com TensorRT INT8
-
Redução do tamanho do modelo: A quantização de FP32 para INT8 pode reduzir o tamanho do modelo em 4x (no disco ou na memória), levando a tempos de descarregamento mais rápidos, menores requisitos de armazenamento e menor espaço de memória ao implantar um modelo.
-
Menor consumo de energia: Operações de precisão reduzida para modelos INT8 exportados para YOLO podem consumir menos energia em comparação com modelos FP32, especialmente para dispositivos alimentados por bateria.
-
Velocidades de inferência melhoradas: TensorRT optimiza o modelo para o hardware de destino, o que pode levar a velocidades de inferência mais rápidas em GPUs, dispositivos incorporados e aceleradores.
Nota sobre as velocidades de inferência
É de 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 mais longos do que o habitual. Isto também pode ocorrer quando se altera imgsz
durante a inferência, especialmente quando imgsz
não é o mesmo que foi especificado durante a exportação (exportar imgsz
é definido como TensorRT perfil "ótimo").
Desvantagens da utilização de YOLO com TensorRT INT8
-
Diminuição dos parâmetros de avaliação: A utilização de uma precisão inferior significa que
mAP
,Precision
,Recall
ou qualquer outra métrica utilizada para avaliar o desempenho do modelo é suscetível de ser um pouco pior. Ver o Secção de resultados de desempenho para comparar as diferenças demAP50
emAP50-95
ao exportar com INT8 numa pequena amostra de vários dispositivos. -
Aumento do tempo de desenvolvimento: Encontrar as definições "óptimas" para a calibração da INT8 para o conjunto de dados e o 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 dos modelos são menos transferíveis.
Ultralytics YOLO TensorRT Desempenho das exportações
NVIDIA A100
Desempenho
Testado com o Ubuntu 22.04.3 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
Consulte os Documentos de deteção para obter exemplos de utilização com estes modelos treinados em COCO, que incluem 80 classes pré-treinadas.
Nota
Tempos de inferência apresentados 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) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
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 |
Consulte os documentos de segmentação para obter exemplos de uso com esses modelos treinados no COCO, que incluem 80 classes pré-treinadas.
Nota
Tempos de inferência apresentados para mean
, min
(mais rápido), e max
(mais lento) para cada teste utilizando pesos pré-treinados yolov8n-seg.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
mAPval 50(M) |
mAPval 50-95(M) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Prever | 0.62 | 0.61 | 0.68 | 8 | 640 | ||||
FP32 | COCOval | 0.63 | 0.52 | 0.36 | 0.49 | 0.31 | 1 | 640 | |
FP16 | Prever | 0.40 | 0.39 | 0.44 | 8 | 640 | ||||
FP16 | COCOval | 0.43 | 0.52 | 0.36 | 0.49 | 0.30 | 1 | 640 | |
INT8 | Prever | 0.34 | 0.33 | 0.37 | 8 | 640 | ||||
INT8 | COCOval | 0.36 | 0.46 | 0.32 | 0.43 | 0.27 | 1 | 640 |
Consulte os documentos de classificação para obter exemplos de utilização com estes modelos treinados no ImageNet, que incluem 1000 classes pré-treinadas.
Nota
Tempos de inferência apresentados para mean
, min
(mais rápido), e max
(mais lento) para cada teste utilizando pesos pré-treinados yolov8n-cls.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
topo-1 | top-5 | batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
FP32 | Prever | 0.26 | 0.25 | 0.28 | 8 | 640 | ||
FP32 | ImageNetval | 0.26 | 0.35 | 0.61 | 1 | 640 | |
FP16 | Prever | 0.18 | 0.17 | 0.19 | 8 | 640 | ||
FP16 | ImageNetval | 0.18 | 0.35 | 0.61 | 1 | 640 | |
INT8 | Prever | 0.16 | 0.15 | 0.57 | 8 | 640 | ||
INT8 | ImageNetval | 0.15 | 0.32 | 0.59 | 1 | 640 |
Consulte os documentos de estimativa de pose para obter exemplos de utilização com estes modelos treinados em COCO, que incluem uma classe pré-treinada, "pessoa".
Nota
Tempos de inferência apresentados para mean
, min
(mais rápido), e max
(mais lento) para cada teste utilizando pesos pré-treinados yolov8n-pose.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
mAPval 50(P) |
mAPval 50-95(P) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|---|---|
FP32 | Prever | 0.54 | 0.53 | 0.58 | 8 | 640 | ||||
FP32 | COCOval | 0.55 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
FP16 | Prever | 0.37 | 0.35 | 0.41 | 8 | 640 | ||||
FP16 | COCOval | 0.36 | 0.91 | 0.69 | 0.80 | 0.51 | 1 | 640 | |
INT8 | Prever | 0.29 | 0.28 | 0.33 | 8 | 640 | ||||
INT8 | COCOval | 0.30 | 0.90 | 0.68 | 0.78 | 0.47 | 1 | 640 |
Consulte os documentos de deteção orientada para obter exemplos de utilização com estes modelos treinados no DOTAv1, que incluem 15 classes pré-treinadas.
Nota
Tempos de inferência apresentados para mean
, min
(mais rápido), e max
(mais lento) para cada teste utilizando pesos pré-treinados yolov8n-obb.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
FP32 | Prever | 0.52 | 0.51 | 0.59 | 8 | 640 | ||
FP32 | DOTAv1val | 0.76 | 0.50 | 0.36 | 1 | 640 | |
FP16 | Prever | 0.34 | 0.33 | 0.42 | 8 | 640 | ||
FP16 | DOTAv1val | 0.59 | 0.50 | 0.36 | 1 | 640 | |
INT8 | Prever | 0.29 | 0.28 | 0.33 | 8 | 640 | ||
INT8 | DOTAv1val | 0.32 | 0.45 | 0.32 | 1 | 640 |
GPUs de consumo
Desempenho de deteção (COCO)
Testado com o 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) para cada teste utilizando pesos pré-treinados yolov8n.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
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 |
Testado com o Windows 10.0.22631, python 3.11.9
, ultralytics==8.2.4
, tensorrt==10.0.1
Nota
Tempos de inferência apresentados 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) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
FP32 | Prever | 1.76 | 1.69 | 1.87 | 8 | 640 | ||
FP32 | COCOval | 1.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Prever | 0.86 | 0.75 | 1.00 | 8 | 640 | ||
FP16 | COCOval | 1.43 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Prever | 0.80 | 0.75 | 1.00 | 8 | 640 | ||
INT8 | COCOval | 1.35 | 0.47 | 0.33 | 1 | 640 |
Testado com o Pop!_OS 22.04 LTS, python 3.10.12
, ultralytics==8.2.4
, tensorrt==8.6.1.post1
Nota
Tempos de inferência apresentados 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) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
FP32 | Prever | 2.84 | 2.84 | 2.85 | 8 | 640 | ||
FP32 | COCOval | 2.94 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Prever | 1.09 | 1.09 | 1.10 | 8 | 640 | ||
FP16 | COCOval | 1.20 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Prever | 0.75 | 0.74 | 0.75 | 8 | 640 | ||
INT8 | COCOval | 0.76 | 0.47 | 0.33 | 1 | 640 |
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) para cada teste utilizando pesos pré-treinados yolov8n.engine
Precisão | Teste de avaliação | média (ms) |
min | max (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
tamanho (pixéis) |
---|---|---|---|---|---|---|---|
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 |
Informações
Consulte o nosso guia de início rápido em NVIDIA Jetson com Ultralytics YOLO para saber mais sobre a instalação e a configuração.
Métodos de avaliação
Expandir as secções abaixo para obter informações sobre a forma como estes modelos foram exportados e testados.
Exportar configurações
Consulte o modo de exportação para obter detalhes sobre os argumentos de configuração de exportação.
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
Prever laço
Ver modo de previsão para mais informações.
Configuração da validação
Ver val
modo para saber mais sobre argumentos de configuração de validação.
Deploying Exported YOLO11 TensorRT Models
Having successfully exported your Ultralytics YOLO11 models to TensorRT format, you're now ready to deploy them. For in-depth instructions on deploying your TensorRT models in various settings, take a look at the following resources:
-
Implantar Ultralytics com um servidor Triton : O nosso guia sobre como utilizar o servidor NVIDIA's Triton Inference (anteriormente TensorRT Inference) especificamente para utilização com modelos Ultralytics YOLO .
-
Implantação de redes neurais profundas com NVIDIA TensorRT: Este artigo explica como usar NVIDIA TensorRT para implantar redes neurais profundas em plataformas de implantação baseadas em GPU de forma eficiente.
-
IA de ponta a ponta para PCs baseados em NVIDIA: NVIDIA TensorRT Implantação: Esta postagem do blog explica o uso de NVIDIA TensorRT para otimizar e implantar modelos de IA em PCs baseados em NVIDIA.
-
Repositório GitHub para NVIDIA TensorRT :: Este é o repositório oficial do GitHub que contém o código-fonte e a documentação para NVIDIA TensorRT .
Resumo
In this guide, we focused on converting Ultralytics YOLO11 models to NVIDIA's TensorRT model format. This conversion step is crucial for improving the efficiency and speed of YOLO11 models, making them more effective and suitable for diverse deployment environments.
Para obter mais informações sobre os detalhes de utilização, consulte a documentação oficialTensorRT .
If you're curious about additional Ultralytics YOLO11 integrations, our integration guide page provides an extensive selection of informative resources and insights.
FAQ
How do I convert YOLO11 models to TensorRT format?
To convert your Ultralytics YOLO11 models to TensorRT format for optimized NVIDIA GPU inference, follow these steps:
-
Instalar o pacote necessário:
-
Export your YOLO11 model:
For more details, visit the YOLO11 Installation guide and the export documentation.
What are the benefits of using TensorRT for YOLO11 models?
Using TensorRT to optimize YOLO11 models offers several benefits:
- Velocidade de inferência mais rápida: TensorRT optimiza as camadas do modelo e utiliza a calibração de precisão (INT8 e FP16) para acelerar a inferência sem sacrificar significativamente a precisão.
- Eficiência da memória: TensorRT gere a memória tensor dinamicamente, reduzindo as despesas gerais e melhorando a utilização da memória GPU .
- Fusão de camadas: Combina várias camadas em operações únicas, reduzindo a complexidade computacional.
- Auto-ajuste do kernel: Seleciona automaticamente os kernels GPU optimizados para cada camada do modelo, assegurando o máximo desempenho.
Para mais informações, explore as caraterísticas detalhadas de TensorRT aqui e leia a nossa secção de visão geral deTensorRT .
Can I use INT8 quantization with TensorRT for YOLO11 models?
Yes, you can export YOLO11 models using TensorRT with INT8 quantization. This process involves post-training quantization (PTQ) and calibration:
-
Exportar com INT8:
-
Executar inferência:
Para mais pormenores, consulte a secção de exportação TensorRT com quantização INT8.
How do I deploy YOLO11 TensorRT models on an NVIDIA Triton Inference Server?
Deploying YOLO11 TensorRT models on an NVIDIA Triton Inference Server can be done using the following resources:
- Implementar Ultralytics YOLOv8 com o servidor Triton : Orientação passo a passo sobre a configuração e utilização do Servidor de Inferência Triton .
- NVIDIA Triton Documentação do servidor de inferência: Documentação oficial do NVIDIA para opções e configurações de implantação detalhadas.
Estes guias ajudá-lo-ão a integrar eficazmente os modelos YOLOv8 em vários ambientes de implementação.
Quais são as melhorias de desempenho observadas com os modelos YOLOv8 exportados para TensorRT?
As melhorias de desempenho com TensorRT podem variar consoante o hardware utilizado. 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 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
Na secção de desempenho podem ser encontradas referências de desempenho detalhadas para diferentes configurações de hardware.
Para obter informações mais completas sobre o desempenho do TensorRT , consulte a documentação doUltralytics e os nossos relatórios de análise de desempenho.