TensorRT é um kit de desenvolvimento de software (SDK) e um runtime de otimização de inferência desenvolvido pela Nvidia para implantar modelos treinados de aprendizado profundo e aprendizado de máquina em unidades de processamento gráfico (GPUs). Ele pode importar modelos de frameworks como PyTorch, TensorFlow e ONNX, e compilá-los em engines de runtime otimizados para inferência de baixa latência e alta taxa de transferência. Na documentação atual da Nvidia, o nome TensorRT também se refere a uma família de produtos mais ampla que inclui o SDK TensorRT principal, o TensorRT-LLM e o TensorRT-RTX.
O SDK principal é predominantemente um produto proprietário da Nvidia, embora a Nvidia também mantenha repositórios TensorRT de código aberto licenciados pela Apache e projetos complementares relacionados. O TensorRT é amplamente utilizado em ambientes de produção para tarefas de inferência de inteligência artificial, desde visão computacional até modelos de linguagem de grande porte, e é um componente-chave na pilha de software de aprendizado profundo da Nvidia.
História
O TensorRT estava disponível como parte da pilha de software de aprendizado profundo da Nvidia em 2017, quando foi descrito como um engine de inferência de alto desempenho para implantar redes neurais treinadas em GPUs da Nvidia. Em 2018, o Google anunciou a integração do Nvidia TensorRT com o TensorFlow 1.7, descrevendo o TensorRT como uma biblioteca que otimiza modelos de aprendizado profundo para inferência e cria um runtime para implantação em GPUs em ambientes de produção. Essa integração marcou um passo inicial para tornar o TensorRT uma ferramenta padrão para inferência de aprendizado de máquina em hardware da Nvidia.
Visão geral
O núcleo do TensorRT é uma biblioteca em C++ que recebe uma rede treinada, consistindo em uma definição de rede e parâmetros treinados, e produz um engine de runtime altamente otimizado para inferência em GPUs da Nvidia. O TensorRT fornece APIs em C++ e Python, e os modelos podem ser expressos diretamente por meio de sua API de definição de rede ou importados por meio de seu parser ONNX. Essa flexibilidade permite que desenvolvedores trabalhem com modelos de vários frameworks de aprendizado profundo.
De acordo com a documentação da Nvidia, o TensorRT realiza otimizações em nível de grafo e em nível de kernel, como fusão de camadas e seleção de implementações eficientes para operações suportadas. Essas otimizações reduzem a latência e aumentam a taxa de transferência, tornando o TensorRT adequado para aplicações em tempo real. A documentação atual também descreve suporte para formas dinâmicas, modos de execução de precisão mista, incluindo FP32, FP16, BF16, FP8 e INT8, e otimizações especializadas para cargas de trabalho de transformers e modelos de linguagem de grande porte. Isso inclui técnicas como poda de modelos e quantização para melhorar ainda mais o desempenho.
Os engines do TensorRT podem ser gerados por meio das APIs do TensorRT ou com o utilitário de linha de comando trtexec. A documentação de início rápido da Nvidia descreve fluxos de trabalho de implantação baseados em conversão ONNX, APIs de runtime e desserialização direta de engines para aplicações em C++ e Python. Esses fluxos de trabalho permitem integração perfeita em sistemas de produção, frequentemente em conjunto com serviços de nuvem como Amazon Web Services ou Google Cloud.
Licenciamento e componentes de código aberto
O modelo de licenciamento em torno do TensorRT é dividido entre um SDK principal proprietário e um conjunto de repositórios e ferramentas de código aberto. O software TensorRT empacotado distribuído pela Nvidia é regido pelo Contrato de Licença de Software da Nvidia. Ao mesmo tempo, a Nvidia mantém um repositório público do TensorRT no GitHub sob a Licença Apache 2.0, permitindo contribuições da comunidade e transparência para certos componentes.
A documentação oficial do TensorRT também direciona os usuários ao repositório de software de código aberto do TensorRT para códigos de início rápido e exemplos. A documentação de arquitetura descreve ferramentas relacionadas, como Polygraphy para depuração e dobramento de constantes, bem como ONNX-GraphSurgeon para modificar grafos ONNX antes da implantação com o TensorRT. O TensorRT também suporta um mecanismo de plugins para camadas personalizadas e operações não suportadas, permitindo que desenvolvedores estendam sua funcionalidade para necessidades especializadas.
Família de produtos
A documentação atual da Nvidia agrupa vários produtos de inferência sob o nome TensorRT. Nessa documentação, o SDK principal é distinguido como TensorRT (Enterprise), enquanto as ofertas relacionadas incluem o TensorRT-LLM para inferência de modelos de linguagem de grande porte e o TensorRT-RTX para GPUs RTX de consumo. Essa abordagem de família reflete a crescente diversidade de cargas de trabalho de IA e alvos de hardware.
TensorRT-LLM
O TensorRT-LLM é um kit de ferramentas de código aberto relacionado para otimizar e servir modelos de linguagem de grande porte em GPUs da Nvidia. A Nvidia o descreve como fornecendo uma API em Python para definir LLMs e construir engines TensorRT otimizados para cargas de trabalho de LLM. Esse kit de ferramentas é projetado para abordar os desafios únicos de modelos de IA generativa, que exigem alta largura de banda de memória e mecanismos de atenção eficientes.
De acordo com a documentação da família de produtos da Nvidia, o TensorRT-LLM suporta execução multi-GPU e multi-nó, batching em voo, cacheamento de KV paginado e métodos de quantização como FP8, INT8 e INT4 para servir modelos com maior taxa de transferência. Esses recursos permitem a implantação eficiente de modelos como os da OpenAI ou Anthropic em produção. O código-fonte do TensorRT-LLM é publicado no GitHub sob a Licença Apache 2.0, promovendo uma comunidade de desenvolvedores.
Como a Nvidia documenta o TensorRT-LLM como um membro separado da família de produtos TensorRT, ele é tipicamente tratado como um projeto de software relacionado, mas distinto, em vez de um único recurso do SDK TensorRT base. Essa distinção permite desenvolvimento e otimização focados para modelos de linguagem de grande porte, que têm características de desempenho diferentes das redes neurais tradicionais.
Ver também
- llama.cpp
- SGLang
- vLLM
- Listas de software de inteligência artificial de código aberto
- Comparação de software de aprendizado profundo
- Comparação de software de aprendizado de máquina