提高机器学习REST服务性能
问题描述:
我休息服务在Tomcat 7这是做以下的事情正在运行:提高机器学习REST服务性能
- 语言检测
- 斯坦福NER
- 斯坦福情感分析
- 的情感类别
- 分类
- 摘要
- 主题
正如您猜测的那样,单个请求中会发生很多事情。 我想提高其余服务的性能,斯坦福大学NER和斯坦福大学的情绪只是占用了太多的CPU,而在一台配备15 GB RAM的6核心机器上,我使用10个线程获得了80%的CPU利用率,吞吐量我已经用JMeter测试了它。瓶颈在于斯坦福每次交易都需要90%的时间。我无法在现实世界中扩展它。这太慢了。任何想法如何扩展我的ML服务?
答
您是否尝试过使用Shift-Reduce parser?很多时间可能来自选区解析器(由情感模型引入),这是在句子长度上的O(n^3)
算法。 shift-reduce语法分析器是一个更大的内存占用量,但改为O(n)
。否则,我们可能需要更多细粒度的分析数据来提供帮助。
答
真正的罪魁祸首是Deeplearning4j。它占用了大部分CPU。
在相同的负载下,吞吐量增加了10%到135%,CPU利用率达到70%。但不是那么多。 https://pastebin.com/A2QrSFNy – akay
也许用JVisualVM调试热点?另外,什么是吞吐量?每个线程每秒12句话并不是完全不合理的,这么多的注释。 –
完全同意你的看法。但是CPU是Intel Xeon,它占用的CPU太多。我们计划很快将其投入生产,并希望减少CPU使用量。任何想法都会有帮助。 – akay