kubernetes 数据_为什么数据科学家喜欢Kubernetes

kubernetes 数据

让我们从一个毫无争议的观点开始:软件开发人员和系统操作员喜欢Kubernetes ,它是在Linux容器中部署和管理应用程序的一种方式。 Linux容器为可重现的构建和部署奠定了基础,但是Kubernetes及其生态系统提供了使容器非常适合运行真实应用程序的基本功能,例如:

  • 持续集成和部署,因此您可以从Git提交到通过测试套件再到在生产中运行的新代码

  • 无处不在的监视,可以轻松跟踪有关系统任何组件的性能和其他指标,并以有意义的方式将其可视化

  • 声明式部署,使您可以依靠Kubernetes在登台环境中重新创建生产环境

  • 灵活的服务路由,这意味着您可以扩展服务或逐步将更新发布到生产中(并在必要时将其回滚)

数据科学项目:预测客户流失

有些人广泛定义了数据科学,包括机器学习(ML),软件工程,分布式计算,数据管理和统计。 其他人将领域更狭窄地定义为通过将某些领域的专业知识与机器学习或高级统计相结合来找到解决现实问题的解决方案。 本文中我们不会致力于对数据科学家的明确定义,但是我们将告诉您数据科学家在一个典型项目中可能打算做什么以及他们将如何工作。

kubernetes 数据_为什么数据科学家喜欢Kubernetes_第1张图片

考虑一下任何一家订阅客户的企业所面临的问题:有些可能不会续签。 客户流失检测旨在主动识别可能不会续签合同的客户。 一旦确定了这些客户,企业就可以选择使用特定干预措施(例如,销售电话或打折)来定位他们的帐户,以降低他们离开的可能性。 总体防止客户流失问题包括几个部分:预测哪些客户可能会离开,确定可能保留客户的干预措施,以及在干预措施预算有限的情况下优先确定目标客户。 数据科学家可以从事所有或所有这些工作,但是我们将使用第一个作为运行示例。

要解决的问题的第一部分是确定“搅动”的适当定义,以将其纳入预测模型。 我们可能对失去客户意味着什么有一个直观的定义,但是数据科学家需要将这个定义正式化,例如,将客户流失预测问题定义为:“鉴于过去18个月中该客户的活动,他们有多大可能在接下来的六个月内取消合同?”

kubernetes 数据_为什么数据科学家喜欢Kubernetes_第2张图片

然后,数据科学家需要确定模型应考虑的有关客户活动的数据,实际上是充实并正式确定客户流失定义的第一部分。 具体来说,数据科学家可能会在历史窗口中考虑有关客户对公司产品的实际使用,帐户的大小,与客户的互动次数,甚至评论的基调的任何可用信息。他们提交的支持票。 我们的模型考虑的度量或数据称为特征

kubernetes 数据_为什么数据科学家喜欢Kubernetes_第3张图片

有了客户流失的定义和要考虑的一组功能,数据科学家就可以开始对历史数据进行探索性分析(包括给定时期内给定客户的功能集和最终结果)。 探索性分析可以包括可视化功能组合,并查看它们与客户是否流失的相关性。 更一般地,该过程的这一部分试图确定历史数据中的结构,以及是否有可能根据表征其特征的数据在保留的客户和搅动的客户之间找到明确的分离。

kubernetes 数据_为什么数据科学家喜欢Kubernetes_第4张图片

对于某些问题,数据中并不存在明显的结构-在这种情况下,数据科学家将不得不回到制图板上并识别一些新数据以进行收集,或者也许是一种新颖的方式来对数据进行编码或转换可用数据。 但是,探索性分析通常可以帮助数据科学家在训练预测模型时确定要考虑的特征,并提出一些转换这些数据的方法。 数据科学家的下一个工作是功能工程 :找到一种转换和编码功能数据的方法(可能在数据库表中,事件流中或通用编程语言中的数据结构中),以便适合输入到训练模型的算法。 这通常意味着将这些特征编码为浮点数的向量。 只是任何编码都无法做到; 数据科学家需要找到一种保留特征结构的编码,以便相似的客户映射到相似的矢量,否则该算法的性能将很差。

kubernetes 数据_为什么数据科学家喜欢Kubernetes_第5张图片

直到现在,数据科学家才准备训练预测模型。 对于预测客户是否会流失的问题,模型训练管道从带有标签的有关客户的历史数据开始。 然后,它使用在特征工程流程中开发的技术从原始数据中提取特征,从而生成标有“ true”或“ false”并对应于将在或不在窗口中搅动的客户的浮点数向量。利益。 模型训练算法将特征向量的这种集合作为输入,并以最小化误差的方式优化了将真向量与假向量分开的过程。 预测模型最终将是一个采用特征向量并返回true或false的函数,指示与该向量相对应的客户是否可能流失。

在此过程中的任何时候,数据科学家可能都需要重新审视先前的阶段,也许是为了完善功能设计方法,收集不同的数据,甚至更改他们试图预测的指标。 这样,数据科学工作流程与传统软件开发生命周期非常相似:在实施过程中发现的问题可能迫使工程师改变接口设计或选择数据结构。 这些问题甚至可以一直追溯到需求分析,从而迫使人们对项目的基本原理进行更广泛的重新思考。 幸运的是,Kubernetes可以像支持软件开发生命周期一样支持数据科学家的工作流程。

Kubernetes用于数据科学

