论文部分内容阅读
当前将数据科学部署到生产中仍然是一个巨大的挑战。不仅需要频繁地更新已部署的数据科学,而且可用的数据源和类型也会迅速发生变化。与此同时,用于数据分析的方法也会迅速变化。这种可能性的不断增长使得其只能依靠精心设计和商定的标准,或是在专用工具的框架内工作。
KNIME(Konstanz Information Miner,是一个用户友好、智能的,并有丰富开源的数据集成、数据处理、数据分析和数据勘探平台)一直致力于提供一个开放平台,数据科学家可通过添加扩展套件或带有新数据源和工具的套件来集成最新的数据科学发展成果。这样一来,数据科学家就可以不受特定软件供应商的限制,访问和整合所有可用的数据存储库,并且还使用自己偏爱的工具。在使用KNIME工作流进行生产时,数据科学家可以访问相同的数据源和算法。和许多其他工具一样,从数据科学创建到数据科学生产的过渡涉及一些中间步骤。
在本文中,我们将介绍KNIME工作流引擎的最新功能。新的功能允许直接在数据科学创建工作流中捕捉生产所需的东西,从而使部署实现完全自动化,同时在数据科学创建期间每个模块仍被允许使用。
为何在生产中部署数据科学如此困难?
乍一看,将数据科学投入生产似乎很容易,只需在生产服务器或选定的设备上运行它们即可。但是如果仔细观察,我们会清楚地发现,在数据科学创建过程中所搭建的东西与投入到生产当中的东西是不一样的。
我想将其与米其林星级餐厅的厨师进行比较,后者在自己的实验厨房中设计菜谱。通往完美菜谱的途径包括尝试新的食材、优化数量和烹饪时间等。只有在满意后,最终结果(食材清单、数量、备菜程序)才能写入菜谱中。这一菜谱就是“投入生产”的过程,即让数百万购买菜谱的家庭厨师能够使用它们。
这与提出数据科学问题的解决方案非常相似。在数据科学创建期间,不同的数据源将会被调查。数据经过混合、汇总和转换。然后,具有多种可能参数设置的各种模型(甚至是模型组合)都将被尝试和优化。我们投入生产的并不是实验和参数/模型优化的全部,而是所选数据转换与最佳学习模型的组合。
虽然听起来很容易,但是这往往是问题最大的地方。大多数工具只允许导出可能模型的子集。许多人甚至完全忽略了预处理。通常,导出的东西甚至都没有做好使用准备,而仅仅是模型表示或库,其需要先使用或封装到另一个工具中,然后才能投入生产。因此,数据科学家或模型操作团队需要手动添加选定的数据融合和转换,将其与模型库捆绑在一起,然后将其全部封装到另一个应用程序中,以便能够被作为即用型服务或应用程序投入生产当中。但是很多细节会在在转换过程中被丢失。
对于我们上面提到的米其林大厨来说,手动转换并不是一个大问题。她每隔一年才会制作或更新一个菜谱,并且可以花上一天的时间将她的实验成果转换成可以在传统家庭厨房中使用的菜谱。但是对于我们的数据科学团队来说,这是一个非常大的问题,因为他们希望能够在需要时(每天、甚至是每小时)轻松地更新模型,部署新工具以及使用新的数据源。在两者之间添加手动步骤,不仅会减慢处理速度,而且还会导致许多额外的错误。
下圖显示了数据科学的创建和生产化是如何交织在一起的。虽然该流程受到了经典CRISP-DM周期的启发,但是其更强调数据科学部署的连续性和对包括持续监视、自动更新以及业务方面不断改进和优化的反馈在内的需求。它们可以更清楚地区分两种活动:创建数据科学和将产生的数据科学过程投入到生产当中。
通常,当人们谈论“端到端数据科学”时,他们实际上仅指的是左侧的循环:一种涵盖了从数据提取、转换和建模到编写某种模型等方方面面的综合方法。实际使用这一模型还需要其他的环境,并且在持续监视和更新模型时,工具会变得更加分散。在许多情况下,维护和优化也是非常繁重的手动任务。
消除数据科学创建和数据科学生产之间的差距
集成部署使得数据科学家能够捕捉部署所需的过程部分,从而使数据科学家能够在同一环境中对创建和生产进行建模,从而消除了数据科学创建与数据科学生产之间的差距。因此,只要在数据科学创建中进行了更改,这些更改都会自动反映在已部署的摘录中。从概念上讲这很简单,但实际上做起来却非常困难。
如果数据科学环境是一种编程或脚本语言,那么数据科学家将不得不痛苦地详细介绍如何为整个过程的各个方面创建合适的子例程,并且还要确保在两个代码库之间正确传递了所需的参数,这些子例程可能对部署有用。实际上,数据科学家必须同时编写两个程序,以确保两个程序之间的所有依赖关系能够始终被观察到。正应用模型所需的少量数据转换或参数则非常容易被遗漏。
使用可视化数据科学环境可使这一过程变得更加直观。KNIME的新集成部署节点扩展套件允许部署中需要的那些工作流被捕捉。之所以如此简单,是因为这些天生是创建工作流的一部分。首先,在模型训练期间需要完全相同的转换部分。其次,在微调期间需要对模型进行评估。上图为一个简单示例。 紫色方框中为部署所需的部分数据科学创建流程。我们不必拷贝它们,也不必执行明确的“导出模型”步骤,现在只需添加Capture-Start/Capture-End节点来搭建相关部分,然后使用工作流合成器将这些部分放在一起。自动生成的工作流如本页下图所示。
Workflow-Writer节点具有不同的形状,可用于所有可能的部署方式。正如名称所暗示的那样:写出工作流供其他人用作起点。更强大的是其能够使用Workflow-Deploy节点,该节点可自动将生成的工作流作为REST服务或分析应用程序上载到KNIME Server或将其作为容器进行部署,前提是使用适当的Workflow-Deploy节点。
数据科学的“完整部署”清单
许多数据科学解决方案都承诺了端到端的数据科学、完整的模型操作以及不同形式的“完全部署”。以下列表涵盖了一些常见的限制。
·你是否能够混合和匹配R、Python、Spark、TensorFlow、云、内部部署等技术,或是仅局限于一个特定的技术/环境?
·你是否能够在创建和部署设置过程中使用同一套工具,还是两者之间仅彼此覆盖对方的一个子集?
·你是否能够将数据科学自动部署到服务(例如REST)、应用程序或计划的任务中,还是仅部署需要内置在其他位置的库/模型?
·部署是全自动的还是需要(手动)中间步骤?
·你能否自动回滚到数据科学创建流程和生产中模型的先前版本?
·你能否在同时运行创建和生产流程数年后保证所有结果都向后兼容性?
·经过修订的数据科学流程能否在不到一分钟的时间内被部署?
本文的目的不是为了详细介绍技术。但是我们仍然需要指出,这种捕捉和部署机制适用于KNIME中的所有节点。其中既包括提供对本机数据转换和建模技术访问权的节点,也包括封装了如TensorFlow、R、Python、Weka、Spark等库和由KNIME、社区或合作伙伴网络提供的所有第三方扩展套件的节点。
通过新的集成部署扩展,KNIME工作流变成了一个完整的数据科学创建和生产环境。建立工作流以验证内置或封装技术的数据科学家可以捕捉工作流并将其直接部署在相同工作流中。这是第一次使得直接从用于创建该过程的环境中即时部署完整的数据科学流程成为了可能。
本文作者Michael Berthold为开源数据分析公司KNIME的首席执行官兼联合创始人。Michael在数据科学领域拥有超过25年的經验,在Konstanz大学(德国)担任教授之前曾在加利福尼亚大学(伯克利分校)和卡内基梅隆大学担任过教授,并曾在英特尔的神经网络小组、Utopy和Tripos公司从事过研究工作。此外,Michael还在数据分析、机器学习和人工智能方面发表了大量著作。
原文网址
https://www.infoworld.com/article/3541230/how-to-move-data-science-into-production.html