仿佛昨日还在探讨NVIDIA TensorRT 8.5版本的新颖特性,而本周,NVIDIA已然推出了全新的TensorRT 10.0。这次也是大版本更新,让我们来扒一扒有哪些让人耳目一新的功能
TensorRT 10.0升级,开发人员体验焕然一新
TensorRT 10.0的发布,为开发者们带来了更加便捷的入门体验。得益于更新的Debian和RPM元包,安装TensorRT库现在变得轻而易举。只需简单的命令,如apt-get install tensorrt
或pip install tensorrt
,便可轻松搞定所有相关的C++或Python库的安装。
值得一提的是,TensorRT 10.0还引入了全新的Debug Tensors API。这个API允许开发者在构建时将特定的张量标记为调试张量,从而能够更轻松地追踪和识别图表中的问题。每当这些张量的值在运行时被修改,系统都会自动调用一个用户定义的回调函数,详细报告张量的值、类型和维度。
此外,TensorRT 10.0的ONNX解析器也进行了升级,新增了工具来帮助开发者在调用失败时快速识别出不受支持的节点。这些错误报告会详尽地提供节点名称、类型、失败原因,甚至包括本地函数堆栈(如果节点位于ONNX本地函数中)。通过parse
、getNbErrors
和getError
等函数,开发者可以轻松查询和处理这些错误信息。
对于Windows开发者来说,TensorRT 10.0同样带来了重大利好。新版本不仅提升了版本兼容性和硬件前向兼容性,还优化了权重剥离引擎和稳定扩散管道,让Windows平台上的开发体验更上一层楼。
TensorRT 10.0功能大升级
TensorRT 10.0带来了众多引人注目的功能升级。其中,性能方面的亮点包括支持块量化的INT4仅权重量化(WoQ)以及改进的内存分配选项。这些新功能不仅提升了性能,还使得大型模型的部署变得更加灵活。
INT4仅权重量化(WoQ)
TensorRT 10.0现在支持使用INT4进行权重压缩,这一特性与硬件架构无关,具有广泛的适用性。当内存带宽成为GEMM操作性能的瓶颈,或者GPU内存资源紧张时,WoQ技术能够发挥巨大作用。在WoQ中,GEMM的权重被量化为INT4精度,而GEMM的输入数据和计算操作则保持在高精度状态。TensorRT的WoQ内核会从内存中读取4位权重,并在进行高精度点积计算之前对其进行去量化处理。
此外,块量化技术使得量化尺度中能够实现更高的粒度设置。它将张量沿单个维度划分为固定大小的块,并为每个块定义一个比例因子。这样,块中的所有元素都可以共享一个公共的比例因子,进一步提升了量化的灵活性和准确性。
运行时内存分配
TensorRT 10.0还增强了运行时内存分配的功能。通过createExecutionContext
函数,用户可以指定执行上下文设备内存的分配策略。对于用户管理的分配方式,TensorRT提供了额外的API,以便根据实际输入形状查询所需的大小,从而更精细地管理内存资源。
减重引擎(Weight-stripped engines)与重量流 (Weight streaming)
为了应对大型模型的部署挑战,TensorRT 10.0引入了重量剥离引擎,这一功能可以实现高达99%的引擎尺寸压缩。通过使用新标志REFIT_IDENTICAL
,TensorRT构建器可以在假设引擎将使用与构建时提供的相同权重进行改装的情况下进行优化。这一功能极大地减小了序列化引擎的大小,使其更便于部署和分发。
同时,TensorRT 10.0还支持重量流功能。这一功能允许在网络执行期间将网络的权重从主机内存流式传输到设备内存,而不是在引擎加载时一次性将它们放置在设备内存中。这使得权重大于可用GPU内存的模型也能够顺利运行,尽管可能会略微增加一些延迟。需要注意的是,这一功能仅支持强类型网络。
总的来说,TensorRT 10.0的功能升级为用户提供了更灵活、更高效的模型部署方案,特别是在处理大型模型和有限GPU内存资源的情况下。
NVIDIA TensorRT 模型优化器 0.11
NVIDIA TensorRT 10.0引入了一个全新的综合库——NVIDIA TensorRT Model Optimizer。这个优化器专为深度学习模型的训练后优化和循环训练设计,涵盖了量化、稀疏化以及蒸馏等技术,旨在简化模型结构,进而使编译器能更有效地提升模型的推理速度。
该优化器能够模拟部署到TensorRT或TensorRT-LLM的PyTorch和ONNX模型的量化检查点。通过Model Optimizer的Python API,用户可以方便地利用TensorRT的运行时和编译器优化技术,以加快模型的推理速度。
值得一提的是,NVIDIA TensorRT Model Optimizer是开源且免费的,用户可以通过NVIDIA PyPI轻松获取。如需更多信息,可参阅有关使用NVIDIA TensorRT Model Optimizer提升生成式AI推理性能的公开资料。
训练后量化(PTQ)
在模型压缩技术中,训练后量化(PTQ)是降低内存占用和提速推理的流行方法之一。与其他仅支持无数据量化(WoQ)或基础技术的量化工具包相比,Model Optimizer提供了包括INT8 SmoothQuant和INT4 AWQ在内的高级校准算法。若您在TensorRT-LLM中使用FP8或更低精度(例如INT8或INT4),那么您已经在后台享受到了Model Optimizer PTQ的优化效果。
量化感知训练(QAT)
此外,量化感知训练(QAT)能够让您在不影响模型准确性的前提下,充分解锁4位推理的加速潜力。QAT通过在训练过程中计算比例因子,并将模拟的量化损失纳入微调过程,使得神经网络对量化更具适应性。Model Optimizer的QAT流程与包括NVIDIA NeMo、Megatron-LM和Hugging Face Trainer API在内的主流训练框架紧密集成,为开发者提供了跨框架利用NVIDIA平台功能的多种选择。
稀疏性技术
稀疏性技术则是通过有选择性地鼓励模型参数中的零值来减小模型大小,这些零值在存储和计算过程中可以被忽略。在MLPerf推理v4.0的基准测试中,TensorRT-LLM利用了Model Optimizer的训练后稀疏性技术,在NVIDIA H100上运行的Llama 2 70B模型,在FP8量化的基础上,实现了高达1.3倍的额外加速。
Nsight 深度学习设计器
TensorRT 10.0新增了对Nsight Deep Learning Designer 2024.1(抢先体验版)的分析和引擎构建支持。Nsight Deep Learning Designer是一个专为设计深度神经网络(DNN)而打造的集成开发环境。
在模型优化过程中,我们需要在速度和准确性之间找到微妙的平衡点。Nsight Deep Learning Designer通过提供网络推理性能的直观诊断,助力我们调整模型,以达到性能目标并充分利用GPU资源。
此外,这款工具还允许我们对TensorRT ONNX模型进行可视化检查。用户可以即时调整模型图和单个运算符,从而优化推理流程。
值得一提的是,Nsight Deep Learning Designer是免费提供的,让每个人都能轻松地进行深度学习模型的设计与优化。
NVIDIA TensorRT-LLM 0.10升级,支持更多AI模型
NVIDIA TensorRT-LLM,这个开源库,是专门为优化大型语言模型(LLM)推理而设计的。它提供了一个简单易用的Python API,该API融合了如FP8和INT4 AWQ等LLM推理领域的最新技术,同时确保了推理的准确性不受影响。预计在5月下旬推出的TensorRT-LLM 0.10版本,将会支持更多新发布的AI模型,例如Meta Llama 3、Google CodeGemma、Google RecurrentGemma,以及Microsoft Phi-3等。
此外,新版本还增加了对混合专家(MoE)的FP8支持,从而进一步提升了模型的性能和灵活性。其C++运行时以及NVIDIA Triton后端现已支持编码器-解码器模型,并能在运行中处理批量数据。值得一提的是,TensorRT 10.0中引入的权重剥离引擎也将在TensorRT-LLM中得到应用,这无疑将为用户带来更为高效和便捷的推理体验。