Toybrick

楼主: mailonghua

请问RK1808S计算棒能够支持并行推理吗

jefferyzhang

版主

积分
13572
11#
发表于 2019-11-8 14:17:22 | 只看该作者
几头米 发表于 2019-11-8 11:17
你好,请问后续会考虑加入动态batch_size支持吗, 类似NNIE

理论上是不会支持的,加载模型时候需要知道参数和运算单元数量,并且客户也没有这种场景需求。
会变化batch size不如你搞成1个batch就是了,多batch在复杂模型上并不会提高资源利用率。
回复

使用道具 举报

mailonghua

注册会员

积分
78
12#
 楼主| 发表于 2019-11-8 15:08:39 | 只看该作者
jefferyzhang 发表于 2019-11-8 14:13
多图推理:http://t.rock-chips.com/forum.php?mod=viewthread&tid=929

谢谢,这个刚才有参考修改模型(使用了提供的mobilenet_v1的test case),但是出现了警告,从total time上看好像还是只推理了一张图片,唯一不同的是输入是个彩色图片(3通道),而ex是灰度图片,这并不影响吧?
报出的警告如下:
--> Init runtime environment
done
--> Running model
W RKNNAPI: warning: inputs[0] expected input len is 150528, but actual len is 451584!
----------------------------------------
[array([[0.        , 0.        , 0.        , ..., 0.        , 0.        ,
        0.00028157]], dtype=float32)]
----------------------------------------
done
--> Begin evaluate model performance
W RKNNAPI: warning: inputs[0] expected input len is 150528, but actual len is 451584!
========================================================================
                               Performance                              
========================================================================
Total Time(us): 7679
FPS: 130.23
========================================================================

主要将输入进行了修改如下:
# Set inputs
      img = cv2.imread('./dog_224x224.jpg')
      img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
      img = cv2.resize(img,(224,224),interpolation = cv2.INTER_AREA)
   
      img1 = cv2.imread('./dog.jpg')
      img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
      img1 = cv2.resize(img1,(224,224),interpolation = cv2.INTER_AREA)
   
      img2 = cv2.imread('./dog1.jpg')
      img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
      img2 = cv2.resize(img2,(224,224),interpolation = cv2.INTER_AREA)                        
   
      img3 = cv2.imread('./dog2.jpg')
      img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2RGB)
      img3 = cv2.resize(img3,(224,224),interpolation = cv2.INTER_AREA)
   
     image_array=[]
     image_array.append(img1)
     image_array.append(img2)
     image_array.append(img3)
  
     #im = img3.reshape(224,224,3)
     #image_array.append(im)
  
     mat = np.array(image_array).reshape(3,224,224,3)
回复

使用道具 举报

jefferyzhang

版主

积分
13572
13#
发表于 2019-11-8 15:42:29 | 只看该作者
mailonghua 发表于 2019-11-8 15:08
谢谢,这个刚才有参考修改模型(使用了提供的mobilenet_v1的test case),但是出现了警告,从total time ...

看具体运行时间,不用看评估。
评估的好像只会是一个batch的时间。

只要网络大于NPU的计算单元,3个batch的时间一定是约等于 3倍1个batch的时间的。
NPU模块很小,你们一直在误解能跟GPU一样多batch提高利用率,但你仔细看看NPU的面积才多少,除非你网络真的非常小,否则不存在一个batch跑不满NPU计算单元的情况出现。
回复

使用道具 举报

mailonghua

注册会员

积分
78
14#
 楼主| 发表于 2019-11-8 15:47:35 | 只看该作者
jefferyzhang 发表于 2019-11-8 15:42
看具体运行时间,不用看评估。
评估的好像只会是一个batch的时间。

感谢提醒和帮助
那么上面的warning是正常的吗?其是在提示输入单元(3*224*224*3)个数超过了实际要求(224*224*3),感觉这个提醒表示操作不对啊?
输入完全按照帖子来进行的,不同的是这里使用的是彩色图片
回复

使用道具 举报

jefferyzhang

版主

积分
13572
15#
发表于 2019-11-8 16:00:43 | 只看该作者
mailonghua 发表于 2019-11-8 15:47
感谢提醒和帮助
那么上面的warning是正常的吗?其是在提示输入单元(3*224*224*3)个数超过了实际要求(2 ...

应该是你build时候batchsize就不对。。rknn转换时候压根就没设进去batch=3
回复

使用道具 举报

mailonghua

注册会员

积分
78
16#
 楼主| 发表于 2019-11-8 16:10:27 | 只看该作者
jefferyzhang 发表于 2019-11-8 16:00
应该是你build时候batchsize就不对。。rknn转换时候压根就没设进去batch=3

牛,牛,厉害,非常感谢
回复

使用道具 举报

几头米

注册会员

积分
87
17#
发表于 2019-11-13 10:41:19 | 只看该作者
jefferyzhang 发表于 2019-11-8 14:17
理论上是不会支持的,加载模型时候需要知道参数和运算单元数量,并且客户也没有这种场景需求。
会变化bat ...

我们用的小模型在NPU上推理耗时 < 1ms, 使用上输入的batch数是不确定的,当前NPU也是类似外挂的形式,使用batch也是为了减少数据拷贝时间
回复

使用道具 举报

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

本版积分规则

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


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