Toybrick

设置了rknn_batch_size后,推理出现段错误

11111qq

新手上路

积分
23
楼主
发表于 6 天前    查看: 182|回复: 3 | [复制链接]    打印 | 只看该作者
我用一个双模态的onnx模型(这个onnx模型是一个batch_size=1的静态模型)成功量化转成了rknn模型,进行板端rknn_lite推理时也没有问题(batch_size=1),能够得到正常的mAP。但是我用其他批次比如2,4,8推理这个rknn模型,虽然能成功运行,但是得到的mAP就会有很大的波动,不准确了。

我现在想要推理不同批次的rknn模型,是需要在构建rknn模型的时候设置rknn_batch_size参数把?
我设置rknn_batch_size=2之后放到rk3588板子上推理会经常出现Segmentation fault,但也不是每次都会出现Segmentation fault,偶尔也能运行完,但得到的mAP也是不准确的。




回复

使用道具 举报

jefferyzhang

版主

积分
14354
沙发
发表于 5 天前 | 只看该作者
设2就一定要传递2,他其实就只是一个新的维度的输入,nhwc,那你这四个维度就必须是固定的长度和空间,否则访问就会越界。
建议你用batch_size=1就好了,n=2时候就是推理两次而已,设置多了并不会有更高的推理效率提升
回复

使用道具 举报

11111qq

新手上路

积分
23
板凳
 楼主| 发表于 前天 10:20 | 只看该作者
jefferyzhang 发表于 2025-3-7 11:01
设2就一定要传递2,他其实就只是一个新的维度的输入,nhwc,那你这四个维度就必须是固定的长度和空间,否则 ...

在rk3588上的多batch_size和batch_size=1的性能是差不多的吗?
我设置rknn_batch_size=2时,传进去的输入数据是固定的,shape都是是(2,3,640,640),输出的out是(2,25200,11),输入输出尺寸和pytorch模型是一样的,应该没问题把?为什么会出现Segmentation fault,您能讲一下可能是什么原因引起的吗,是npu内存分配的原因,内存不够,还是需要修改前后处理代码?我是在板端直接推理的,用的rknn_lite
回复

使用道具 举报

jefferyzhang

版主

积分
14354
地板
发表于 前天 10:50 | 只看该作者
11111qq 发表于 2025-3-10 10:20
在rk3588上的多batch_size和batch_size=1的性能是差不多的吗?
我设置rknn_batch_size=2时,传进去的输入 ...

我不是npu的开发者,无法就靠字面问题解释具体原因,段错误可以自己用gdb跟下,或者全部更新到最新版本再试。

性能方面我个人觉得是一样的,因为3588有3个npu核,你一个个图送和一次性送3张,耗费的时间是一样的,甚至有可能你在等待准备三张图的过程耗费时间还更多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表