Toybrick

标题: init_runtime()过程每次都要花费很多时间? [打印本页]

作者: kepurSong    时间: 2019-9-23 10:51
标题: init_runtime()过程每次都要花费很多时间?
1,我是用YOLOv3将近70M的rknn权重的文件,init_runtime需要将近20分钟,这个是正常执行时间吗?可以进行加速吗?或者说,加速后,一般时间能到多少?
2,我用Unet网络将近7M的rknn权重的文件,init_runtime需要将近2分钟时间?

作者: troy    时间: 2019-9-23 14:24
这个时间不太正常,建议更新系统固件到V1.5,更新rknn-toolkit到V1.2,再进行测试。
作者: kepurSong    时间: 2019-9-23 14:41
标题: PC电脑,pre_compile=True加速报错?
本帖最后由 kepurSong 于 2019-9-23 14:46 编辑
troy 发表于 2019-9-23 14:24
这个时间不太正常,建议更新系统固件到V1.5,更新rknn-toolkit到V1.2,再进行测试。 ...

为什么我在PC电脑上用pre_compile=True加速,竟然报错了?说是不能再模拟器上面加速环境是,rknn1.1.0, Ubuntu-linux-64,不是rk3399pro板子


作者: troy    时间: 2019-9-23 17:31
kepurSong 发表于 2019-9-23 14:41
为什么我在PC电脑上用pre_compile=True加速,竟然报错了?说是不能再模拟器上面加速环境是,rknn1.1.0, Ub ...

文档里面有写,开启预编译,就不能在PC上模拟了。运行提示也写的很清楚了,PC模拟器上不能运行预编译的模型。

作者: kepurSong    时间: 2019-9-23 20:47
troy 发表于 2019-9-23 17:31
文档里面有写,开启预编译,就不能在PC上模拟了。运行提示也写的很清楚了,PC模拟器上不能运行预编译的模 ...

你理解错了我的问题,我问的是:
1,以前我没有预编译,直接在rk3399pro上面运行,发现每次模型的init_runtime时间都特别长,现在我想通过pre_compile来减少模型的init_runtime,我尝试在PC上面进行预编译,但是预编译报了上面的错误?
2,官方文档上面,不是说,预编译可以在PC搭建的rknn-toolkit 1.1.0环境上面进行预编译吗?
作者: troy    时间: 2019-9-24 08:35
kepurSong 发表于 2019-9-23 20:47
你理解错了我的问题,我问的是:
1,以前我没有预编译,直接在rk3399pro上面运行,发现每次模型的init_ru ...

我看懂你的意思了。
1.pre_compile是可以加快init_runtime的速度,预编译报的错误是TensorFlow相关的,你可以看下最后几行的日志,看起来是跟cuDNN环境有关系,确认一下TensorFlow的执行环境是否正常。因为在开启量化和预编译等操作时,rknn会调用TensorFlow跑一遍推理,显然此处TensorFlow报错了。
2.预编译是可以在PC上没错。你也可以尝试一下使用最新最新发布rknn-toolkit1.2.0在PC上预编译试一下。但是建议先排除TensorFlow的问题。
作者: kepurSong    时间: 2019-9-24 10:19
troy 发表于 2019-9-24 08:35
我看懂你的意思了。
1.pre_compile是可以加快init_runtime的速度,预编译报的错误是TensorFlow相关的,你 ...

你这样一说,我好像明白为什么报错了:
1,我Ubuntu上面只有tensorflow-gpu==1.13.1的版本,没有cpu的版本,这样会不会报错?
2,你能推荐一个和rknn-toolkit 1.1.0匹配的tensorflow版本吗?我看官网资料上面没有推荐
作者: troy    时间: 2019-9-24 10:22
kepurSong 发表于 2019-9-24 10:19
你这样一说,我好像明白为什么报错了:
1,我Ubuntu上面只有tensorflow-gpu==1.13.1的版本,没有cpu的版 ...

1.你可以自己找个TensorFlow的demo,跑一下TensorFlow,确保你的TensorFlow环境正常
2.rknn-toolkit1.1.0我有用过1.12和1.14版本的TensorFlow都是可以的,我觉得首先还是要把TensorFlow环境弄好,去百度一下这些cuDNN的错误,先解决一下。
作者: kepurSong    时间: 2019-9-24 15:26
troy 发表于 2019-9-24 10:22
1.你可以自己找个TensorFlow的demo,跑一下TensorFlow,确保你的TensorFlow环境正常
2.rknn-toolkit1.1.0 ...

感谢大神的指导,我修改了一个tensorflow的版本,发现可以预编译成功了!
令人惊讶的是,我YOLOv3的70Mrknn权重,预编译后,体积反而变大了,是73M左右,但是init_runtime的时间,从700s降低到了3s左右,效果非常好。
但是我比较疑惑这个700到3s是如何做到的?
作者: troy    时间: 2019-9-24 16:28
kepurSong 发表于 2019-9-24 15:26
感谢大神的指导,我修改了一个tensorflow的版本,发现可以预编译成功了!
令人惊讶的是,我YOLOv3的70Mrk ...

NPU最终执行的其实都是预编译后的代码,只是如果rknn模型没开预编译,就会导致在init_runtime的时候执行预编译过程,这个过程在板子上执行确实会比较慢,但是像你这么慢要700s的还是第一次见
作者: kepurSong    时间: 2019-9-24 16:43
troy 发表于 2019-9-24 16:28
NPU最终执行的其实都是预编译后的代码,只是如果rknn模型没开预编译,就会导致在init_runtime的时候执行 ...

奇迹了,看来执行预编译很有必要,不过,还是要感谢大神的指点




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3