欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 【TensorRT】TensorRT C# API 项目更新 (2):优化安装方式和代码

【TensorRT】TensorRT C# API 项目更新 (2):优化安装方式和代码

2025/3/12 22:11:02 来源:https://blog.csdn.net/grape_yan/article/details/139937628  浏览:    关键词:【TensorRT】TensorRT C# API 项目更新 (2):优化安装方式和代码

1. 项目介绍

   NVIDIA® TensorRT™ 是一款用于高性能深度学习推理的 SDK,包括深度学习推理优化器和运行时,可为推理应用程序提供低延迟和高吞吐量。基于 NVIDIA TensorRT 的应用程序在推理过程中的执行速度比纯 CPU 平台快 36 倍,使您能够优化在所有主要框架上训练的神经网络模型,以高精度校准低精度,并部署到超大规模数据中心、嵌入式平台或汽车产品平台。

  TensorRT 基于 NVIDIA CUDA® 并行编程模型构建,使您能够在 NVIDIA GPU 上使用量化、层和张量融合、内核调整等技术来优化推理。TensorRT 提供 INT8 使用量化感知训练和训练后量化和浮点 16 (FP16) 优化,用于部署深度学习推理应用程序,例如视频流、推荐、欺诈检测和自然语言处理。低精度推理可显著降低延迟,这是许多实时服务以及自主和嵌入式应用所必需的。TensorRT 与 PyTorch 和 TensorFlow 集成,因此只需一行代码即可实现 6 倍的推理速度。TensorRT 提供了一个 ONNX 解析器,因此您可以轻松地将 ONNX 模型从常用框架导入 TensorRT。它还与 ONNX 运行时集成,提供了一种以 ONNX 格式实现高性能推理的简单方法。

  基于这些优势,TensorRT目前在深度模型部署应用越来越广泛。但是TensorRT目前只提供了C++与Python接口,对于跨语言使用十分不便。目前C#语言已经成为当前编程语言排行榜上前五的语言,也被广泛应用工业软件开发中。为了能够实现在C#中调用TensorRT部署深度学习模型,我们在之前的开发中开发了TensorRT C# API。虽然实现了该接口,但由于数据传输存在问题,当时开发的版本在应用时存在较大的问题。

  基于此,我们开发了TensorRT C# API 2.0版本,该版本在开发时充分考虑了上一版本应用时出现的问题,并进行了改进。同时在本版本中,我们对接口进行了优化,使用起来更加简单,并同时提供了相关的应用案例,方便开发者进行使用。

  • TensorRT C# API 项目源码:
https://github.com/guojin-yan/TensorRT-CSharp-API.git
  • TensorRT C# API 项目应用源码:
https://github.com/guojin-yan/TensorRT-CSharp-API-Samples.git

2. 更新回顾

  由于该项目目前还没有完全开发完成,为了更好的方便大家使用,因此会在最新更新后提供给大家最新的资讯。如果大家在使用时有任何疑问,可以阅读之前发布的技术博客:

  • 技术博客一:《最新发布!TensorRT C# API :基于C#与TensorRT部署深度学习模型》

    分享了更新版的TensorRT C# API 相关信息,并对扩展接口进行改进,优化哦了模型推理数据加载方式,很大程度上压缩了数据处理时间;同时分型了最新版本的详细使用流程,以及提供了配套的使用案例,方便开发者们进行使用。

  • 技术博客二:《TensorRT C# API 项目更新 (1):支持动态Bath输入模型推理》

​ 支持了动态模型输入,此处主要是指的是动态Bath,更新了对动态输入模型的支持,

该项目在推出后,得到了大家而广泛支持,但也有不少开发者在使用中碰到了许多相关问题,因此针对这些问题,我们对内容进行了更新,主要更新了一下内容:

  • 项目配置方式:简化了项目配置流程,安装好相关依赖后,用户只需要下载代码文件便可以运行,无需再进行项目配置;
  • 优化了推理方式:优化了底层推理接口,使模型推理更加稳定。

