modelbox线程爆满宕机bug

该bug的解决需要特别感谢张同学。有了大佬的帮助,这个bug才得以解决。

问题现象

modelbox可以进行模型推理,但压测一段时间后,modelbox会宕机,并发生段错误。

“libgomp: Thread creation failed: Resource temporarily unavailable”

执行ps -eLf | wc -l发现线程数爆满,达到了3万个,说明在请求期间线程不断被创建,但没有被回收。下图是用并发数为1的请求连续压测modelbox,令modelbox持续执行推理10秒后打印的线程数,已经达到了14230个线程。

说明连续的请求会令modelbox创造很多新线程,但它们被服务后并没有被回收。

探究

笔者用的是modelbox官方在公司内网提供的基础镜像。为了试出错误原因,做过如下尝试:

尝试更换了基础镜像。在develop和runtime镜像之间切换,并不能解决问题。而且笔者使用的镜像版本发布于23年11月,不至于太旧。

更换过pytorch版本,官方推荐的pytorch版本有1.8,1.11和2.1,笔者用的是pytorch 1.11,与基础镜像中的python3.7相匹配,但pytorch2.1需要python3.8,与基础镜像包含的版本不匹配。因此最终没有更换pytorch版本。

更换torch_npu版本。从torch_npu的release界面可知,该插件1.11.0的小版本有从post1到post6,比如下图的torch_npu-1.11.0.post6-cp37-cp37m-linux_aarch64.whl

官方本来推荐使用与1.11.0搭配的是post1,笔者尝试换成了post6。发现并不能解决问题,而且还会引发版本不兼容的bug。

[2023-12-12 11:30:45,809][ERROR][ flow.cc:537 ] build graph failed, Invalid argument, build graph failed, please check graph config. -> open flowunit ‘infer’, type ‘cpu’ failed. -> import infer@InferFlowUnit failed: ImportError: /usr/local/lib64/python3.7/site-packages/torch_npu/lib/libtorch_npu.so: undefined symbol: _ZNK5torch8autograd4Node4nameEv

更换了所有依赖版本都无效,顺便发现该问题与tensor.npu()的调用相关:

  • 如果调用tensor.npu()相关的代码,线程就会爆满。
  • 如果去掉模型推理和.npu()相关代码,该问题就会消失。

或许tensor.npu()的执行时间长,会触发modelbox某种机制,令线程数自动扩容?

解决办法

从modelbox git仓库的issue,add: max_executor_thread_num 可见,官方在23年9月为modelbox的配置文件加了个参数max_executor_thread_num,添加后,执行线程池的容量会有所限制,避免无限增长。

设置方式如下,需要修改graph的.toml文件,加一个参数max_executor_thread_num=1,就可以限制线程无限增长了。这个数值之后可以再调整为10或100,优化性能。

