【问题标题】:How to scale CoreNLP + Flask?如何扩展 CoreNLP + Flask?
【发布时间】:2018-08-27 10:37:37
【问题描述】:

我想在生产环境中使用 CoreNLP,因此它应该具有足够的可扩展性。 (上午 9 点到下午 5 点之间有 5000 个请求)

我正在使用 Python 包装器 pycorenlp 并使用 Flask 框架作为 API 端点。

此 Flask API 端点托管在 Elastic Beanstalk (AWS) 上。 原因:http://flask.pocoo.org/docs/dev/deploying/

我知道可以多线程运行 Stanford CoreNLP 服务器。 但这足够了吗? 我应该运行多个 coreNLP 服务器吗?

使这种组合具有足够可扩展性的最佳做法是什么? 我假设 coreNLP 服务器应该在托管 Flask 端点的同一台服务器上运行。

【问题讨论】:

  • 8 小时内 5000 个请求是非常非常小的负载——您应该能够在笔记本电脑上处理这么多的请求。您遇到过具体问题吗?

标签: python flask nlp stanford-nlp


【解决方案1】:

即使是单线程 CoreNLP 处理这么多的请求也应该没有问题。例如,我目前正在对平均长度的新闻文章运行 PoS 标记和 NER。每个请求最多需要几秒钟。一些型号,例如共指解析,比其他人慢得多 - 通过设置(例如)-annotators=pos,lemma 确保您没有运行不需要的模型。

【讨论】:

  • 我将只使用情绪模型。负载在上午 9 点到下午 5 点之间分布不均,因为它是一个聊天机器人。上午 10 点到下午 12 点之间的负载最大,我想要一个强大且可扩展的系统,因为未来几个月用户数量将迅速增加。
  • 要回答您问题的粗体部分,您所拥有的组合已经可扩展。让我们做一些数学运算。根据所使用的模型,CoreNLP 每秒可以处理数百到数万个单词 (stanfordnlp.github.io/CoreNLP/memory-time.html)。如果你正在构建一个聊天机器人,你的文档会很短,每个可能有几十个单词。这为我们提供了每个核心每秒至少 10 个文档或每小时 36k 个文档的吞吐量。您可以在负载均衡器后面启动更多线程或运行更多实例。不要过早优化。
猜你喜欢
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2018-04-26
  • 2016-09-27
  • 2019-03-12
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
相关资源
最近更新 更多