尝试在多个CPU上运行推理

时间:2018-11-19 13:33:18

标签: python tensorflow parallel-processing neural-network deep-learning

最近,我一直在使用Tensorflow的对象检测API,我已经使用自己的数据训练了ssd_mobilenet_v2,并且该模型可以按预期工作。

我想通过为某些操作使用多个CPU内核来提高性能。目前,Tensorflow通过使用系统上可用的每个内核的一小部分来利用工作负载(我不知道后端如何利用这种情况)。

我尝试在device_count={ "CPU": n_cpus }, inter_op_parallelism_threads=n_inter, intra_op_parallelism_threads=n_intra,方法中添加参数tf.Sessions()。我的目的是指定要使用的内核数和要创建的线程数,以加快速度,但这对性能没有影响。

之后,我还尝试使用以下方法将某些进程固定到某些核心:with tf.device('/cpu:0'):

with tf.device('/cpu:0'):与诸如tf.matmul这样的琐碎操作一起使用确实可以提高性能。我还可以看到CPU的性能和利用率。 CPU:0的使用率约为98-99%(这是我一直在寻找的)。

但是,当我尝试通过模型推断使用相同的方法tf.device()时,CPU利用率又回到了默认设置,即每个工作负载在所有内核之间共享(单个操作在内核之间共享)。

我想知道推理部分是否可以在多个CPU内核上并行运行。我的兴趣是在不同的内核上并行执行推理的不同操作。 到目前为止,我没有成功完成这项工作,也许我的逻辑有缺陷,请多多指教:)

其他信息:我正在使用TensorFlow 1.11.0,CPU版本

0 个答案:

没有答案