TensorRT 10.0 早该这样

新特性

  • TensorRT 10支持Nsight Deep Learning Designer 2024.1(EA)。

  • INT4 Weight Only Quantization:添加了使用INT4进行权重压缩的支持(硬件无关)。

  • lock Quantization:添加了块量化模式,允许以高粒度设置比例因子。

  • ONNX解析器在解析调用失败时返回所有可静态确定为不支持的节点的列表。错误报告包括节点名称、节点类型、失败原因以及节点所在ONNX本地函数的本地函数栈。可以使用getNbErrors()函数查询这些错误的数量,并从getError()函数获取有关单个错误的信息。

  • Debug Tensors:添加了在构建时将张量标记为调试张量的API。在运行时,每次写入张量的值时,都会调用用户定义的回调函数,并提供值、类型和维度。

  • Runtime Allocation:createExecutionContext现在接受一个指定执行上下文设备内存分配策略(kSTATIC、kON_PROFILE_CHANGE和kUSER_MANAGED)的参数。对于用户管理的分配,添加了一个新的API updateDeviceMemorySizeForShapes,用于基于实际输入形状查询所需的大小。

  • 添加了一个新的Python示例sample_weight_stripping,展示了如何从ONNX模型构建和重新拟合去除权重的引擎(building and refitting weight-stripped engines from ONNX models.)

  • 新的REFIT_IDENTICAL标志指示TensorRT构建器在优化时假定引擎将使用与构建时提供的权重相同的权重进行重新拟合。使用此标志与kSTRIP_PLAN结合可在部署场景中最小化计划大小,例如,在计划旁边发送ONNX模型中包含权重的情况下。

  • Weight Streaming:添加了新的kWEIGHT_STREAMING标志和运行时的一组新的流式传输预算API,以允许您在设备上运行比设备内存更大的strongly typed model。例如,具有32 GB权重的强类型模型可以在具有不到32 GB VRAM的设备上运行。

  • tensorrt Debian和RPM元包现在安装TensorRT Python绑定包python3-libnvinfer、python3-libnvinfer-lean和python3-libnvinfer-dispatch。以前,还需要安装python3-libnvinfer-dev(el)包以支持C++和Python。

  • V3 plugin:现在提供了一代新的TensorRT自定义层,其中插件实现IPluginV3,并且应该配有实现IPluginCreatorV3One的插件创建器。IPluginV3的新功能包括数据依赖的输出形状、形状张量输入、自定义策略和时间缓存。

  • 插件注册表已添加键值存储,允许注册和查找用户定义的资源。

  • 新的kTACTIC_SHARED_MEMORY标志允许控制TensorRT后端CUDA内核使用的共享内存预算。在共享GPU的场景中,这很有用,因为TensorRT必须与其他应用程序共享GPU。默认情况下,该值设置为设备最大显存。

参考