Closed Maybewuss closed 1 year ago
使用Predictor的时候 尝试把batch_size调小,或者打开config->EnableMemoryOptim()显存复用选项
EnableMemoryOptim
为什么使用load_inference_model的方式可以成功运行呢? 使用predictor相比这种方式有什么优点?
使用Predictor的时候 尝试把batch_size调小,或者打开config->EnableMemoryOptim()显存复用选项
试了一下,打开EnableMemoryOptim后真的可以了!这个选项默认是关闭的,是基于什么考虑?打开之后效率会变差吗?
EnableMemoryOptim
为什么使用load_inference_model的方式可以成功运行呢? 使用predictor相比这种方式有什么优点?
不是load_inference_model的问题,应该时exe.run和predictor.run的区别。predictor在预测阶段做了很多优化,可能会导致显存的增长
使用Predictor的时候 尝试把batch_size调小,或者打开config->EnableMemoryOptim()显存复用选项
试了一下,打开EnableMemoryOptim后真的可以了!这个选项默认是关闭的,是基于什么考虑?打开之后效率会变差吗?
显存复用和模型结构有关,对于部分模型可能没有效果,所以默认时关闭的。打开该选项不影响预测性能
EnableMemoryOptim
为什么使用load_inference_model的方式可以成功运行呢? 使用predictor相比这种方式有什么优点?
不是load_inference_model的问题,应该时exe.run和predictor.run的区别。predictor在预测阶段做了很多优化,可能会导致显存的增长
为啥我刚刚测了一下发现exe.run要快一点点。。。
加载Rorberta-large进行预测,batch_size设置为32,使用load_inference_model导入后进行预测,显存维持在2g左右。 使用predictor是设置config中的gpu_memory上限为8g,调用时显存会迅速拉满,然后报错挂掉。 大致的代码逻辑如下