我用的是Paddleinference C++ 版本。
目前存在这样的问题,由于我这边的场景需要进行不同模型的反复加载和释放,但是我这边发现调用以下接口,只要先吃不退出,模型资源并没有释放。
if (m_Predictor)
{
// 释放中间Tensor
m_Predictor->ClearIntermediateTensor();
// 释放内存池中的所有临时 Tensor
m_Predictor->TryShrinkMemory();
}
不知道是否有这样的案例可供参考,能够满足我这边的模型快速加载和卸载的需求呢?
5条答案
按热度按时间wr98u20j1#
您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档、常见问题、历史Issue、AI社区来寻求解答。祝您生活愉快~
Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the API,FAQ,Github Issue and AI community to get the answer.Have a nice day!
1cosmwyk2#
您好,TryShrinkMemory是释放临时变量的api,释放模型是在m_Predictor的析构函数。
dtcbnfnu3#
我的测试代码如下:
#include "paddle/include/paddle_inference_api.h"
#include
#include <gflags/gflags.h>
#include <glog/logging.h>
#include
#include
#include
#include
using namespace std;
namespace paddle_infer
{
}
int main(int argc, char**argv)
{
paddle_infer::Config config[3];
std::shared_ptr<paddle_infer::Predictor> predictor[3];
for (size_t i = 0; i < 3; i++)
{
paddle_infer::PrepareConfig(&config[i], i);
predictor[i] = paddle_infer::CreatePredictor(config[i]);
}
}
但是运行完毕后出现以下错误:
C++ Traceback (most recent call last):
Not support stack backtrace yet.
Error Message Summary:
ExternalError: Cuda error(4), driver shutting down.
[Advise: Please search for the error code(4) on website( https://docs.nvidia.com/cuda/archive/9.0/cuda-runtime-api/group__CUDART__TYPES.html#group__CUDART__TYPES_1g3f51e3575c2178246db0a94a430e0038 ) to get Nvidia's official solution about CUDA Error.] (at C:\home\workspace\Paddle_release5\paddle\fluid\platform\gpu_info.cc:275)
麻烦帮忙看下怎么处理呢?
r7s23pms4#
您好,有一个这个api的测试案例,可以看一下
https://github.com/PaddlePaddle/Paddle-Inference-Demo/tree/master/c%2B%2B/test/shrink_memory
idv4meu85#
https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/test/shrink_memory/multi_thread_test.cc
跑多线程示例可以运行么?
另外,您的环境下,单线程可以正常析构么