TensorRT是Nvidia开发的一款软件开发工具包(SDK)和推理优化运行时,用于在图形处理单元(GPU)上部署训练好的深度学习和机器学习模型。它可以从PyTorch、TensorFlow和ONNX等框架导入模型,并将其编译为优化后的运行时引擎,以实现低延迟和高吞吐量的推理。在Nvidia当前的文档中,TensorRT这一名称也指代一个更广泛的产品系列,包括核心TensorRT SDK、TensorRT-LLM和TensorRT-RTX。
核心SDK主要是Nvidia的专有产品,尽管Nvidia也维护着采用Apache许可证的开源TensorRT代码库及相关配套项目。TensorRT在生产环境中被广泛用于AI推理任务,涵盖从计算机视觉到大型语言模型的各类场景,并且是Nvidia深度学习软件栈中的关键组件。
历史
TensorRT在2017年已作为Nvidia深度学习软件栈的一部分提供,当时它被描述为一种高性能推理引擎,用于在Nvidia GPU上部署训练好的神经网络。2018年,Google宣布将Nvidia TensorRT集成到TensorFlow 1.7中,并将TensorRT描述为一个优化深度学习模型以进行推理并创建运行时以在生产环境中部署到GPU的库。这一集成标志着TensorRT成为Nvidia硬件上机器学习推理标准工具的早期一步。
概述
TensorRT的核心是一个C++库,它接收一个由网络定义和训练参数组成的已训练网络,并生成一个高度优化的运行时引擎,用于在Nvidia GPU上进行推理。TensorRT提供C++和Python两种API,模型既可以通过其网络定义API直接表达,也可以通过其ONNX解析器导入。这种灵活性使开发者能够处理来自各种深度学习框架的模型。
根据Nvidia的文档,TensorRT执行图级和内核级优化,例如层融合以及为支持的操作选择高效实现。这些优化降低了延迟并提高了吞吐量,使TensorRT适用于实时应用。当前文档还描述了对动态形状的支持、包括FP32、FP16、BF16、FP8和INT8在内的混合精度执行模式,以及针对Transformer和大型语言模型工作负载的专门优化。这包括模型剪枝和量化等技术,以进一步提升性能。
TensorRT引擎可以通过TensorRT API或trtexec命令行工具生成。Nvidia的快速入门文档描述了基于ONNX转换、运行时API以及面向C++和Python应用的直接引擎反序列化的部署工作流。这些工作流能够无缝集成到生产系统中,通常与Amazon Web Services或Google Cloud等云服务结合使用。
许可与开源组件
TensorRT的许可模式分为专有核心SDK和一组开源代码库及工具。Nvidia分发的打包TensorRT软件受Nvidia软件许可协议约束。同时,Nvidia在GitHub上维护着一个采用Apache License 2.0的公共TensorRT代码库,允许社区贡献并提高某些组件的透明度。
官方TensorRT文档还引导用户访问TensorRT开源软件代码库,以获取快速入门代码和示例。架构文档描述了相关工具,例如用于调试和常量折叠的Polygraphy,以及用于在使用TensorRT部署前修改ONNX图的ONNX-GraphSurgeon。TensorRT还支持用于自定义层和不支持操作的插件机制,使开发者能够针对专门需求扩展其功能。
产品系列
Nvidia当前的文档将多个推理产品归入TensorRT名称之下。在该文档中,核心SDK被区分为TensorRT(企业版),而相关产品包括用于大型语言模型推理的TensorRT-LLM和面向消费级RTX GPU的TensorRT-RTX。这种产品系列方法反映了AI工作负载和硬件目标的日益多样化。
TensorRT-LLM
TensorRT-LLM是一个相关的开源工具包,用于在Nvidia GPU上优化和服务大型语言模型。Nvidia将其描述为提供Python API来定义LLM并构建针对LLM工作负载优化的TensorRT引擎。该工具包旨在应对生成式AI模型的独特挑战,这些模型需要高内存带宽和高效的注意力机制。
根据Nvidia的产品系列文档,TensorRT-LLM支持多GPU和多节点执行、动态批处理、分页KV缓存,以及FP8、INT8和INT4等量化方法,以实现更高吞吐量的模型服务。这些功能使得诸如来自OpenAI或Anthropic的模型能够在生产中高效部署。TensorRT-LLM代码库在GitHub上以Apache License 2.0发布,培育了一个开发者社区。
由于Nvidia将TensorRT-LLM记录为TensorRT产品系列的独立成员,它通常被视为一个相关但独立的软件项目,而不是基础TensorRT SDK的单一功能。这种区分使得能够针对大型语言模型进行集中开发和优化,这些模型具有与传统神经网络不同的性能特征。
参见
- llama.cpp
- SGLang
- vLLM
- 开源人工智能软件列表
- 深度学习软件比较
- 机器学习软件比较