NVIDIA 今天宣布最新发布的 NVIDIA TensorRT,一个用于高性能深度学习推理的 API 生态系统。该系统包括推理运行时和模型优化两大组件,为生产应用程序提供低延迟和高吞吐量的优化解决方案。
这篇文章概述了此版本的关键功能和升级,包括更容易的安装、更高的可用性、改进的性能以及更多本地支持的人工智能模型。
开发人员体验升级
得益于更新的 Debian 和 RPM 元包,使用 TensorRT 10.0 变得更加容易上手。例如,使用>apt-get install tensorrt
或pip install tensorrt
命令便可为 C++ 或 Python 安装所有相关的 TensorRT 库。
此外,Debug Tensors 是一个新添加的 API,用于在构建时将张量标记为调试张量。这样可以更容易地识别图形中出现的任何问题。在运行时,每次写入张量的值时,都会使用值、类型和维度调用一个用户定义的回调函数。
TensorRT 10.0 在 ONNX 解析器中包含工具,用于在调用时识别不受支持的节点,以便在 parse
失败时报告错误。如果节点位于 ONNX 本地函数中,则此错误报告将包含节点名称、节点类型、故障原因以及本地函数堆栈。您可以使用 getNbErrors
函数来查询这些错误的数量,并使用 getError
函数来获取错误信息。
TensorRT10.0 也是 Windows 开发的一个重要升级。Windows 开发人员现在可以利用版本兼容性、硬件前向兼容性、轻量级引擎和 Stable Diffusion 管道改进。
功能升级
TensorRT 10.0 的性能亮点包括具有块量化和改进的内存分配选项的 INT4 仅限权重量化(WoQ)。此外,重量剥离引擎和重量流等新功能简化了将较大型号部署到较小 GPU 的过程。您不再需要将整个模型放入 GPU 内存中。
INT4 仅限权重量化
TensorRT10.0 支持使用 INT4 进行权重压缩,INT4 与硬件体系结构无关。当内存带宽限制 GEMM 操作性能或 GPU 内存不足时,WoQ 非常有用。在 WoQ 中,GEMM 权重被量化为 INT4 精度,而 GEMM 输入数据和计算操作保持高精度。TensorRT-WoQ 内核从内存中读取 4 位权重,并在高精度计算点积之前对其进行反量化。
块量化实现了量化尺度中更高粒度的设置。它将张量沿单个维度划分为固定大小的块。为每个块定义一个比例因子,块中的所有元素共享一个公共比例因子。
运行时分配
createExecutionContext
函数接受指定分配策略的参数 (kSTATIC
, kON_PROFILE_CHANGE
和 kUSER_MANAGED
),以确定执行上下文设备内存的大小。对于用户管理的分配,即 kUSER_MANAGED
,还需要使用额外的 API updateDeviceMemorySizeForShapes
,以根据实际输入形状查询所需的大小。
减重引擎
TensorRT 10.0 支持轻量化引擎,可以实现 99% 的引擎尺寸压缩。引擎是通过重新装配配重实现的,而不需要在运行时重建引擎。这可以使用新的 REFIT_IDENTICAL
旗帜,指示 TensorRT 构建器在假设引擎将以与构建时提供的重量相同的重量进行改装的情况下进行优化。
在部署场景中,可以将此标志与kSTRIP_PLAN
一起使用,以最小化计划大小。例如,在计划与包含权重的 ONNX 模型一起发货时,TensorRT 只允许对恒定重量进行改装,而不会影响构建者优化和生产与不可改装引擎具有相同运行时性能的引擎的能力。然后,从序列化引擎中省略这些权重,从而生成一个小的计划文件,该文件可以在运行时使用 ONNX 模型中的权重进行重新安装。
此功能使您能够在执行 ONNX 模型时,或在使用同一组权重构建多个引擎时,避免在 TensorRT 计划中添加权重副本。Windows 支持数十个 RTX GeForce GPU,每个 GPU 都有专门的轻量级引擎。
重量流
TensorRT 可以被配置为在网络执行期间将网络的权重从主机内存流式传输到设备内存,而不是在引擎加载时将它们放在设备内存中。这使得权重大于可用 GPU 内存的模型能够运行,但可能会显著增加延迟。权重流在构建时和运行时都是一个可选择的功能。请注意,只有强类型网络才支持此功能。
NVIDIA TensorRT 模型优化器 0.11
TensorRT 10.0 还包括 NVIDIA TensorRT Model Optimizer,这是一个新的后训练和训练中循环模型优化的综合库。其中包括量化、稀疏性和蒸馏,以降低模型复杂性,使编译器框架能够优化深度学习模型的推理速度。
Model Optimizer 为部署到 TensorRT LLM 或 TensorRT 的 PyTorch 和 ONNX 模型模拟量化检查点。Model Optimizer Python API 使模型优化技术能够利用 TensorRT 中现有的运行时和编译器优化来加速推理。
NVIDIA TensorRT 模型优化器是公共的,可以免费用作 NVIDIA PyPI 转轮。如果您想了解更多信息,请参阅 NVIDIA TensorRT 模型优化器:加速生成人工智能推理性能,现已公开。
训练后量化
训练后量化(PTQ)是减少内存占用和加速推理的最流行的模型压缩方法之一。虽然其他一些量化工具包仅支持 WoQ 或基本技术,但 Model Optimizer 提供了高级校准算法,包括 INT8 SmoothQuant 和 INT4 AWQ。此外,如果您正在使用 FP8 或更低的精度,例如 INT8 或 INT4,通过 TensorRT-LLM,您已经在幕后利用 Model Optimizer PTQ。
量化意识训练
量化感知训练(QAT)使您能够在不影响准确性的情况下,用 4 位完全解锁推理加速。通过在训练过程中计算缩放因子,并将模拟的量化损失纳入微调过程,QAT 使神经网络对量化更有弹性。模型优化器 QAT 工作流程旨在与领先的培训框架集成,包括 NVIDIA NeMo、Megatron-LM 和 Hugging FaceTransformer API,为开发人员提供了在各种框架中利用 NVIDIA 平台功能的选项。
稀疏性
稀疏性技术通过选择性地鼓励模型参数中的零值来减小模型的大小,这些零值可以从存储或计算中丢弃。在 MLPerf 推理 v4.0 中,TensorRT LLM 通过 Model Optimizer 训练后的稀疏性,在 Llama 2 70B 的 FP8 量化基础上进一步展示了 1.3 倍的加速性能,运行于 NVIDIA H100 上。
Nsight 深度学习设计器
TensorRT 10.0 还引入了对评测和引擎构建的支持,包括对 Nsight 深度学习设计器 2024.1 的早期访问。Nsight 深度学习设计器是一个功能强大的集成开发环境,专门用于设计深度神经网络(DNN)。
模型优化是速度和精度的仔细平衡。Nsight 深度学习设计器提供了网络推理性能的可视化诊断,以帮助调整模型以满足性能目标并使 GPU 资源饱和。
该工具还可对 TensorRT ONNX 模型进行目视检查。您可以实时调整模型图和单个运算符,以优化推理过程。
Nsight 深度学习设计器现已免费提供。了解更多信息并访问最新版本 2024.1。
扩大了对人工智能模型的支持
NVIDIA TensorRT LLM 是一个用于优化 LLM 推理的开源库。易于使用的 Python API 融合了 LLM 推理的最新进展,如 FP8 和 INT4 AWQ,且不损失准确性。TensorRT LLM 0.10 将于 5 月下旬推出,支持最新发布的人工智能模型,包括 Meta Llama 3、Google CodeGemma 和 Google RecurrentGemma,以及 Microsoft Phi-3。
此外,我们还增加了支持 FP8 的专家混合体(MoE)。在 C++ 运行时和 NVIDIA Triton 中,编码器-解码器模型可以利用空中批处理的后端。此外,TensorRT 10.0 中添加的减重引擎也可在 TensorRT LLM 中使用。
总结
该 NVIDIA TensorRT 10.0 版本引入了多项新功能,包括权重流、权重剥离引擎、INT4 量化和改进的内存分配。此外,它还提供了 Model Optimizer,这是一个综合库,用于在训练后和训练中循环中优化模型,以便部署到 TensorRT LLM 或 TensorRT。TensorRT LLC 继续推进 LLM 特定的优化,涵盖许多新的模型、功能和性能改进。
欲了解更多关于 TensorRT 的信息,请点击这里。