二维码

如何将机器学习模型投入生产

1459 人阅读 | 时间:2021年01月05日 17:19

建立机器学习模型的目的是解决问题,并且机器学习模型只有在生产中并且被消费者积极使用时才能这样做。因此,模型部署与模型构建同等重要。

如何将机器学习模型投入生产


数据科学家擅长创建表示和预测现实世界数据的模型,但是有效地部署机器学习模型比科学更是一门艺术。部署需要在软件工程和DevOps中更常见的技能。  Venturebeat报告说,87%的数据科学项目从未将其投入生产,而redapt声称它是90%。两者都强调,使成功与失败区别开来的关键因素是团队协作和迭代的能力。 

建立机器学习模型的目的是解决问题,并且机器学习模型只有在生产中并且被消费者积极使用时才能这样做。因此,模型部署与模型构建同等重要。正如Redapt指出的那样,“ IT与数据科学之间可能存在脱节。IT趋向于专注于使事情变得可用和稳定。他们不惜一切代价想要正常运行时间。另一方面,数据科学家则专注于迭代和实验。他们想破坏事情。” 弥合这两个世界之间的鸿沟对于确保您拥有良好的模型并可以实际投入生产至关重要。

大多数数据科学家认为模型部署是软件工程的任务,应由软件工程师来处理,因为所需的技能与他们的日常工作更加紧密地结合在一起。尽管这确实是正确的,但是学习这些技能的数据科学家将具有优势,尤其是在精益组织中。诸如TFXMlflowKubeflow之类的工具可以简化模型部署的整个过程,数据科学家可以(并且应该)快速学习和使用它们。 

模型部署和管理中的困难导致了一个新的专业角色:机器学习工程师。机器学习工程师比典型的数据科学家更接近软件工程师,因此,它们是将模型投入生产的理想人选。但是并不是每个公司都有聘请专门工程师来部署模型的奢侈行为。对于当今的精益工程车间,建议数据科学家学习如何将其模型投入生产。 

在所有这一切中,另一个问题迫在眉睫-将机器学习模型投入生产的最有效方法是什么?

这个问题至关重要,因为机器学习为企业带来了巨大的潜力,任何能够快速有效地将其模型投入生产的公司都可以击败竞争对手。 

在本文中,我将讨论一些有助于将机器学习模型投入生产的实践和方法。我将讨论不同的技术和用例,以及每种方法的优缺点。 

因此,不要浪费更多的时间,让我们开始吧!

从模型到生产

许多团队没有生产计划就着手进行机器学习项目,这种方法通常在部署时会导致严重问题。创建模型既昂贵又费时,并且如果没有计划将其投入生产,则不应投资于ML项目,除非进行纯研究。有了计划,您不会对任何可能使发射失败的陷阱感到惊讶。 

在开始任何ML项目之前,团队需要考虑的三个关键领域是:

  1. 数据存储与检索

  2. 框架和工具 

  3. 反馈与迭代 

数据存储与检索

如果机器学习模型没有任何关联的数据,那么它对任何人都没有用。您可能会有训练,评估,测试,甚至是预测数据集。您需要回答以下问题:

  • 您的训练数据如何存储?

  • 您的数据有多大?

  • 您将如何检索数据进行培训?

  • 您将如何检索数据以进行预测?

这些问题很重要,因为它们将指导您使用什么框架或工具,如何解决问题以及如何设计ML模型。在机器学习项目中执行其他任何操作之前,请考虑一下这些数据问题。 

数据可以存储在本地,云存储或两者的混合中。将数据存储在将进行模型训练并提供结果的位置是有意义的:内部模型训练和服务将最适合内部数据,尤其是当数据很大时,而数据存储在云存储系统中GCS,AWS S3或Azure存储之类的内容应与云ML培训和服务相匹配。 

数据的大小也很重要。如果数据集很大,那么您需要更多的计算能力来进行预处理步骤以及模型优化阶段。这意味着,如果您在本地操作,则必须计划更多的计算,或者从一开始就在云环境中设置自动扩展。请记住,如果您没有考虑数据需求,那么这两种方法都会变得昂贵,因此请预先计划以确保预算能够通过培训和生产来支持模型

