TensorRT es un kit de desarrollo de software (SDK) y un runtime de optimización de inferencia desarrollado por Nvidia para implementar modelos de aprendizaje profundo y aprendizaje automático entrenados en unidades de procesamiento gráfico (GPU). Puede importar modelos de frameworks como PyTorch, TensorFlow y ONNX, y compilarlos en motores de runtime optimizados para inferencia de baja latencia y alto rendimiento. En la documentación actual de Nvidia, el nombre TensorRT también se refiere a una familia de productos más amplia que incluye el SDK principal de TensorRT, TensorRT-LLM y TensorRT-RTX.
El SDK principal es principalmente un producto propietario de Nvidia, aunque Nvidia también mantiene repositorios de TensorRT de código abierto con licencia Apache y proyectos complementarios relacionados. TensorRT se utiliza ampliamente en entornos de producción para tareas de inferencia de inteligencia artificial, desde visión por computadora hasta modelos de lenguaje de gran tamaño, y es un componente clave en la pila de software de aprendizaje profundo de Nvidia.
Historia
TensorRT estuvo disponible como parte de la pila de software de aprendizaje profundo de Nvidia hacia 2017, cuando se describió como un motor de inferencia de alto rendimiento para implementar redes neuronales entrenadas en GPU de Nvidia. En 2018, Google anunció la integración de Nvidia TensorRT con TensorFlow 1.7, describiendo TensorRT como una biblioteca que optimiza modelos de aprendizaje profundo para inferencia y crea un runtime para su implementación en GPU en entornos de producción. Esta integración marcó un paso temprano para convertir TensorRT en una herramienta estándar para la inferencia de aprendizaje automático en hardware de Nvidia.
Descripción general
El núcleo de TensorRT es una biblioteca en C++ que toma una red entrenada, compuesta por una definición de red y parámetros entrenados, y produce un motor de runtime altamente optimizado para inferencia en GPU de Nvidia. TensorRT proporciona API tanto en C++ como en Python, y los modelos pueden expresarse directamente a través de su API de definición de red o importarse mediante su analizador ONNX. Esta flexibilidad permite a los desarrolladores trabajar con modelos de diversos frameworks de aprendizaje profundo.
Según la documentación de Nvidia, TensorRT realiza optimizaciones a nivel de grafo y de kernel, como la fusión de capas y la selección de implementaciones eficientes para las operaciones compatibles. Estas optimizaciones reducen la latencia y aumentan el rendimiento, lo que hace que TensorRT sea adecuado para aplicaciones en tiempo real. La documentación actual también describe soporte para formas dinámicas, modos de ejecución de precisión mixta que incluyen FP32, FP16, BF16, FP8 e INT8, y optimizaciones especializadas para cargas de trabajo de transformers y modelos de lenguaje de gran tamaño. Esto incluye técnicas como poda de modelos y cuantización para mejorar aún más el rendimiento.
Los motores de TensorRT pueden generarse a través de las API de TensorRT o con la utilidad de línea de comandos trtexec. La documentación de inicio rápido de Nvidia describe flujos de trabajo de implementación basados en conversión ONNX, API de runtime y deserialización directa de motores para aplicaciones en C++ y Python. Estos flujos de trabajo permiten una integración fluida en sistemas de producción, a menudo en combinación con servicios en la nube como Amazon Web Services o Google Cloud.
Licencias y componentes de código abierto
El modelo de licencias en torno a TensorRT se divide entre un SDK principal propietario y un conjunto de repositorios y herramientas de código abierto. El software TensorRT empaquetado distribuido por Nvidia se rige por el Acuerdo de Licencia de Software de Nvidia. Al mismo tiempo, Nvidia mantiene un repositorio público de TensorRT en GitHub bajo la Licencia Apache 2.0, lo que permite contribuciones de la comunidad y transparencia para ciertos componentes.
La documentación oficial de TensorRT también dirige a los usuarios al repositorio de software de código abierto de TensorRT para obtener código de inicio rápido y ejemplos. La documentación de arquitectura describe herramientas relacionadas, como Polygraphy para depuración y plegado de constantes, así como ONNX-GraphSurgeon para modificar grafos ONNX antes de la implementación con TensorRT. TensorRT también admite un mecanismo de complementos para capas personalizadas y operaciones no compatibles, lo que permite a los desarrolladores ampliar su funcionalidad para necesidades especializadas.
Familia de productos
La documentación actual de Nvidia agrupa varios productos de inferencia bajo el nombre TensorRT. En esa documentación, el SDK principal se distingue como TensorRT (Enterprise), mientras que las ofertas relacionadas incluyen TensorRT-LLM para inferencia de modelos de lenguaje de gran tamaño y TensorRT-RTX para GPU RTX de consumo. Este enfoque de familia refleja la creciente diversidad de cargas de trabajo de IA y objetivos de hardware.
TensorRT-LLM
TensorRT-LLM es un kit de herramientas de código abierto relacionado para optimizar y servir modelos de lenguaje de gran tamaño en GPU de Nvidia. Nvidia lo describe como una API en Python para definir LLM y construir motores TensorRT optimizados para cargas de trabajo de LLM. Este kit de herramientas está diseñado para abordar los desafíos únicos de los modelos de IA generativa, que requieren un alto ancho de banda de memoria y mecanismos de atención eficientes.
Según la documentación de la familia de productos de Nvidia, TensorRT-LLM admite ejecución multi-GPU y multi-nodo, agrupación en vuelo, caché de KV paginada y métodos de cuantización como FP8, INT8 e INT4 para un servicio de modelos de mayor rendimiento. Estas características permiten la implementación eficiente de modelos como los de OpenAI o Anthropic en producción. El código base de TensorRT-LLM se publica en GitHub bajo la Licencia Apache 2.0, fomentando una comunidad de desarrolladores.
Dado que Nvidia documenta TensorRT-LLM como un miembro separado de la familia de productos TensorRT, generalmente se trata como un proyecto de software relacionado pero distinto, en lugar de una característica única del SDK base de TensorRT. Esta distinción permite un desarrollo y una optimización centrados en modelos de lenguaje de gran tamaño, que tienen características de rendimiento diferentes a las de las redes neuronales tradicionales.
Véase también
- llama.cpp
- SGLang
- vLLM
- Listas de software de inteligencia artificial de código abierto
- Comparación de software de aprendizaje profundo
- Comparación de software de aprendizaje automático