我正在使用flask-restplus部署几个相关的实时ml模型。它已构建并准备部署。现在,我还有另外三个项目可以做相同的事情,但是要针对不同的产品。到目前为止,我将分别在各自的flask应用程序中分别部署每种产品的实时ml RESTful应用程序。
是否有更好的方法?我正在考虑但不确定是否有意义的想法是,使用一个应用程序(可能不是烧瓶)来保存我们公司的所有实时ml模型以及每种产品的RESTful api端点。这是否有意义,我在哪里可以找到指导我的资源?
答案 0 :(得分:1)
我认为很高兴能统一与实时预测互动的公司界面。
一种执行此操作的方法就是您所说的,将它们放入同一flask应用程序中。这是基于所有模型都具有相似的延迟要求的假设。如果您的模型共享相同的特征集,那么您将在特征提取和特征转换方面节省大量资源。它可以减少您的延迟。
不利的一面可能是更高的资源需求,并可能带来更多可能危害您的整体正常运行时间的风险。此外,此应用程序可能会变得越来越难以管理不同型号的所有功能要求。
如果您对延迟和正常运行时间有更严格的要求。我仍将继续您当前的实现方法。我认为,当前的实现可能会带来一些挫败感,可能是由于在引入新模型时必须一遍又一遍地复制相同的代码。
当前,有两种流行的方法。第一个有点类似于您的想法。它具有一个功能存储,除了输入数据外,还提供了所有需要的功能,并且每个模型都单独提供。通过放弃某些ML科学家的建模灵活性,可以提供良好的性能。另一种方法是您正在进行的工作。模型服务,特征提取位于孤岛中。
我希望这会有所帮助。
我也有一个自带插头。我们开源了用于打包和部署模型的ML工具箱。它创建了一个文件存档,您可以将其作为python模块导入,也可以使用内置的flask服务器,并且可以为生产部署生成docker映像。我认为它可以一遍又一遍地解决类似代码包装模型的问题。您可以在BentoML
签出