提高机器学习REST服务性能

问题描述:

我休息服务在Tomcat 7这是做以下的事情正在运行:提高机器学习REST服务性能

  1. 语言检测
  2. 斯坦福NER
  3. 斯坦福情感分析
  4. 的情感类别
  5. 分类
  6. 摘要
  7. 主题

正如您猜测的那样,单个请求中会发生很多事情。 我想提高其余服务的性能,斯坦福大学NER和斯坦福大学的情绪只是占用了太多的CPU,而在一台配备15 GB RAM的6核心机器上,我使用10个线程获得了80%的CPU利用率,吞吐量我已经用JMeter测试了它。瓶颈在于斯坦福每次交易都需要90%的时间。我无法在现实世界中扩展它。这太慢了。任何想法如何扩展我的ML服务?

您是否尝试过使用Shift-Reduce parser?很多时间可能来自选区解析器(由情感模型引入),这是在句子长度上的O(n^3)算法。 shift-reduce语法分析器是一个更大的内存占用量,但改为O(n)。否则,我们可能需要更多细粒度的分析数据来提供帮助。

+0

在相同的负载下,吞吐量增加了10%到135%,CPU利用率达到70%。但不是那么多。 https://pastebin.com/A2QrSFNy – akay

+0

也许用JVisualVM调试热点?另外,什么是吞吐量?每个线程每秒12句话并不是完全不合理的,这么多的注释。 –

+0

完全同意你的看法。但是CPU是Intel Xeon,它占用的CPU太多。我们计划很快将其投入生产,并希望减少CPU使用量。任何想法都会有帮助。 – akay

真正的罪魁祸首是Deeplearning4j。它占用了大部分CPU。