RVM-Inference icon indicating copy to clipboard operation
RVM-Inference copied to clipboard

rvm onnx推理的代码可以跑fp16的模型么?

Open HZNUJeffreyRen opened this issue 4 years ago • 9 comments

我跑视频,加载完模型之后就阻塞住了

HZNUJeffreyRen avatar Jan 05 '22 07:01 HZNUJeffreyRen

目前只能跑fp32的模型

DefTruth avatar Jan 05 '22 08:01 DefTruth

@DefTruth 好的,谢谢大佬回复。我还有一个疑问,就是rec的四个输出,会作为下一次的输入,我看了一下代码,是拿到所有output之后,再用memcpy拷贝到输入内存,这样的话rec四个输入的拷贝操作是不是中间会经过cpu,而不是通过gpu直接拷贝的?

HZNUJeffreyRen avatar Jan 05 '22 08:01 HZNUJeffreyRen

@DefTruth 因为我在3070上测试,0.25下采样率,1080p的视频,纯推理只有50fps,和作者列出的推理性能差了一半,我觉得应该是这个问题

HZNUJeffreyRen avatar Jan 05 '22 08:01 HZNUJeffreyRen

@DefTruth 好的,谢谢大佬回复。我还有一个疑问,就是rec的四个输出,会作为下一次的输入,我看了一下代码,是拿到所有output之后,再用memcpy拷贝到输入内存,这样的话rec四个输入的拷贝操作是不是中间会经过cpu,而不是通过gpu直接拷贝的?

是的,目前的处理逻辑,确实是会经过cpu做拷贝。你可以参考下这个讨论来修改,避免cpu的数据拷贝:
https://github.com/DefTruth/lite.ai.toolkit/issues/60

DefTruth avatar Jan 05 '22 09:01 DefTruth

@DefTruth 好的,谢谢大佬回复。我还有一个疑问,就是rec的四个输出,会作为下一次的输入,我看了一下代码,是拿到所有output之后,再用memcpy拷贝到输入内存,这样的话rec四个输入的拷贝操作是不是中间会经过cpu,而不是通过gpu直接拷贝的?

是的,目前的处理逻辑,确实是会经过cpu做拷贝。你可以参考下这个讨论来修改,避免cpu的数据拷贝: DefTruth/lite.ai.toolkit#60

好的,谢谢大佬

HZNUJeffreyRen avatar Jan 05 '22 09:01 HZNUJeffreyRen

我也想知道,如何实现fp16的模型的推理,大佬能讲一下思路吗

wangsnowsea2020 avatar Feb 02 '22 13:02 wangsnowsea2020

具体的话,我没试过。不过可以看看我整理的资料,里边有关于fp16的

DefTruth avatar Feb 02 '22 13:02 DefTruth

谢谢你的回复,我使用下面方法:Ort::Value::CreateTensor(memory_info_handler, tensor_value_handler.data(), target_tensor_size*sizeof(uint16_t), tensor_dims.data(), tensor_dims.size(), ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT16); 把所以的float 类型都改写为uint16_t, 把所有的OpenCV 的CV_ 32FC ,都改成CV_16FC , 貌似不行,是不是想简单了。

wangsnowsea2020 avatar Feb 02 '22 14:02 wangsnowsea2020