AI 加速器接口 (AI2) – NVIDIA® TensorRT

接口: TensorRT
修订: 21.05.2.1
日期: Apr 20, 2023

一般情况

本页提 NVIDIA® TensorRT SDK 的 HALCON AI2 接口文档。
注册 客户可从 MVTec WWW 服务器下载该接口的最新版本。自 HALCON 21.05 版起,该接口已成为 HALCON 软件包本身的一部分。

该 AI2 接口可用于在支持的硬件,尤其是 NVIDIA® GPUs上执行优化推理。

系统要求

功能

安装

局限性

算子

下文将详细介绍 TensorRT 插件在 HALCON 算子集中的使用。本文件重点解释 TensorRT HALCON AI2 接口的特定参数。如需了解更多信息,请参阅 HALCON 算子文档。

算子 set_dl_device_param

本节描述了可使用 set_dl_device_param(..., [], GenParamValue) 配置的插件特定设备控制参数。请注意,可以使用 get_dl_device_param(..., 'settable_device_params', ...) 查询这些参数的当前值(以字典形式)。
参数 类型 描述
'log_level' ['info', 'warn', 'error', 'none'] 字符串 配置与插件相关的所有操作的当前日志级别。请注意,该配置实际上对整个插件都有效,并不局限于设置该配置的设备。日志还包括 TensorRT SDK 本身生成的信息。
日志的默认值("error")也可以通过 "HAI2_TENSORRT_LOG "环境变量进行调整。
生成的日志将通过 HALCON 的低级错误机制(请参阅 set_system('do_low_error',...))传送。
注意:该参数可(作为字典项)使用
'verbose_log_enabled' ['false', 'true'] 字符串 配置是否启用 TensorRT SDK 的详细日志记录(在使用 "log_level" 参数配置的常规日志记录之外)。在调试与模型优化和/或推理有关的特定问题时,可能会用到冗长日志。
请注意,该配置实际上对整个插件都有效,并不局限于通过它进行设置的设备。
生成的日志将通过 HALCON 的低级错误机制(请参阅 set_system('do_low_error',...))传送。
注:该参数可(作为字典项目)使用:
'profiler_enabled' ['false', 'true'] 字符串 配置是否将推理剖析器信息附加到日志中("info" 级别)。主要供内部使用,或在调试自建网络架构时使用(与 HALCON 随附的模型相反)。
注:该参数可(作为字典项目)使用:

算子 get_dl_device_param

本节介绍插件特定的设备信息参数,这些参数通过字典报告,只读参数使用 get_dl_device_param(..., 'info', ...) 查询,可读写参数使用 get_dl_device_param(..., 'settable_device_params', ...) 查询。
请注意,这些参数的一部分(全部在下文中突出显示)与 optimize_dl_model_for_inference 算子输出的 ConversionReport 字典共享(在这种情况下,字典中包含有关转换所用设备的信息)。这些信息旨在帮助优化后的模型与兼容设备进行匹配——TensorRT 使用特定设备优化的模型应始终在相同的 GPU 模型上执行。当模型只优化一次并将结果序列化/存储以便以后重复使用时,这个问题就变得非常重要——在这种情况下,选择合适的推理设备就变得非常重要。
参数 类型 描述
'tensorrt_version' <version string> 字符串 报告扩展的 TensorRT 版本字符串,包括所用 CUDA 和 cuDNN 库的版本。格式为 TENSORRT-CUDA-CUDNN(例如,8.0.3.4-11.3-8.2 代表 TensorRT 8.0.3.4 以及 CUDA 11.3 和 cuDNN 8.2)。
注意:该输出参数在两种情况下共享(作为字典项):
'plugin_version' <version string> 字符串 报告正在使用的插件版本。
注意:该输出参数在两种情况下共享(作为字典项):
'device_name' <device name> 字符串 报告由 CUDA 报告的 GPU 设备名称。
注意:该输出参数在两种情况下共享(作为字典项):
'compute_version' <version string> 字符串 报告 GPU 设备的 CUDA 计算能力版本。
注意:该输出参数在两种情况下共享(作为字典项):
'device_global_mem_mb' <megabytes> 整数 报告 GPU 设备上可用的全局内存大小(单位:MB)。
注意:该输出参数在两种情况下共享(作为字典项):
'driver_supported_cuda_version' <version string> 字符串 报告当前连接到 GPU 设备的驱动程序所支持的最新 CUDA 版本。
Note: available (as a dictionary item) through get_dl_device_param(..., 'info', ...)
'has_fast_fp16' 'false', 'true', 'unknown' 字符串 指示设备是否支持快速本地 fp16 精度计算的标志。
注:可通过 get_dl_device_param(..., 'info', ...) 获取(作为字典项)。
'has_fast_int8' 'false', 'true', 'unknown' 字符串 指示设备是否支持快速本地 int8 精度计算的标志。
注:可通过 get_dl_device_param(..., 'info', ...) 获取(作为字典项)。
'has_fast_tf32' 'false', 'true', 'unknown' 字符串 指示设备是否支持 tf32 精度计算的标志。
注:可通过 get_dl_device_param(..., 'info', ...) 获取(作为字典项)。
'log_level' ['info', 'warn', 'error', 'none'] 字符串 配置与插件相关的所有操作的当前日志级别。请注意,该配置实际上对整个插件都有效,并不局限于设置该配置的设备。日志还包括 TensorRT SDK 本身生成的信息。
其默认值("error")也可以通过 "HAI2_TENSORRT_LOG" 环境变量进行调整。
生成的日志将通过 HALCON 的低级错误机制(请参阅 set_system('do_low_error',...))传送。
注:该参数可(作为字典项目)使用:
'verbose_log_enabled' ['false', 'true'] 字符串 配置是否启用 TensorRT SDK 的详细日志记录(在使用 "log_level" 参数配置的常规日志记录之外)。在调试与模型优化和/或推理有关的特定问题时,可能会用到冗长日志。
请注意,该配置实际上对整个插件都有效,并不局限于通过它进行设置的设备。
生成的日志将通过 HALCON 的低级错误机制(请参阅 set_system('do_low_error',...))传送。
注:该参数可(作为字典项目)使用:
'profiler_enabled' ['false', 'true'] 字符串 配置是否将推理剖析器信息附加到日志中("info" 级别)。主要供内部使用,或在调试自建网络架构时使用(与 HALCON 随附的模型相反)。
注:该参数可(作为字典项目)使用:

算子 optimize_dl_model_for_inference

本节介绍 optimize_dl_model_for_inference 算子支持的输入/输出参数。
可用于调整优化函数的输入参数通过算子的 "GenParam" 参数(作为名称/值字典)传递给运算子可以使用 get_dl_device_param(..., 'optimize_for_inference_params', ...) 获取这些参数的默认设置——通过实际优化将在哪个设备上执行。
输出参数提供了所执行优化的相关信息,包括所使用的设备/环境,这些参数将从算子(作为名称/值字典)的 "ConversionReport" 参数中返回。请注意,这些参数的一部分与同名设备信息参数 get_dl_device_param(..., 'info', ...) 相对应。
参数 类型 描述
'tensorrt_version' <version string> 字符串 报告扩展的 TensorRT 版本字符串,包括所用 CUDA 和 cuDNN 库的版本。格式为 TENSORRT-CUDA-CUDNN(例如,8.0.3.4-11.3-8.2 代表 TensorRT 8.0.3.4 以及 CUDA 11.3 和 cuDNN 8.2)。
注意:该输出参数在两种情况下共享(作为字典项):
'plugin_version' <version string> 字符串 报告正在使用的插件版本。
注意:该输出参数在两种情况下共享(作为字典项):
'device_name' <device name> 字符串 报告由 CUDA 报告的 GPU 设备名称。
注意:该输出参数在两种情况下共享(作为字典项):
'compute_version' <version string> 字符串 报告 GPU 设备的 CUDA 计算能力版本。
注意:该输出参数在两种情况下共享(作为字典项):
'device_global_mem_mb' <megabytes> 整数 报告 GPU 设备上可用的全局内存大小(单位:MB)。
注意:该输出参数在两种情况下共享(作为字典项):
'max_workspace_size' <bytes> 整数 配置 TensorRT SDK 在优化模型(准备推理)时使用的工作区大小。
默认值是根据我们对实际 GPU 设备(尤其是其内存容量)的最佳猜测选定的。我们建议保留建议的默认值,除非在优化特定型号时遇到内存不足的问题。
重要:另见 局限性 中的相应讨论。
注:可通过 optimize_dl_model_for_inference(..., GenParam, ...) 获取该输入参数(作为字典项)。
'parse_verbosity' [0..3] 整数 配置 TensorRT ONNX 解析器的冗余度。支持的值为 0(内部错误)、1(错误)、2(警告)、3(信息)。
还必须使用 set_dl_device_param 算子,通过 "log_level" 参数启用相应的日志级别。
注:可通过 optimize_dl_model_for_inference(..., GenParam, ...) 获取该输入参数(作为字典项)。

算子 query_available_dl_devices

要查询所有可用的 TensorRT 插件兼容设备,请指定 "tensorrt" 为所需加速器接口:

参数 类型 描述
'ai_accelerator_interface' 'tensorrt' 字符串 以 DLDeviceHandles 的形式返回所有可用的 TensorRT 插件设备。请注意,使用 TensorRT 插件时,每个设备既可用于模型优化,也可用于实际推理。实际上,优化后的模型应始终在同一设备(或基于同一 GPU 模型的设备)上执行。

HDevelop 示例

以下示例说明了 TensorRT 推理插件的使用(参见 HALCON 安装目录树中的 examples/hdevelop/Deep-Learning):

第三方库的使用

该插件依赖于 NVIDIA® TensorRT 和 CUDA® 以及其他第三方库。请参阅与插件包一起分发的 third_party_tensorrt.txt 文件中的完整列表,包括版权和许可信息。
以下链接也可作为获取相应许可证信息的替代方法:

发行说明


关于超链接的免责声明: 用户可通过本页面的超文本链接访问外部非 MVTec 网站。任何此类访问均应理解,非 MVTec 网站的内容不受 MVTec Software GmbH 的控制,MVTec Software GmbH 对此类网站不作任何陈述,用户应自行承担风险。MVTec Software GmbH 不对外部非 MVTec 网站的隐私保护措施或内容负责。
版权说明: © MVTec Software GmbH 版权所有。保留所有权利。除非另有说明,本页面内容的版权和类似权利,包括但不限于此处出现的所有文本、设计和图像,均为 MVTec Software GmbH 所拥有的版权作品。"MVTec Software GmbH" 和 "HALCON" 是 MVTec Software GmbH 的注册商标。
英特尔®、英特尔®徽标、OpenVINO™ 和 OpenVINO™ 徽标是英特尔®司或其子公司的商标。所有其他国家和国际公认的商标和商号均在此得到承认。
此处提及或使用的所有其他品牌名称、设计、服务标志和商标(无论是否注册)均为其各自所有者的财产。