[graph]
max_executor_thread_num=1
graphconf = """
digraph model_inference {

修改后重启容器,能在框架启动时的日志中看到该参数被打印。
请添加图片描述

压测一段时间后,线程数被控制住了,该问题终于被解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOS多屏状态栏位置不固定,程序坞不小心跑到副屏

目录 方式一:通过系统设置方式二:鼠标切换 MacOS多屏状态栏位置不固定,程序坞不小心跑到副屏 方式一:通过系统设置 先切换到左边 再切换到底部 就能回到主屏了 方式二:鼠标切换 我的两个屏幕放置位置如下 鼠标在…

OpenCV imencode 函数详解与应用示例

OpenCV imencode 函数详解与应用示例 介绍imencode 函数的基本信息示例代码应用场景 介绍 OpenCV是一个强大的计算机视觉库,提供了许多图像处理和分析的工具。imencode函数是其中之一,用于将图像编码为指定格式的字节流。这个函数对于图像的存储、传输和…

实验03:OSPF配置网络实验

1.实验目的: 本实验的主要目的是了解OSPF协议的基本概念、OSPF网络的配置及验证,通过实验来掌握OSPF协议的工作原理、配置方法、路由表的生成过程等。 2.实验内容: 设计一个拓扑结构,并在网络设备上进行配置;配置OS…

架构简洁之道有感,谈谈软件组件聚合的张力

配图由腾讯混元助手生成 这篇文章介绍了软件架构设计中组件设计思想,围绕“组件间聚合的张力”这个有意思的角度,介绍了概念,并且结合架构设计示例对这个概念进行了进一步阐述。 组件聚合?张力?这标题,有种…

华为HCIP认证H12-821题库下

26、6.交换技术核心知识 (单选题)某交换机运行RSTP协议,其相关配置信息如图所示,请根据命令配置情况指出对于Instance 1,该交换机的角色是: A、根交换机 B、非根交换机 C、交换机 D、无法判断 正确答案是&…

本地计算机连接两个Github账号

两个Github账号与本地计算机连接 注册Github账号Git的下载与安装生成SSH密钥为Github账户设置SSH Key编辑config文件连接Github仓库其它命令 注册Github账号 注册两个Github账号。这一步很简单,跟注册其它账号差不多。 Git的下载与安装 下载地址:http…

在C++中->运算符

在C中,->是一个运算符,称为成员访问运算符(Member Access Operator)。它用于通过指针访问对象的成员(变量或函数)。 下面是对->运算符的详细解释: 语法: pointer->member …

汽车锁行业分析:市场销量接近1700万台

汽车防盗锁根据技术原理基本上可划分为三类:机械防盗锁、电子防盗报警锁、联网的防盗抢(定位、跟踪)系统。汽车发动机防盗逻辑,点火开关打开时,钥匙转发器与防盗控制器形成首次信息交汇,钥匙与芯片互会识别码不同,防盗…

SQAlchemy 第二篇

使用数据库元数据 SQLAlchemy 中数据库元数据最常见的基础对象称为 MetaData、Table和Column。下面的部分将说明如何在面向 Core 的风格和面向 ORM 的风格中使用这些对象。 使用表对象设置元数据 当我们使用关系数据库时,我们查询的数据库中的基本数据保存结构称…

php使用OpenCV实现从照片中截取身份证区域照片

<?php // 获取上传的文件 $file $_FILES[file]; // 获取文件的临时名称 $tmp_name $file[tmp_name]; // 获取文件的类型 $type $file[type]; // 获取文件的大小 $size $file[size]; // 获取文件的错误信息 $error $file[error]; // 检查文件是否上传成功 if ($er…

Linux 服务管理和配置

这篇主要是围绕 systemd 的管理和配置&#xff0c;有新的认识会持续更新 一、服务管理 Centos 7 及后续版本 systemd # 无需重启&#xff0c;重新加载服务 一般用于配置文件变更后 systemctl reload daemon # 服务的开机自启动管理 systemctl enable/disable daemon # 服务状…

阶段五:深度学习和人工智能(学习人工智能的应用领域,如自然语言处理,计算机视觉等)

Python是人工智能领域最流行的编程语言之一&#xff0c;它具有简单易学、功能强大、库丰富等优点&#xff0c;因此在自然语言处理、计算机视觉等领域得到了广泛应用。 自然语言处理 自然语言处理是人工智能领域的一个重要分支&#xff0c;它主要研究如何让计算机理解和处理人…

Matlab绘图添加背景色,动态添加背景

Matlab绘图添加背景色&#xff0c;动态添加背景 有没有小伙伴想过绘制这种有背景的曲线图呢&#xff1f;因为矩形是背景&#xff0c;所以要先绘制&#xff0c;然后再绘制曲线&#xff0c;因此&#xff0c;最先想到的思路可能是&#xff1a;先绘制三个背景矩形&#xff0c;然后填…

编译Sqlite3记录

下载源文件&#xff1a; 下载地址&#xff1a;SQLite Download Page 打开QtCreator创建新的工程&#xff0c;选择纯C工程&#xff0c;将main.c删除&#xff0c;将下载的源码解压后的文件复制到并添加到工程中&#xff0c;其中的文件包括&#xff1a;sqlite3ext.h、sqlite3.h、…

云原生之深入解析网络服务Istio、eBPF和RSocket Broker

一、服务治理 ① “服务治理”简介 在微服务时代&#xff0c;一个复杂的应用程序被分解为多个组件化、协作和连接的单元&#xff0c;服务往往会承担越来越多的业务责任&#xff0c;这使得服务治理的难度前所未有&#xff0c;仅仅依靠微服务框架级的治理是不够的&#xff0c;构…

vivado约束方法4

时序约束向导 定时约束向导确定合成或上缺少的定时约束实现的设计。它分析了网表、时钟网络连接和现有的定时限制&#xff0c;以便根据《超快设计方法指南》提供建议用于FPGA和SoC&#xff08;UG949&#xff09;。以下11涵盖了三类约束页面&#xff0c;然后是摘要。包括以下步…

uni-app地图标点展示

使用微信小程序框架编写的。它包含一个模板部分和一个脚本部分。 模板部分: <template>: 这是微信小程序中用来定义页面结构的标签。<view>: 微信小程序的基本组件&#xff0c;用来展示内容或布局。<view class"page-body">: 定义了一个页面主体部…

【论文解读】ICLR 2024高分作:ViT需要寄存器

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2309.16588 摘要&#xff1a; Transformer最近已成为学习视觉表示的强大工具。在本文中&#xff0c;我们识别并表征监督和自监督 ViT 网络的特征图中的伪影。这些…

福德机械:植保无人机的领航者

亲爱的读者们&#xff0c;欢迎来到福德机械的神奇世界。在这个充满活力和创新的世界里&#xff0c;我们专注于植保无人机的发展与应用&#xff0c;以实现农业现代化、智能化和高效化的目标。植保无人机&#xff0c;作为一种高效、环保和安全的农业工具&#xff0c;已经逐渐成为…

VR播控系统深耕VR教学领域,助力开启未来新课堂

作为提升教育质量的技术之一&#xff0c;VR技术已经逐渐成为培养新一代人才、提升教学质量的重要方式&#xff0c;相比于传统教育&#xff0c;VR技术在教学方面的应用&#xff0c;所带来的变化和效果提升都是非常明显的&#xff0c;尤其是VR播控系统的上线&#xff0c;作为VR教…