在PyTorch模型中使用多处理CPU推理的最佳方法是什么?

时间:2019-03-20 04:42:27

标签: python multiprocessing pytorch

我必须生产一个PyTorch BERT问题答案模型。对于我而言,CPU推断非常缓慢,因为对于模型需要评估30个样本的每个查询,CPU推断都非常慢。从这30个样本的结果中,我选择得分最高的答案。 GPU对我来说太昂贵了,无法用于推理。

我可以为此使用多处理/并行CPU推理吗? 如果是,这样做的最佳实践是什么? 如果否,是否有一个云选项仅对我进行的GPU查询而不是对连续运行的GPU实例收费?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

充分利用Intel Pytorch以获得更好的性能。请参阅https://github.com/intel/pytorch以安装具有英特尔优化功能的pytorch。

您可以使用英特尔优化的Python库。也就是说,在创建环境时,请确保您通过了英特尔渠道。例如:conda create -n env_name python = 3.6 -c intel 。另外,您可以通过Intel渠道安装特定的库。

另一种选择是尝试使用通过Horovod for PyTorch进行的多节点分布式训练。有关更多详细信息,请参见链接https://github.com/horovod/horovod#pytorch

答案 1 :(得分:0)

获得更好性能的另一种可能方法是尽可能减少模型。

最有前途的技术之一是量化和二值化神经网络。这里是一些参考:

  1. https://arxiv.org/abs/1603.05279
  2. https://arxiv.org/abs/1602.02505