我想将经过培训的机器学习模型部署为REST API。 API将获取文件并首先将其分解为功能。问题是此步骤取决于其他库(例如FFTW)。然后,API将使用上一步中的功能查询模型。
理论上,我可以在云中启动虚拟机,在那里安装所有依赖项,并将终点指向该VM。但如果我们有并发请求,这将无法扩展。
理想情况下,我喜欢将所有内容放在API网关中并利用无服务器范例,因此我不必担心可扩展性。
答案 0 :(得分:1)
首先,您需要将模型分解为不同的步骤。从您的问题我看到预处理和模型推断步骤。 您的预处理包括依赖项,如FFTW。 你没有指定你有什么样的模型,但我认为它还需要某种环境和/或依赖。
话虽如此,您需要做的是为每一步实施2项服务。 最好将它们打包到docker镜像中,以便保持每个容器的隔离,并且您将能够轻松地部署它们。
通过使用AWS ECS或Kubernetes部署到云提供商和docker业务流程中,可以实现docker杠杆的可扩展性。
有一个开源项目hydro-serving可以帮助您完成此任务。
在这种情况下,您只需要关注模型本身。 hydro-serving
负责基础设施。
如果预处理阶段是作为Python脚本实现的 - 我们可以使用requirements.txt
中的所有deps在各个容器中部署它。
模型也是如此 - 它具有开箱即用的Tensorflow和Spark模型。
否则,很容易调整现有机制以满足您的要求(其他语言/工具包)
然后,假设您已在某个地方拥有hydro-serving
个实例,则可以使用hs upload --host $HOST --port $PORT
上传您的步骤
并与您的模型组成一个应用程序管道。
您可以通过HTTP api,GRPC api或Kafka主题访问您的应用程序。
如果您指定要尝试发送到REST API的文件,那将会很棒。 可能您需要以某种方式对它们进行编码,以便通过REST API发送它们。另一方面,你可以通过GRPC api发送它们。
披露:我是hydro-serving
的开发者