FastDeploy icon indicating copy to clipboard operation
FastDeploy copied to clipboard

怎么主动释放已经加载的模型

Open xxf1ow opened this issue 1 year ago • 11 comments

问一个小白问题, 为什么所有模型都只有加载的接口, 没有释放的接口.

如果有释放的接口的话请说一下在哪里, 谢谢

xxf1ow avatar Mar 04 '24 09:03 xxf1ow

我尝试使用智能指针, 但是类析构了, 占用的内存/显存没有释放 (jetson, trt 后端)

// load
auto det_model = std::make_unique<detection::PPYOLOE>(model, params, config, option);
if (!det_model->Initialized())
    std::exit();

// free
det_model.reset();

大佬们帮忙看看 @jiangjiajun @rainyfly

xxf1ow avatar Mar 05 '24 08:03 xxf1ow

今天也是等待回复的一天...

xxf1ow avatar Mar 08 '24 01:03 xxf1ow

今天也是等待回复的一天...

xxf1ow avatar Mar 11 '24 01:03 xxf1ow

https://github.com/PaddlePaddle/FastDeploy/blob/develop/fastdeploy/runtime/backends/tensorrt/trt_backend.cc 把这个里面context_、engine_ destroy()掉试试

rainyfly avatar Mar 11 '24 06:03 rainyfly

https://github.com/PaddlePaddle/FastDeploy/blob/develop/fastdeploy/runtime/backends/tensorrt/trt_backend.cc 把这个里面context_、engine_ destroy()掉试试

fastdeploy/runtime/backends/tensorrt/trt_backend.h 添加

~TrtBackend() {
    if (parser_) {
      parser_.reset();
    }
    if (context_) {
      context_.reset();
      engine_.reset();
      builder_.reset();
      network_.reset();
    }
  }

fastdeploy/runtime/runtime.h 添加

  ~Runtime() {
    if (backend_)
      backend_.reset();
  }

fastdeploy/fastdeploy_model.h 添加

  virtual void Release() {
    if (runtime_)
      runtime_.reset();
  }

实测均无法释放显存

是不是我的修改不正确? 还有其它可能有用的建议吗? @rainyfly

xxf1ow avatar Mar 25 '24 01:03 xxf1ow

等待回复...

xxf1ow avatar Mar 28 '24 06:03 xxf1ow

......

xxf1ow avatar Apr 03 '24 01:04 xxf1ow