社会焦点

从实验室到工厂,模型部署中的几个重要问题及解决方案

字号+ 作者: 来源: 2017-05-01

从实验室到工厂,模型部署中的几个重要问题及解决方案,解决问题比提出问题更重要,中国展览模型总网,3dmax怎么导入模型,经济问题中的概率统计模型及应用,灰色预测模型实例

选自kdnuggets

作者:Mauricio Vacas

机器之心编译

参与:Quantum Cheese、微胖

在这篇文章中,我们会讨论在模型管理和部署中如何避免糟糕模型情景的方法。

在我们的产业中,很多关注都集中在开发分析模型来解决关键商业问题以及预测消费者行为上。但是,当数据科学家研发完模型,需要部署模型以供更大的组织使用时,会发生什么情况?

没有严格流程就部署模型会引发后患,看一下这个金融服务业的实例就知道了。

拥有自己的高频贸易算法的 Knight 曾是美国最大的股票贸易商,在纽约证券交易所(NYSE)有17.3%的市场份额,在纳斯达克(NASDAQ)有16.9%的市场占有率。但是,2012年由于一次计算机交易的小故障,Knight在不到一小时之内蒙受了4.4亿美元的损失。那年年底,公司被收购。这充分证明:未经适当测试就轻易部署使用分析模型会有很大风险,那些系统漏洞会给公司带来严重后果。

在这篇博文中,我们将谈谈如何通过合理的模型管理和部署流程来避免后患。在部署模型之前,有几个必须解决的问题:

  • 模型结果是如何到达那些会从这一分析中获益的决策者或者应用程序那里的?

  • 这个模型能不出问题的自主运行吗?如何从失败中恢复运行的?

  • 因为训练数据是不再相关的历史数据,模型也因此变得陈旧,会导致什么后果?

  • 在不阻断下游消费者的情况下,如何部署和管理新版模型?

  •   我们可以把数据科学的开发和应用看作是两个不同的流程,但是,这两个过程又是更大的模型生命周期流程的一部分。下面示例图说明了这一过程。

      从实验室到工厂,模型部署中的几个重要问题及解决方案

      1. 终端用户与应用程序交互,产生的数据存储在应用的线上产品数据库中。

      2. 然后这些数据会被传到一个线下的历史数据库中(如 Hadoop 或 S3),由数据科学家进行分析,搞清楚用户是如何与应用交互的。这些数据也有别的用处,比如构建一个模型,根据用户在应用中的行为把他们进行分类,这样我们就可以利用这些信息对用户进行营销。

      3. 一旦构建出了一个模型,我们可以把它登记到一个模型注册表中,这时一个治理程序会对模型进行评估,批准其投放产业应用,并对模型部署要求进行评估。

      4. 当模型的产业应用被批准后,我们就开始部署模型。为此,我们要搞清楚组织会如何使用这个模型,作出相应调整,确保模型能在特定性能约束下自主端到端运行,同时也要进行测试,以确保在部署之后模型仍与开发出来的一致。一旦完成这些步骤,我们就在投入生产前,再次对模型进行了评估和批准。

      5.最后,一旦部署完毕,模型所做出的预测就能服务于应用程序,这些预测的权值都是根据用户交互行为计算出的。这些信息有助于改进模型,或提出一个新的商业问题,这就又回到了过程(2)。

    为了确保周期运行成功,我们需要理解数据科学的开发和部署有着不同的要求,这些要求都需要被满足。这就是为什么你需要一个实验室,同时也需要一个工厂。

    实验室

      数据实验室是数据科学家进行研究的地方,关注点不同于应用产品。最终目标也许是利用数据驱动组织内的决策制定,但是,实现这个之前,我们需要先弄清楚对组织而言,那些假设有意义,并证明其价值。因此,我们主要关注的是创造出一个环境——实验室,在这里,数据科学家可以提出问题,构建模型,并用数据进行测试。

      正如以下基于 CRISP-DM模型的图表所示,这个过程基本上迭代式的。

      从实验室到工厂,模型部署中的几个重要问题及解决方案

      我们不会在本文讨论太多细节,但是我们有一个深入这个主题的教程。如果你想下载此教程的课件,请访问 https://goo.gl/SwAfWw

    在这里,我们关心的问题是需要实验室来研发模型,还需要一个工厂,用以部署这个模型并将之自动应用到实时数据,在约束条件下把结果传送给适当的客户,并且监管整个过程,以防运行失败或异常。

    工厂

    在工厂里,我们要做的是优化价值创造并降低成本,评估稳定性和结构弹性,确保在约束条件下把结果传送给适当的客户,同时能监控和管理程序故障。我们需要给模型提供一个结构,根据生产中的情况进行预期。

    为了理解工厂的运行过程,我们来看一下如何通过模型注册表来管理模型,以及部署时需要考虑哪些问题。

      模型注册表

      为了给模型一个结构,我们会根据模型的组件进行定义,包括数据依存性,脚本,配置以及文件。另外,我们会捕获模型上的元数据及其不同版本,提供额外的商业环境和模型特定信息。给模型提供一个结构,接着就能将模型目录清单存在模型注册表中,包括了不同模型版本,以及执行过程反馈的关联结果。下面的图示解释了这个概念。

      从实验室到工厂,模型部署中的几个重要问题及解决方案

      通过注册表,我们可以:

  • 明确哪个版本的模型正在被使用,并控制它。

  • 查看发布说明,搞清楚某个特定版本发生了什么变化。

  • 查看与模型相关联的资产和文件,这对于创建一个已有模型的新版本或管理维护是有用的。

  • 监管模型执行的性能标准,以及什么程序在使用它。这些信息是在模型执行过程中产生的,会把权值反馈给注册表。

  • 你同样也可以选择在模型某个版本中加入 Jupyter Notebook。这可以让一个审阅者或开发者遍历此版本原始开发者最初开发时的思维过程和假设。有助于模型维护,也有助于组织探索。

    这里有一个矩阵,解构了一个模型的不同元素:

      从实验室到工厂,模型部署中的几个重要问题及解决方案

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章