TensorRT – 使用TensorRT C++ SDK部署模型时推理时间波动不稳定或者推理速度越来越慢的问题
1 使用TensorRT C++ SDK部署模型推理时间不稳定或者推理速度越来越慢的问题
最近今天在使用TensorRT C++ SDK部署PaddleSeg的PPMattingV2-512模型,如果只是对单张图片进行推理的话,推理一张图片在8-10ms左右。如果对摄像头或者是视频文件进行推理,前面几十帧的推理速度还是比较正常的,但是越到后面推理速度越来越慢,并且推理时间非常不稳定,在8-25ms波动,这对后续项目实际使用影响非常大。
2 相应的解决方案
2.1 修改显卡NVIDIA设置
进入NVIDIA控制面板 ,全局设置,修改低延时模式为超高,修改电源管理模式为最高性能优先
2.2 修改显卡最大时钟频率
使用管理员模式打开cmd,不使用管理员模式打开,之后在设置时钟频率会会出现权限错误,错误如下
The current user does not have permission to change clocks for GPU 00000000:01:00.0.
Terminating early due to previous errors.
使用管理员权限打开cmd工具之后,先使用
nvidia-smi -q -d SUPPORTED_CLOCKS
命令查询当前显卡的最大频率,比如我显卡的最大时钟频率为2130MHz,
然后使用以下命令将显卡的时钟频率设置为最大的2130MHz
nvidia-smi -lgc 2130
在设置完成之后,如果要恢复原来的设置,可使用
nvidia-smi -rgc
命令进行恢复。
经过这两个步骤的设置,TensorRT的推理时间变得非常稳定,一帧图片基本上维持在8-9ms的范围内,不再出现推理时间波动以及推理速度越来越慢的问题。
2.3 Windows系统设置无分页内存
还有网上的博文介绍了一种方式是在Windows上对系统设置无分页内存,进入高级系统设置页面,就是设置系统环境变量那个页面
然后选择高级-设置
在性能选项中再选择高级-虚拟内存-更改
设置选择系统盘,选择无分页文件,点击确定,然后重启电脑。
这个方法我没有测试,不过想一下这样设置的原因是,虚拟内存是Windows上从硬盘划一块控件当做内存使用,其读写速度就只是硬盘的读写速度。如果在TensorRT推理的过程中,内存与显卡交互时使用到了虚拟内存,那么显卡和内存之间的数据拷贝将会以硬盘的速度进行传输,所以会极大的增大推理时间。如果设置成无分页内存也就是说不使用虚拟内存,所以就不会出现上述情况,使得数据只会在内存与显存之间进行传输,从而不会影响推理时间。
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:TensorRT – 使用TensorRT C++ SDK部署模型时推理时间波动不稳定或者推理速度越来越慢的问题
原文链接:https://www.stubbornhuang.com/2721/
发布于:2023年07月07日 9:13:49
修改于:2023年07月07日 9:13:49
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52