当前位置: 首页 > news >正文

在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏(下)

接上篇

在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏(上)

通过上篇的分析,发现问题在采集数据到传入GPU之前的阶段。但随着新一轮长时间测试发现,问题依然存在。

在这里插入图片描述
如上图,在运行20多分钟内存开始增长,这个增长只要一开始就会持续直到程序直接卡掉。于是又开启新一轮的排查。

首先,控制变量,使用YOLO12s-DET的engine模型进行推理测试,内存增长情况如下图:在7000s(近两个小时的测试中),内存都在平稳无变化。
在这里插入图片描述
于是,继续摸排问题,发现同样的前处理,YOLO12-DET是没有问题,再加上上图的内存无变化情况,便排除前处理部分。

再次来到后处理及检测结果转换部分的内容,😓,饶了一圈再次回来。只能说抓住本质才是解决问题的唯一方法。

由于有之前的经验,没有再使用memory_profiler这个工具进行后处理各个部分的内存异常监测。这次我采用比较原始的方法,因为经过多次测试发现了一个内存开始增长的现象,就是只要程序一旦卡顿,内存就开始增长。

在这么做之前,把所有可能的结果都是尝试了,结果无一解决这个问题。包括及时释放变量内存、定时强制清理内存等等。

然后,把问题范围缩小到当前的后处理代码部分,以及避开内存监测工具。

现在就采用打断电的方式,再次测试等到程序卡顿现象出现。打断点就是在可以代码前面加一行输出。

print("this is fun1.")
def fun1print("this is fun2.")
def fun2

等到程序停到这里不动的时候就可定定位到程序卡在哪一步了。

很快,程序很快就卡在bbox_iou这里了。程序在这里停住了,然后内存开始持续增长。
在这里插入图片描述

进一步打断点,发现程序在bbox_iou的while循环里面空转。
在这里插入图片描述
随即对该死循环进行特殊处理,最新测试如下,5000s内无异常。至此该问题得到解决。
在这里插入图片描述

http://www.dtcms.com/a/318764.html

相关文章:

  • Redis为什么要引入多线程?
  • 如何在GPU上安装使用Docker
  • 【AI】——SpringAI通过Ollama本地部署的Deepseek模型实现一个对话机器人(二)
  • 用 tcpdump 捕获网络数据包
  • RTSP播放器技术详解:功能支持、平台覆盖与快速集成指南
  • PostgreSQL 强制索引:当重复数据让优化器“失明”时的解决方案
  • centos系统sglang单节点本地部署大模型
  • Sklearn 机器学习 数据降维PCA 自己实现PCA降维算法
  • 如何打造一支AI时代下的IT团队,为企业战略目标快速赋能
  • Java面试宝典:JVM的垃圾收集算法
  • MCU中的晶振(Crystal Oscillator)
  • 【Zephyr】02_从零教你开发芯片级ADC驱动(HAL层篇)
  • 每日五个pyecharts可视化图表-bars(6)
  • 嵌入式硬件中MOSFET基本原理与实现
  • 基于 Socket.IO 实现 WebRTC 音视频通话与实时聊天系统(Spring Boot 后端实现)
  • C语言中级_动态内存分配、指针和常量、各种指针类型、指针和数组、函数指针
  • MATLAB科研数据可视化
  • cuda编程笔记(13)--使用CUB库实现基本功能
  • 嵌入式硬件中MOSFET基本控制详解
  • 嵌入式硬件学习(十一)—— platform驱动框架
  • OpenAI 开源模型 GPT-OSS深度拆解:从1170亿参数到单卡部署,重构AI开源生态
  • 亚马逊采购风控突围:构建深度隐匿的环境安全体系
  • 360纳米AI、实在Agent、CrewAI与AutoGen……浅析多智能体协作系统
  • LabVIEW实验室测试框架
  • 《深入浅出 Django ORM:设计理念与惰性查询实现详解》
  • 炫酷圆形按钮调色器
  • 共识算法介绍
  • macOS 彻底卸载 Python 的完整指南
  • Mac+Chrome滚动截图
  • mac中多版本JDK配置和切换