Skip to content

Commit 5de14c6

Browse files
authored
refine inference api (#13518)
1 parent 79463ae commit 5de14c6

13 files changed

+171
-93
lines changed

paddle/fluid/inference/api/analysis_predictor.cc

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ bool AnalysisPredictor::Init(
7171
inference_program_ = paddle::inference::Load(
7272
executor_.get(), scope_.get(), config_.prog_file, config_.param_file);
7373
} else {
74-
LOG(ERROR) << "fail to load inference model.";
74+
LOG(ERROR) << "fail to load inference model from " << config_.model_dir;
7575
return false;
7676
}
7777

@@ -109,8 +109,9 @@ void AnalysisPredictor::OptimizeInferenceProgram() {
109109
}
110110
argument_.origin_program_desc.reset(
111111
new ProgramDesc(*inference_program_->Proto()));
112-
PADDLE_ENFORCE(config_.ir_mode == AnalysisConfig::IrPassMode::kExclude,
113-
"Only kExclude is supported yet.");
112+
PADDLE_ENFORCE(
113+
config_.ir_mode == contrib::AnalysisConfig::IrPassMode::kExclude,
114+
"Only kExclude is supported yet.");
114115
Analyzer().DisableIrPasses(config_.ir_passes).Run(&argument_);
115116

116117
CHECK(argument_.transformed_program_desc);
@@ -126,8 +127,9 @@ void AnalysisPredictor::OptimizeInferenceProgram() {
126127
}
127128

128129
template <>
129-
std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<
130-
AnalysisConfig, PaddleEngineKind::kAnalysis>(const AnalysisConfig& config) {
130+
std::unique_ptr<PaddlePredictor>
131+
CreatePaddlePredictor<contrib::AnalysisConfig, PaddleEngineKind::kAnalysis>(
132+
const contrib::AnalysisConfig& config) {
131133
VLOG(3) << "create AnalysisConfig";
132134
if (config.use_gpu) {
133135
// 1. GPU memeroy
@@ -154,4 +156,11 @@ std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<
154156
return predictor;
155157
}
156158

159+
template <>
160+
std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<contrib::AnalysisConfig>(
161+
const contrib::AnalysisConfig& config) {
162+
return CreatePaddlePredictor<contrib::AnalysisConfig,
163+
PaddleEngineKind::kAnalysis>(config);
164+
}
165+
157166
} // namespace paddle

paddle/fluid/inference/api/analysis_predictor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ using framework::proto::ProgramDesc;
3030
*/
3131
class AnalysisPredictor : public NativePaddlePredictor {
3232
public:
33-
explicit AnalysisPredictor(const AnalysisConfig& config)
33+
explicit AnalysisPredictor(const contrib::AnalysisConfig& config)
3434
: NativePaddlePredictor(config), config_(config) {}
3535

3636
bool Init(const std::shared_ptr<framework::Scope>& parent_scope);
@@ -46,7 +46,7 @@ class AnalysisPredictor : public NativePaddlePredictor {
4646
Argument& analysis_argument() { return argument_; }
4747

4848
private:
49-
AnalysisConfig config_;
49+
contrib::AnalysisConfig config_;
5050
Argument argument_;
5151
};
5252

paddle/fluid/inference/api/api_anakin_engine.cc

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,24 @@
3131

3232
namespace paddle {
3333

34+
using paddle::contrib::AnakinConfig;
35+
3436
template <typename Target>
3537
PaddleInferenceAnakinPredictor<Target>::PaddleInferenceAnakinPredictor(
36-
const AnakinConfig &config) {
38+
const contrib::AnakinConfig &config) {
3739
CHECK(Init(config));
3840
}
3941
template <>
4042
PaddleInferenceAnakinPredictor<anakin::X86>::PaddleInferenceAnakinPredictor(
41-
const AnakinConfig &config) {
43+
const contrib::AnakinConfig &config) {
4244
omp_set_dynamic(0);
4345
omp_set_num_threads(1);
4446
mkl_set_num_threads(1);
4547
CHECK(Init(config));
4648
}
4749
template <typename Target>
48-
bool PaddleInferenceAnakinPredictor<Target>::Init(const AnakinConfig &config) {
50+
bool PaddleInferenceAnakinPredictor<Target>::Init(
51+
const contrib::AnakinConfig &config) {
4952
if (!(graph_.load(config.model_file))) {
5053
VLOG(3) << "fail to load graph from " << config.model_file;
5154
return false;
@@ -200,10 +203,11 @@ template class PaddleInferenceAnakinPredictor<anakin::X86>;
200203

201204
// A factory to help create difference predictor.
202205
template <>
203-
std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<
204-
AnakinConfig, PaddleEngineKind::kAnakin>(const AnakinConfig &config) {
206+
std::unique_ptr<PaddlePredictor>
207+
CreatePaddlePredictor<contrib::AnakinConfig, PaddleEngineKind::kAnakin>(
208+
const contrib::AnakinConfig &config) {
205209
VLOG(3) << "Anakin Predictor create.";
206-
if (config.target_type == AnakinConfig::NVGPU) {
210+
if (config.target_type == contrib::AnakinConfig::NVGPU) {
207211
#ifdef PADDLE_WITH_CUDA
208212
VLOG(3) << "Anakin Predictor create on [ NVIDIA GPU ].";
209213
std::unique_ptr<PaddlePredictor> x(
@@ -213,7 +217,7 @@ std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<
213217
LOG(ERROR) << "AnakinConfig::NVGPU could not used in ONLY-CPU environment";
214218
return nullptr;
215219
#endif
216-
} else if (config.target_type == AnakinConfig::X86) {
220+
} else if (config.target_type == contrib::AnakinConfig::X86) {
217221
VLOG(3) << "Anakin Predictor create on [ Intel X86 ].";
218222
std::unique_ptr<PaddlePredictor> x(
219223
new PaddleInferenceAnakinPredictor<anakin::X86>(config));

paddle/fluid/inference/api/api_anakin_engine.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ limitations under the License. */
2929

3030
namespace paddle {
3131

32+
using contrib::AnakinConfig;
33+
3234
template <typename Target>
3335
class PaddleInferenceAnakinPredictor : public PaddlePredictor {
3436
public:

paddle/fluid/inference/api/api_impl.cc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,11 @@ bool NativePaddlePredictor::Init(
101101
inference_program_ = paddle::inference::Load(
102102
executor_.get(), scope_.get(), config_.prog_file, config_.param_file);
103103
} else {
104-
LOG(ERROR) << "fail to load inference model.";
104+
LOG(ERROR) << "fail to load inference model from " << config_.model_dir;
105105
return false;
106106
}
107107

108108
ctx_ = executor_->Prepare(*inference_program_, 0);
109-
if (config_._use_mkldnn) {
110-
executor_->EnableMKLDNN(*inference_program_);
111-
}
112109
executor_->CreateVariables(*inference_program_,
113110
sub_scope_ ? sub_scope_ : scope_.get(), 0);
114111

@@ -330,4 +327,10 @@ std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<
330327
#endif
331328
}
332329

330+
template <>
331+
std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<NativeConfig>(
332+
const NativeConfig &config) {
333+
return CreatePaddlePredictor<NativeConfig, PaddleEngineKind::kNative>(config);
334+
}
335+
333336
} // namespace paddle

paddle/fluid/inference/api/api_tensorrt_subgraph_engine.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ using inference::analysis::Argument;
2525
using inference::Singleton;
2626
using inference::analysis::Analyzer;
2727
using framework::proto::ProgramDesc;
28+
using paddle::contrib::MixedRTConfig;
2829

2930
class TensorRTSubgraphPredictor : public NativePaddlePredictor {
3031
public:
31-
explicit TensorRTSubgraphPredictor(const TensorRTConfig& config)
32+
explicit TensorRTSubgraphPredictor(const MixedRTConfig& config)
3233
: NativePaddlePredictor(config), config_(config) {}
3334

3435
bool Init(const std::shared_ptr<framework::Scope>& parent_scope) {
@@ -115,13 +116,13 @@ class TensorRTSubgraphPredictor : public NativePaddlePredictor {
115116
}
116117

117118
private:
118-
TensorRTConfig config_;
119+
MixedRTConfig config_;
119120
};
120121

121122
template <>
122123
std::unique_ptr<PaddlePredictor>
123-
CreatePaddlePredictor<TensorRTConfig, PaddleEngineKind::kAutoMixedTensorRT>(
124-
const TensorRTConfig& config) {
124+
CreatePaddlePredictor<MixedRTConfig, PaddleEngineKind::kAutoMixedTensorRT>(
125+
const MixedRTConfig& config) {
125126
VLOG(3) << "create TensorRTSubgraphPredictor";
126127
if (config.use_gpu) {
127128
// 1. GPU memeroy
@@ -150,6 +151,13 @@ CreatePaddlePredictor<TensorRTConfig, PaddleEngineKind::kAutoMixedTensorRT>(
150151
return std::move(predictor);
151152
}
152153

154+
template <>
155+
std::unique_ptr<PaddlePredictor> CreatePaddlePredictor<MixedRTConfig>(
156+
const MixedRTConfig& config) {
157+
return CreatePaddlePredictor<MixedRTConfig,
158+
PaddleEngineKind::kAutoMixedTensorRT>(config);
159+
}
160+
153161
} // namespace paddle
154162

155163
USE_TRT_CONVERTER(elementwise_add_weight);

paddle/fluid/inference/api/api_tensorrt_subgraph_engine_tester.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
namespace paddle {
2222

23+
using contrib::MixedRTConfig;
24+
2325
DEFINE_string(dirname, "", "Directory of the inference model.");
2426

2527
void CompareTensorRTWithFluid(bool enable_tensorrt) {
@@ -32,7 +34,7 @@ void CompareTensorRTWithFluid(bool enable_tensorrt) {
3234
config0.fraction_of_gpu_memory = 0.3;
3335
config0.device = 0;
3436

35-
TensorRTConfig config1;
37+
MixedRTConfig config1;
3638
config1.model_dir = FLAGS_dirname + "word2vec.inference.model";
3739
config1.use_gpu = true;
3840
config1.fraction_of_gpu_memory = 0.3;
@@ -42,7 +44,7 @@ void CompareTensorRTWithFluid(bool enable_tensorrt) {
4244
auto predictor0 =
4345
CreatePaddlePredictor<NativeConfig, PaddleEngineKind::kNative>(config0);
4446
auto predictor1 =
45-
CreatePaddlePredictor<TensorRTConfig,
47+
CreatePaddlePredictor<MixedRTConfig,
4648
PaddleEngineKind::kAutoMixedTensorRT>(config1);
4749

4850
for (int batch_id = 0; batch_id < 1; batch_id++) {

0 commit comments

Comments
 (0)