部署和维护机器学习模型的状态

时间:2019-04-02 10:10:29

标签: python tensorflow machine-learning scikit-learn deep-learning

好吧,所以我对机器/深度学习世界还很陌生,并且不屑于实现算法,但是我几乎没有什么空白,并且想了解行业如何做到这一点。

我是一位经验丰富的开发人员,具有五年半的复杂用例应用程序(Web和移动)开发经验。我有从头开始如何将应用程序从开发阶段带入生产阶段的详细知识。

在阅读教程和在线提供的所有文档时,解释了如何在本地开发模型(基本上看起来像python脚本)。该脚本以结构化或非结构化方式获取一些数据,对数据进行预处理,并根据接收到的数据训练模型。所有这一切都很好,因为有很多文档,在线教程可用于此目的,但没有人解释如何将其投入生产以及如何在生产中进行维护。

我还没有确定如何将模型推向生产环境,以及何时将模型部署到生产环境中,我们应该从哪些数据中在服务器上训练模型。它应该是我们在计算机上本地使用的相同数据还是其他一些数据?另外,当我们对模型进行任何更改并在生产中重新部署它时,我们是否必须再次训练模型(因为模型似乎是无状态的,必须将所有训练结果存储在内存中)。如果属实,那么重新部署模型将在服务器上训练模型的过程中使应用程序停机。

我敢肯定,行业必须以某种或其他方式来处理所有这些问题。我想了解整个过程,如果我可以为它提供参考,那真的很棒。

我正在使用TensorlfowScikitlearn和其他流行的库进行开发。

1 个答案:

答案 0 :(得分:1)

这只是我的观点,可能不符合标准。

模型只是一个模型,您可以将其保存到文件中,它只是一个文件,可以对其进行复制,对此没有任何专一性。

一种部署方式是通过某种形式的API公开.predict()方法。您可以使用自己喜欢的Web框架来完成此操作,但是由于您使用的是tensorflow,所以使用flask / django可能会更容易。

另一件事是,如果您实际上并没有弄乱图层的内部结构,那就只使用keras,对于外行而言,它比tensorflow使用起来更直接,而且位于tensorflow的顶部,因此您正在使用相同的技术。

那么如何进行再培训呢?好的ML仅在训练时才进行计算密集型操作,因此您需要分别进行操作,选择训练后的模型并将其重新插入API。理想情况下,可以在不实际中断生产的情况下完成此操作,这只是一天结束时可以覆盖的文件。当然有一些细微之处,但应该几乎是无缝的。

关于事后的继续培训,我将从这个answer开始。