3.项目配置方式

  项目中主要是需要开发者安装CUDA、CUDNN以及TensorRT,其中CUDA、CUDNN是我们开发者常用的库,相信大家也都已经安装过,如果没有安装过CUDA、CUDNN,可以自行百度教程进行安装,CUDA、CUDNN安装完成后,会在系统中增加相应的环境变量,如下图所示:

image-20240621125434413

  因此为了方便后续的项目配置,我们在安装TensorRT时,也需要将TensorRT相应的文件放在该目录下。

3.1 TensorRT下载

  下面我们下载对应版本的TensorRT,首先查看本电脑的CUDA版本,如上图中,CUDA_PATH_V12_2说明我们安装的CUDA版本版本是12.2,接下来访问下面链接进行下载

https://developer.nvidia.com/tensorrt/download

  进入到下载页面后,选择8.x系列,目前只支持8.x系列及以下系列,暂时不支持10.x系列。然后根据自己的CUDN版本选择对应的包进行下载,如下图所示:

image-20240621141234437

3.2 配置TensorRT库

  下载完成后解压到本地,如下图所示:

image-20240621144338464

  接下来将下载好的TensorRT部分内容复制到CUNDN目录下,主要是复制TensorRT目录下的includelib两个文件夹到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2目录下,具体目录根据自己的CUDA安装位置有关,如下图所示:

image-20240621144618124

  最后将lib目录下中的TensorRT的dll文件,全部复制到上级目录下的bin文件夹下,如下图所示:

image-20240621145023055

  到此为止,我们已经完全配置好了TensorRT,下面演示如何使用最新的项目生成本机运行的项目。

3.3 编译C++项目

  首先第一步下载项目源码,使用Git命令将源码下载到本地,如下图所示

git clone https://github.com/guojin-yan/TensorRT-CSharp-API.git

  然后使用Visual Studio 2022打开解决方案文件,如下图所示:

  该解决方案中包含两个项目,一个是C++项目,该项目是封装的TensorRT接口,将接口封装到动态链接库中;另一个是C#项目,该项目是读取动态链接库中的C++接口,然后重新封装该接口。

  最新的项目中我们将动态链接库、包含目录内知道项目中,开发者无需再进行重新配置,只要保证上文中CUDA、CUDNN以及TensorRT正确安装即可。所以下载完代码后,直接生成C++项目,此处选择生成,不要选择运行,如下图所示:

  最终可以看出生成的动态链接库文件名称以及文件路径。

  下面有一点后面我们需要注意,在后面使用时,我们需要将此处生成的dll文件复制到程序运行目录下。

3.4 编译C#项目

  接下来编译C#项目,C#项目此处也无须再修改,我们此处添加的是dll文件的绝对路径,因此在使用时,需要将上文生成的dll文件复制到运行目录下。如鼓励开发者觉得比较麻烦,依旧可以跟之前一样,只需要修改一下位置即可,修改NativeMethods.cs文件中的dll文件路径,该路径及上一步中C++项目生成的动态链接库文件,如下图所示:

image-20240621154308100

  接下来就可以运行C#项目,生成类库文件,如下图所示:

image-20240621154227766

  此处我们同时生成了.NET FrameWork 4.6、.NET FrameWork 4…72、.NET FrameWork 4.8、.NET 8.0、.NET 6.0、.NET 5.0、.NET 3.1,用户在后续使用时,根据生成版本进行选择即可。

  编译好该项目后,开发者后续便可以进行使用,使用方式与之前版本一致,此处不再进行赘述。

4. 程序运行稳定性测试

  之前在使用中有用户反馈模型推理在长时间运行时,推理时间波动较大,且再推理视频时,推理一段时间后,推理速度会有明显下降,对此,我们修改了底层源码,修复了这个问题,并进行了测试,如下图所示:

0d79b2203253ca815db43e8ab4b7e0ca

  此处测试了视频推理,以YOLOv8s为例,记录了视频前1500帧,可以看出。在修复后,模型推理时间趋于稳定,在7~10ms范围内波动,波动范围只有3ms,没有出现速度下降等问题。

5. 总结

  在本次更新中,我们针对开发者在使用过程中发出现的相关问题进行了更新,并优化了项目安装方式,方便开发者快速上手使用。最后如果各位开发者在使用中有任何问题,欢迎大家与我联系。

个人账号 - 2

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词