即使您将训练数据与要训练的模型存储在一起,您仍然需要考虑如何检索和处理该数据。这里想到了批处理与实时数据检索的问题,这在设计ML系统之前必须加以考虑。批处理数据检索意味着从存储系统中分块检索数据,而实时数据检索意味着在可用数据后立即对其进行检索。

除了训练数据检索外,您还需要考虑预测数据检索。您的预测数据是TK(相对于训练数据进行定义),很少像训练数据那样整齐地打包,因此您需要考虑一些其他有关模型在推理时如何接收数据的问题: 

  • 您是否正在从网页获取推理数据? 

  • 您是否收到来自API的预测请求?

  • 您要进行批量或实时预测吗?

等等。

如果您要从网页获取数据,那么问题是什么类型的数据?网页中来自用户的数据可以是结构化数据(CSV,JSON)或非结构化数据(图像,视频,声音),并且推理引擎应足够健壮以进行检索,处理和做出预测。网页的推断数据可能对用户非常敏感,因此,您必须考虑隐私和道德等问题。在这里,可以考虑使用诸如Federated Learning之类的框架,其中将模型带到数据中,并且数据永远不会离开网页/用户。 

这里的另一个问题与数据质量有关。用于推理的数据通常与训练数据有很大不同,尤其是当数据直接来自最终用户而不是API时。因此,您必须提供必要的基础结构,以完全自动化检测更改和处理这些新数据。 

与检索一样,您需要考虑推理是分批完成还是实时完成。这两种情况需要不同的方法,因为所涉及的技术/技能可能不同。对于批量推理,您可能希望将预测请求保存到中央存储中,然后在指定的时间段后进行推理,而实时的是,在提出推理请求后立即执行预测,这将使您有效地进行预测计划何时以及如何计划计算资源,以及使用哪些工具。 

提出和回答与数据存储和检索有关的问题很重要,这将使您思考设计ML项目的正确方法。

框架和工具 

您的模型不会自行训练,运行和部署。为此,您需要框架和工具,软件和硬件来帮助您有效地部署ML模型。这些可以是Tensorflow,Pytorch和Scikit-Learn之类的框架,用于训练模型,Python,Java和Go之类的编程语言,甚至是AWS,GCP和Azure等云环境。 

在检查并准备好数据使用之后,下一个思路应考虑使用哪种框架和工具组合。 

框架的选择非常重要,因为它可以决定模型的连续性,维护和使用。在此步骤中,您必须回答以下问题:

  • 什么是完成任务的最佳工具?

  • 工具的选择是开源的还是封闭的?

  • 有多少平台/目标支持该工具?

为了帮助确定执行任务的最佳工具,您应该研究和比较执行相同任务的不同工具的发现。例如,您可以根据以下条件比较这些工具:

效率:框架或工具在生产中的效率如何?如果框架或工具最佳地使用诸如内存,CPU或时间之类的资源,则它是高效的。重要的是要考虑要使用的框架或工具的效率,因为它们会直接影响项目的性能,可靠性和稳定性。 

受欢迎程度:该工具在开发人员社区中的受欢迎程度如何?流行通常意味着它运作良好,正在积极使用中并且得到了大量支持。还值得一提的是,可能会有一些较新的工具不流行,但效率却比流行的工具高,尤其是对于闭源专有工具。选择专用工具时,您需要权衡一下。通常,在开源项目中,您会倾向于使用流行且更成熟的工具,原因如下所述。 

支持:如何支持框架或工具?如果它是开源的,它背后是否有一个活跃的社区?或者它对封闭源代码工具有很好的支持?您可以在实际项目中以多快的速度找到技巧,窍门,教程和其他用例? 

接下来,您还需要知道所选的工具或框架是否是开源的。这样做有优点也有缺点,答案取决于预算,支持,连续性,社区性等方面。有时,您可以获得专有的开源软件版本,这意味着您可以获得开源和高级支持的好处。 

您需要回答的另一个问题是,您选择的框架支持多少个平台/目标?也就是说,您选择的框架是否支持Web或移动环境等流行平台?它可以在Windows,Linux或Mac OS上运行吗?在此目标环境中自定义或实现容易吗?这些问题很重要,因为可以使用许多工具来研究和试验项目,但是很少有工具可以在生产过程中充分支持模型。 

