JSLLightNLP:使用Spring和LightPipelines为Spark NLP实现API服务的项目


Spark NLP是一个构建在 Apache Spark 之上的自然语言理解库,利用 Spark MLLib 管道,允许您大规模运行 NLP 模型,包括 SOTA Transformers。因此,它是唯一一款可用于生产的 NLP 平台,可让您从 1 个驱动程序节点上的简单 PoC 扩展到集群中的多个节点,并在几分钟内处理大量数据。

Spark NLP 与服务器无关,这意味着它没有集成 API 服务器,但提供了许多选项来使用 Rest API 为 NLP 模型提供服务。
使用 RestAPI 添加 Web 服务器和服务 Spark NLP 管道有多种可能性。

本项目中使用 Spring 和 Java:您可以在此Github 存储库中详细检查实现。
我们可以使用基于 Python 的框架(例如 FastAPI)来为 Spark NLP 管道提供服务。然而,基于 Python 的框架的一个缺点是它们需要序列化和反序列化才能与 Spark 交互,与基于 Java 的框架相比增加了开销。由于 Spring 是一个基于 Java 的框架,它可以实现比 FastAPI 更快的响应时间。

使用LightPipelines的性能优势:

  • 最低延迟(甚至超过 FastAPI)
  • 增加了为您的模型构建和调整自定义 API 的灵活性
  • 与K8DC/OS等工具一起进行容器化时更容易扩展

弱点
  • LightPipelines 按顺序执行,不利用 Spark 集群提供的分布式计算。
  • 作为替代方案,您可以将 Spring 与默认管道和自定义 LoadBalancer 一起使用,以在集群节点上分配调用。

更多: