使用ParallelExecutor进行infer,CPU利用率较低
Created by: minhozhou
- 版本、环境信息: 1)PaddlePaddle版本:1.4.1 2)CPU:CPU 3)系统环境:centos
- 问题描述:使用ParallelExecutor进行infer,CPU利用率较低,和直接使用Executor的利用率差不多,速度没有明显提升,主要是想用ParallelExecutor数据并行提升预测速度 预测代码如下:
infer_program = fluid.default_main_program().clone(for_test=True)
# For faster executor
exec_strategy = fluid.ExecutionStrategy()
exec_strategy.use_experimental_executor = True
build_strategy = fluid.BuildStrategy()
cpu_num = int(os.environ.get('CPU_NUM', cpu_count()))
build_strategy.reduce_strategy = \
fluid.BuildStrategy.ReduceStrategy.Reduce if cpu_num > 1 \
else fluid.BuildStrategy.ReduceStrategy.AllReduce
logger.info("begin executor")
pe = fluid.ParallelExecutor(
use_cuda=False,
main_program=infer_program,
build_strategy=build_strategy,
exec_strategy=exec_strategy)
fluid.io.load_persistables(exe, args.model_output_dir + '/batch-%d' % args.model_steps, infer_program)
print 'start test'
batch_id = 0
py_reader.start()
auc_metric = fluid.metrics.Auc("ROC")
while True:
try:
results, y_pred, y_true = pe.run(fetch_list=[cost, preds, label])
auc_metric.update(np.r_[y_pred], np.r_[y_true])
results = np.mean(results)
if batch_id % 100 == 0:
sample = (batch_id + 1) * args.batch_size * int(os.environ.get('CPU_NUM', cpu_num))
logger.info("TEST --> samples: {} batch: {} loss:{} auc:{}".format(sample, batch_id, results, auc_metric.eval()))
batch_id += 1
except fluid.core.EOFException:
py_reader.reset()
break
之前提的issue主题是运行出错发现是我自己代码写错了