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#
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.
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.
-
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.
-
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.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| 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:
# Install the required package for YOLO26
pip install ultralyticsPara 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.
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 do modelo exportado, que define a compatibilidade com vários ambientes de implementação. |
imgsz | int ou tuple | 640 | Tamanho 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. |
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. 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. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade para lidar com diferentes dimensões 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 intermédio. 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 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. |
nms | bool, opcional | None | Seleciona a saída em bruto (None, predefinição), a NMS embutida (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, 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. |
fraction | float, int ou list | 1.0 | Subconjunto 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. |
device | str | None | Especifica o dispositivo para exportação: GPU (device=0), DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). |
Certifica-te de que utilizas uma GPU com suporte para CUDA ao exportar para TensorRT.
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.
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.
É 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
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 estratégias de otimização, melhorando potencialmente 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 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_STATEdurante a exportação se o valor deworkspacefor superior à memória disponível no dispositivo, o que significa que o valor deworkspacedeve ser reduzido ou definido comoNone. -
Se
workspaceestiver definido com o valor máximo e a calibração falhar ou terminar inesperadamente, considera usarNonepara alocação automática ou reduzir os valores deimgszebatchpara 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.
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.
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;
dynamicpermaneceFalsea menos que seja definido explicitamente. Consulta os argumentos de exportação para obter informações adicionais. - Define o tamanho máximo do batch como 8 para o modelo exportado e a calibração INT8.
- Aloca 4 GiB de memória em vez de alocar todo o dispositivo para o processo de conversão.
- 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,Recallou 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 emmAP50emAP50-95ao 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#
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.
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
| Precision | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (píxeis) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsão | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsão | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsão | 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 apresentados para mean, min (mais rápido) e max (mais lento) em cada teste, utilizando os pesos pré-treinados yolov8n.engine
| Precision | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (píxeis) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsão | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsão | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsão | 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 apresentados para mean, min (mais rápido) e max (mais lento) em cada teste, utilizando os pesos pré-treinados yolov8n.engine
| Precision | Teste de avaliação | média (ms) | mín. | máx. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | tamanho (píxeis) |
|---|---|---|---|---|---|---|---|
| FP32 | Previsão | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Previsão | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Previsão | 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 NVIDIA Jetson com Ultralytics YOLO para saber mais sobre a configuração e instalaçã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:
-
Implementar o Ultralytics com um servidor Triton: o nosso guia sobre como utilizar o Triton Inference Server da NVIDIA (anteriormente TensorRT Inference Server), especificamente com modelos YOLO do Ultralytics.
-
Implementar redes neuronais profundas com o NVIDIA TensorRT: este artigo explica como utilizar o NVIDIA TensorRT para implementar redes neuronais profundas de forma eficiente em plataformas de implementação baseadas em GPU.
-
IA de ponta a ponta para PCs baseados em NVIDIA: implementação com NVIDIA TensorRT: esta publicação de blogue explica a utilização do NVIDIA TensorRT para otimizar e implementar modelos de IA em PCs baseados em NVIDIA.
-
Repositório do 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, 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:
-
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 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:-
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 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:
- Implementar o Ultralytics YOLO26 com o Triton Server: orientações passo a passo para configurar e utilizar o Triton Inference Server.
- Implementar redes neuronais profundas com o NVIDIA TensorRT: o guia da NVIDIA sobre a implementação de modelos de aprendizagem profunda com TensorRT, com opções e configurações detalhadas de implementação.
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.
-