【问题标题】:Running NLP on Heroku在 Heroku 上运行 NLP
【发布时间】:2017-11-22 03:38:57
【问题描述】:

如果您使用 Heroku,您就会知道 Heroku 将 slugsize 限制为 300MB。我们公司正在尝试运行 NLP 应用程序,该应用程序使用斯坦福 NLP 库,超过 300MB。

有没有人在 Heroku 上成功地主持过斯坦福 NLP 流程?你是怎么做到的?如果你不得不通过排除部分 NLP 库来减肥,你是怎么做到的?

【问题讨论】:

    标签: heroku nlp stanford-nlp


    【解决方案1】:

    您遇到的大小问题是由 stanford-corenlp-3.5.2-models.jar 中的模型文件引起的。您无需保留 stanford-corenlp-3.5.2-models.jar 中的所有文件即可使用该工具包。我建议评估您希望为您的服务器维护哪些功能,然后删除该功能不需要的模型。

    【讨论】:

    • 感谢您的回复。删除模型不会导致异常或准确性降低吗?
    • 如果任务 A 加载模型 B,如果您有模型 B,它将起作用。如果您删除模型 B,它将崩溃。您只需要您关心的任务使用的模型。
    • 我的意思是最好的办法是在没有模型的情况下运行代码,它会崩溃。只需继续添加文件,直到崩溃停止,然后您将拥有最小的设置。我认为您需要的模型将在大部分加载时打印出来,因此您应该保留您在打印输出中看到加载的模型。但最终,如果代码运行并且没有崩溃,则意味着您拥有所需的所有模型。
    • 我能够只包含我们正在加载的模型。我不是 NLP 工程师,所以花了一点时间才意识到我们正在一个一个地加载模型。感谢您的建议。
    • 如何只包含某些模型?
    【解决方案2】:

    您需要这么多空间的原因是模型很大。如果您的任务允许,您可以使用较小的模型。为了实现这一点,您需要在训练数据的子集上重新训练它们,并可能排除一些花哨的特性或使用更窄的上下文窗口。

    另一种方法是压缩模型,当您需要它们时解压缩并在应用运行时将它们保存在内存中。不过,这可能是个坏主意。也许你应该考虑使用不同的 NLP 系统。

    【讨论】:

      【解决方案3】:

      我以前遇到过这个问题。我与 Heroku 支持人员交谈,他们将我的 slack 大小增加到 500 Mb。所以,我建议和他们谈谈。此外,heroku 最近还增加了对 docker 部署的支持。您可以尝试使用 CodeShip 或其他 CI 与 docker 部署进行尝试。我相信这完全绕过了他们的自定义 CI/CD。 希望我回答了你的问题。

      【讨论】:

        【解决方案4】:

        您可以使用 3.5.0 版本。它小于300M,但我仍然遇到问题。我认为免费的heroku沙盒内存不够。

        【讨论】:

        • 是的,我想:» 2016 年 1 月 22 日 01:21:46.944 2016-01-22 09:21:46.564335+00:00 app web.1 - - 从 edu/stanford/nlp 加载分类器/models/ner/english.muc.7class.dissim.crf.ser.gz ...线程“主”java.lang.OutOfMemoryError中的异常:超出GC开销限制
        • 嗯,我的团队很高兴获得更高层来运行 NLP,所以当我们将 dyno 更改为 Performance 之一时,我们做得很好。我们发现运行 NLP 至少需要 1.5GB。我想大大优化它,因为我们一次只运行一个 NLP 进程达到 1.5GB..
        猜你喜欢
        • 2018-01-28
        • 2016-03-23
        • 2013-08-27
        • 2012-04-06
        • 2012-06-05
        • 2011-09-17
        • 2022-01-26
        • 2017-12-14
        • 1970-01-01
        相关资源
        最近更新 更多