如何最佳地利用多进程 CPU 推理 PyTorch 模型?

4

我需要将一个 PyTorch BERT 问答模型投入到生产中。由于每个查询需要评估30个样本,因此CPU推断速度非常慢。在这30个样本的结果中,我选择得分最高的答案。GPU对我来说成本太高了,无法用于推理。

我能否利用多进程/并行CPU推理来解决这个问题?如果可以,最佳实践是什么?如果不行,是否有云端选项,只为我进行的GPU查询计费,而不是持续运行GPU实例的计费?

3个回答

1

0

您可以尝试使用OpenVINO来进行推理优化。OpenVINO是针对英特尔硬件进行优化的,但它也应该适用于任何CPU。这里提供了BERT模型的一些性能基准Here

Open Model Zoo中已经有一些被优化过的BERT模型可用,因此您不需要转换自己的模型,并且还有一个关于使用BERT进行问答的tutorial notebook

然而,如果您想使用您的模型,您可以按照此tutorial进行,其中包括可选的量化步骤以获得更好的性能。

免责声明:我在OpenVINO上工作。


-1

您可以尝试以下方法:

使用Intel Pytorch以获得更好的性能。请参考https://github.com/intel/pytorch安装带有Intel优化功能的PyTorch。

您可以使用Intel优化的Python库。即在创建环境时,请确保传递Intel通道。例如:conda create -n env_name python=3.6 -c intel。此外,您还可以使用Intel通道安装特定的库。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接