数据科学家有许多与软件工程师同样的关注点:可重复的实验(如可重复的构建); 便携式和可复制的环境(例如在开发,阶段和生产中具有相同的设置); 凭证管理; 跟踪和监控生产中的指标; 灵活的路由; 轻松扩展。 不难看出应用程序开发人员使用Kubernetes做的事情与数据科学家可能想做的事情之间的某些类比:

  • 可重复的批处理作业,例如CI / CD管道,类似于机器学习管道,因为多个协调的阶段需要以可重现的方式一起工作以处理数据。 提取特征; 并训练,测试和部署模型。

  • 描述服务之间连接的声明性配置有助于跨平台创建可重现的学习管道和模型。

  • 微服务架构使管道内机器学习模型的调试变得简单,并帮助数据科学家与其团队其他成员之间的协作。

数据科学家与应用程序开发人员面临许多相同的挑战,但是他们面临着一些独特的挑战,这些挑战与数据科学家的工作方式以及与传统服务相比,机器学习模型更难以测试和监控的事实有关。 我们将集中讨论与工作流程有关的一个问题。

大多数数据科学家在交互式笔记本进行探索性工作。 笔记本环境(例如Jupyter项目开发的环境)提供了一个交互式的识字编程环境 ,用户可以在其中混合说明文字和代码。 运行并更改代码; 并检查其输出。

这些特性使笔记本电脑的环境极具灵活性,可以进行探索性分析。 但是,它们不是用于协作或发布的理想软件工件-设想软件开发人员发布其工作的主要方式是将交互式REPL的成绩单发布到pastebin服务中。

与同事共享一个交互式笔记本类似于共享一个物理笔记本-那里有一些很好的信息,但是他们必须做一些挖掘才能找到它。 而且由于笔记本电脑的脆弱性和对环境的依赖性,当同事运行笔记本电脑时,他们可能会看到不同的输出,甚至更糟:它可能会崩溃。

面向数据科学家的Kubernetes

数据科学家可能不想成为Kubernetes专家-很好! Kubernetes的优点之一是它是用于构建高级工具的强大框架。

一种这样的工具是Binder服务 ,该服务使用Jupyter笔记本的Git存储库,构建一个容器图像来为它们提供服务,然后在Kubernetes集群中以裸露的路线启动该图像,以便您可以从公共Internet进行访问。 由于笔记本电脑的一大缺点是其正确性和功能可能取决于其环境,因此拥有可以构建不可变环境以在Kubernetes上为笔记本电脑服务的高级工具可以消除许多麻烦。

可以使用托管的Binder服务或运行自己的Binder实例 ,但是如果您希望在此过程中具有更多的灵活性,则还可以使用源到图像(S2I)工作流和工具以及Graham Dumpleton的Jupyter S2I图像推出自己的笔记本服务。 实际上,从源到图像的工作流程是基础结构或包装专家构建主题专家可以使用的高级工具的一个很好的起点。 例如,Seldon项目使用S2I简化了发布模型服务-只需向构建器提供模型对象,它将构建一个将其作为服务公开的容器。

源到映像工作流的一个很棒的事情是,它可以在构建映像之前对源存储库执行任意操作和转换。 作为此工作流程功能强大的一个示例,我们创建了一个S2I构建器图像 ,该图像以Jupyter笔记本作为输入,该笔记本显示了如何训练模型。 然后,它处理此笔记本以识别其依赖关系,并提取Python脚本来训练和序列化模型。 有了这些,构建器将安装必要的依赖项并运行脚本以训练模型。 构建器的最终输出是一个REST Web服务,该服务为笔记本构建的模型提供服务。 您可以观看此笔记本到模型服务S2I 的视频 。 同样,这不是数据科学家必须开发的工具,但是创建这样的工具对于Kubernetes和包装专家与数据科学家合作是一个很好的机会。

Kubernetes用于生产中的机器学习

Kubernetes可以为正在开发技术以解决机器学习业务问题的数据科学家提供很多东西,但是它也可以为将这些技术投入生产的团队提供很多东西。 有时,机器学习代表着单独的生产工作负荷(批处理或流式作业,以训练模型并提供见解),但是机器学习已越来越多地作为智能应用程序的重要组成部分投入生产。

Kubeflow项目针对需要在Kubernetes上站起来维护机器学习工作负载和管道的机器学习工程师。 对于精通基础架构的数据科学家而言,Kubeflow也是一个极好的发行版。 它提供了模板和自定义资源,以在Kubernetes上部署各种机器学习库和工具。

Kubeflow是在Kubernetes下运行TensorFlow,JupyterHub,Seldon和PyTorch等框架的绝佳方法,因此代表了真正可移植的工作负载的途径:数据科学家或机器学习工程师可以在笔记本电脑上开发管道并将其部署到任何地方。 这是一个发展Swift的社区,正在开发一些很酷的技术,您应该检查一下!

Radanalytics.io是一个面向应用程序开发人员的社区项目,它专注于开发依赖于容器中的横向扩展计算的智能应用程序的独特需求。 radanalytics.io项目包括一个容器化的Apache Spark发行版,以支持可伸缩的数据转换和机器学习模型训练,以及一个Spark运算符和Spark管理界面。 该社区还通过为Jupyter笔记本,TensorFlow培训和服务以及S2I构建器提供模板和图像来支持整个智能应用程序生命周期,这些模板和图像可以部署应用程序以及所需的横向扩展计算资源。 如果要开始在OpenShift或Kubernetes上构建智能应用程序,那么一个不错的起点是radanalytics.io上的许多示例应用程序或会议演讲之一。


Sophie Watson和William Benton于12月10日至13日在西雅图的KubeCon + CloudNativeCon北美 会议上介绍了为什么数据科学家喜欢Kubernetes 。

翻译自: https://opensource.com/article/19/1/why-data-scientists-love-kubernetes

kubernetes 数据

你可能感兴趣的:(kubernetes 数据_为什么数据科学家喜欢Kubernetes)