mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-10 02:50:19 +08:00
[Other] Optimize paddle backend (#1265)
* Optimize paddle backend * optimize paddle backend * add version support
This commit is contained in:
@@ -226,53 +226,24 @@ void Runtime::CreatePaddleBackend() {
|
||||
option.model_format == ModelFormat::PADDLE,
|
||||
"Backend::PDINFER only supports model format of ModelFormat::PADDLE.");
|
||||
#ifdef ENABLE_PADDLE_BACKEND
|
||||
auto pd_option = PaddleBackendOption();
|
||||
pd_option.model_file = option.model_file;
|
||||
pd_option.params_file = option.params_file;
|
||||
pd_option.enable_mkldnn = option.pd_enable_mkldnn;
|
||||
pd_option.enable_log_info = option.pd_enable_log_info;
|
||||
pd_option.mkldnn_cache_size = option.pd_mkldnn_cache_size;
|
||||
pd_option.use_gpu = (option.device == Device::GPU) ? true : false;
|
||||
pd_option.use_ipu = (option.device == Device::IPU) ? true : false;
|
||||
pd_option.gpu_id = option.device_id;
|
||||
pd_option.delete_pass_names = option.pd_delete_pass_names;
|
||||
pd_option.cpu_thread_num = option.cpu_thread_num;
|
||||
pd_option.enable_pinned_memory = option.enable_pinned_memory;
|
||||
pd_option.external_stream_ = option.external_stream_;
|
||||
pd_option.model_from_memory_ = option.model_from_memory_;
|
||||
#ifdef ENABLE_TRT_BACKEND
|
||||
if (pd_option.use_gpu && option.pd_enable_trt) {
|
||||
pd_option.enable_trt = true;
|
||||
pd_option.collect_shape = option.pd_collect_shape;
|
||||
pd_option.trt_option = option.trt_option;
|
||||
pd_option.trt_option.gpu_id = option.device_id;
|
||||
pd_option.trt_option.enable_pinned_memory = option.enable_pinned_memory;
|
||||
pd_option.trt_disabled_ops_ = option.trt_disabled_ops_;
|
||||
}
|
||||
#endif
|
||||
#ifdef WITH_IPU
|
||||
if (pd_option.use_ipu) {
|
||||
auto ipu_option = IpuOption();
|
||||
ipu_option.ipu_device_num = option.ipu_device_num;
|
||||
ipu_option.ipu_micro_batch_size = option.ipu_micro_batch_size;
|
||||
ipu_option.ipu_enable_pipelining = option.ipu_enable_pipelining;
|
||||
ipu_option.ipu_batches_per_step = option.ipu_batches_per_step;
|
||||
ipu_option.ipu_enable_fp16 = option.ipu_enable_fp16;
|
||||
ipu_option.ipu_replica_num = option.ipu_replica_num;
|
||||
ipu_option.ipu_available_memory_proportion =
|
||||
option.ipu_available_memory_proportion;
|
||||
ipu_option.ipu_enable_half_partial = option.ipu_enable_half_partial;
|
||||
pd_option.ipu_option = ipu_option;
|
||||
}
|
||||
#endif
|
||||
option.paddle_infer_option.model_file = option.model_file;
|
||||
option.paddle_infer_option.params_file = option.params_file;
|
||||
option.paddle_infer_option.model_from_memory_ = option.model_from_memory_;
|
||||
option.paddle_infer_option.device = option.device;
|
||||
option.paddle_infer_option.device_id = option.device_id;
|
||||
option.paddle_infer_option.enable_pinned_memory = option.enable_pinned_memory;
|
||||
option.paddle_infer_option.external_stream_ = option.external_stream_;
|
||||
option.paddle_infer_option.trt_option = option.trt_option;
|
||||
option.paddle_infer_option.trt_option.gpu_id = option.device_id;
|
||||
backend_ = utils::make_unique<PaddleBackend>();
|
||||
auto casted_backend = dynamic_cast<PaddleBackend*>(backend_.get());
|
||||
casted_backend->benchmark_option_ = option.benchmark_option;
|
||||
|
||||
if (pd_option.model_from_memory_) {
|
||||
FDASSERT(casted_backend->InitFromPaddle(option.model_file,
|
||||
option.params_file, pd_option),
|
||||
"Load model from Paddle failed while initliazing PaddleBackend.");
|
||||
if (option.model_from_memory_) {
|
||||
FDASSERT(
|
||||
casted_backend->InitFromPaddle(option.model_file, option.params_file,
|
||||
option.paddle_infer_option),
|
||||
"Load model from Paddle failed while initliazing PaddleBackend.");
|
||||
ReleaseModelMemoryBuffer();
|
||||
} else {
|
||||
std::string model_buffer = "";
|
||||
@@ -281,9 +252,9 @@ void Runtime::CreatePaddleBackend() {
|
||||
"Fail to read binary from model file");
|
||||
FDASSERT(ReadBinaryFromFile(option.params_file, ¶ms_buffer),
|
||||
"Fail to read binary from parameter file");
|
||||
FDASSERT(
|
||||
casted_backend->InitFromPaddle(model_buffer, params_buffer, pd_option),
|
||||
"Load model from Paddle failed while initliazing PaddleBackend.");
|
||||
FDASSERT(casted_backend->InitFromPaddle(model_buffer, params_buffer,
|
||||
option.paddle_infer_option),
|
||||
"Load model from Paddle failed while initliazing PaddleBackend.");
|
||||
}
|
||||
#else
|
||||
FDASSERT(false,
|
||||
|
Reference in New Issue
Block a user