反馈与迭代 

ML项目永远不会是静态的。这是工程和设计的一部分,必须从一开始就加以考虑。在这里,您应该回答以下问题:

  • 我们如何从生产模型中获得反馈?

  • 您如何设置连续交付?

从生产模型中获取反馈非常重要。主动跟踪和监视模型状态可以在模型性能下降/衰减,偏差蠕变甚至数据偏斜和漂移的情况下向您发出警告。这将确保在最终用户通知之前迅速解决此类问题。

考虑如何在生产中试验,重新训练和部署新模型,而又不降低该模型或以其他方式中断其运行。在使用新模型替换旧模型之前,应进行正确的测试。在不中断现有模型流程的情况下进行连续测试和部署新模型的想法称为连续集成。 

将模型投入生产时,还有许多其他问题,本文不是法律,但我相信,您要提出的大多数问题都属于上述类别之一。 


机器学习部署的示例

现在,我将引导您完成一个示例ML项目。在这个项目中,您是一位有前途的项目的ML工程师,并且您想要设计一个可以有效放置,监视,跟踪和部署ML模型的防故障系统。 

考虑Adstocrat,一家为在线公司提供有效的广告跟踪和监视的广告代理。他们已经与大公司合作,并且最近获得了一份合同,以建立一个机器学习系统,以预测客户是否会点击网页上显示的广告。承包商在Google云存储(GCS)存储桶中拥有大量数据集,并希望Adstocrat为他们开发端到端的ML系统。 

作为负责工程师,您必须在项目启动之前提出设计解决方案。要解决此问题,请询问前面提出的每个问题,并为此端到端系统开发设计。 

数据问题

首先,让我们谈谈数据。您的训练数据如何存储?

数据存储在GCS存储桶中,有两种形式。第一个是描述广告的CSV文件,第二个是广告的对应图片。数据已经在云中,因此在云中构建ML系统可能更好。您将获得更好的I / O延迟,随着数据变大(数百GB)而轻松扩展,以及为任何其他GPU和TPU进行快速设置和配置。 

您的数据有多大?

承包商每个月提供数百万个广告,每个月底汇总数据并将其存储在云存储桶中。因此,现在您知道您的数据量很大(数百GB的图像),因此在云中构建系统的感觉更加强烈。 

您将如何检索数据进行培训?

由于数据存储在GCS存储桶中,因此可以通过基于Google Cloud Platform的模型轻松地检索和使用。现在,您已经知道要使用哪个云提供商。

您将如何检索数据以进行预测?

在推断数据方面,承包商通知您,推断将由其内部API请求,因为用于预测的数据将由REST API调用。这使您对项目的目标平台有所了解。 

项目的框架和工具

您可以在此阶段使用多种工具组合,选择一种工具可能会影响其他工具。在用于原型设计,模型构建和部署的编程语言方面,您可以根据研究结果决定在这三个阶段选择相同的语言,或使用不同的语言。例如,Java是一种用于后端编程的非常有效的语言,但是在机器学习方面,它不能与Python等通用语言相提并论。 

经过考虑后,您决定使用Python作为编程语言,使用Tensorflow进行模型构建,因为您将使用包含图像的大型数据集,并使用Tensorflow Extended(TFX)(一种在Google内部发布并使用的开源工具)进行开发。建立您的管道。模型构建的其他方面(例如模型分析,监视,服务等)又如何呢?您在这里使用哪些工具?好吧,TFX几乎涵盖了所有内容!

TFX提供了许多框架,库和组件,用于定义,启动和监视生产中的机器学习模型。TFX中提供的组件使您可以构建有效的ML管道,这些管道专门设计用于从一开始就可以扩展。这些组件具有对ML建模,培训,服务甚至管理针对不同目标的部署的内置支持。

结论

如果在开始一个项目之前勾选所有框,则将ML模型有效地投入生产并不一定很困难。这对于您将要进行的ML项目非常重要,应该优先处理! 

尽管这篇文章并不详尽,但我希望它为您提供了有关如何进行ML项目使其投入生产的指南和直觉。 

谢谢阅读!再见。 

标签:数据科学机器学习


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×