# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Inference utils.""" import os import paddle.fluid as fluid def create_predictor(inference_model_path, is_distributed=False): """Create predictor.""" if is_distributed: dev_count = fluid.core.get_cuda_device_count() gpu_id = int(os.getenv("FLAGS_selected_gpus")) else: dev_count = 1 gpu_id = 0 place = fluid.CUDAPlace(gpu_id) exe = fluid.Executor(place) scope = fluid.Scope() with fluid.scope_guard(scope): inference_prog, feed_target_names, fetch_targets = fluid.io.load_inference_model(inference_model_path, exe) def __predict__(inputs): with fluid.scope_guard(scope): outputs = exe.run(inference_prog, feed=inputs, fetch_list=fetch_targets, return_numpy=True) return outputs return __predict__