我想通过部署在Kubernetes上的端点提供文本分类模型(finBERT pytorch模型)的结果。
整个管道都在工作,但在部署时处理速度很慢(一个句子30秒)。如果我在本地对同一个端点计时,我可以在1到2秒内得到结果。在本地运行docker镜像,端点也需要2秒才能返回结果。
当我检查我的kubernetes实例的CPU使用情况,而请求正在运行时,它不超过35%,所以我不确定它是否与缺乏计算能力有关?
有没有人在向前传递到pytorch模型时看到这样的性能问题?有什么我该调查的线索吗?
任何帮助都是非常感激的,谢谢!
我正在使用
限制:cpu:"2";请求:cpu:"1">
Python: 3.7Pytorch: 1.8.1
我也有同样的问题。在本地,我的pytorch模型会在25毫秒内返回预测,然后在Kubernetes上需要5秒。这个问题与torch有多少线程可用有关。我不是100%确定为什么会这样,但是减少线程的数量可以显著提高性能。
在kubernetes pod上设置以下环境变量。OMP_NUM_THREADS=1
之后,它在kubernetes上执行,就像在本地运行一样~每次调用30ms。
这些是我的pod限制:
- cpu限制
1
- mem限值:
1500m
我是从这篇博客文章中发现的:https://www.chunyangwen.com/blog/python/pytorch-slow-inference.html