将 Devops 应用于数据科学和机器学习

将 Devops 应用于数据科学和机器学习_第1张图片

数据科学家与软件开发人员有一些共同的实践和需求。 数据科学家和软件工程师都计划,构造,编码,迭代,测试和部署代码以实现其目标。 对于软件开发人员来说,这通常意味着定制编码应用程序和微服务。 数据科学家 与dataops进行 数据集成,通过分析模型进行预测,并创建仪表板以帮助最终用户浏览结果。

希望实现运营工程师自动化和协作的Devops工程师应扩大其范围,并作为章程的一部分向数据科学家提供服务。

拥有多个数据科学团队的大型组织可能会投资于数据科学平台,例如Alteryx Analytics,Databricks和Dataiku,这些平台提供了用于开发,测试和部署分析模型的多种工具。 这些工具在数据操作和分析功能,集成选项,治理,面向业务用户的工具以及部署选项上竞争。

对数据科学家的Devops要求与应用程序开发人员不同

并非每个组织都准备好在数据科学平台上进行投资,或者不是只有少量的数据科学团队需要基本的操作能力。 在这些情况下,最好将devops最佳实践应用于数据科学团队,而不是选择和测试平台。

为此,可以对软件开发团队使用的许多敏捷和开发范例进行一些重大调整,然后将它们应用于数据科学工作流。 尽管数据科学家的流程与开发人员的工作流程相似,但仍存在一些重要差异。

  • 数据科学工作需要围绕数据集,模型和配置进行更多的实验。 大多数软件开发版本管理实践所遵循的并不是简单的计划,构建,测试,部署周期。
  • 开发和测试模型可能不会利用统一的计算堆栈。 某些模型可以使用简单的Python脚本实现,而其他模型则可以利用Apache Spark和其他大数据平台。
  • 即使在开发模型时,计算需求也会有很大的不同。 想要与大型数据集测试模型的六个变体的数据科学家相比,一次要在较小的数据集上测试一个模型的科学家,将需要更多的计算量和存储量。
  • 部署到生产中的模型也需要进行持续的维护,但是存在更多的变量,而不仅仅是更改基础代码。 模型还需要使用更新的数据集进行重新培训,重新配置操作参数以及调整基础结构,所有这些都可能触发新的部署。
  • 监视数据管道通常需要更复杂的验证。 仅仅知道一个dataops进程正在运行并且一个模型正在处理数据还不够。 这些工具投入生产后,必须对其吞吐量,错误状况,数据源异常以及可能影响下游结果的其他状况进行监控。
  • 为了获得成功,数据科学家必须与开发人员,工程师和业务负责人合作,这比在应用程序开发中加强开发人员和运营之间的协作要艰巨得多。 此外,许多数据科学家和团队可能没有向IT组织汇报,这使得为这些小组规定标准和治理变得更加困难。

支持数据科学家需要在着手开发实践和解决方案之前了解这些差异和其他差异。 这里是一些起点。

从数据科学家的经验开始

像应用程序开发人员一样,数据科学家对解决问题最感兴趣,对配置工具的投入非常大,而对配置基础结构的兴趣通常较小。 但是与软件开发人员不同,数据科学家可能没有完全配置其开发工作流程的经验和背景。 这为devop工程师提供了将数据科学家视为客户 ,帮助定义他们的要求并掌握提供解决方案所有权的机会。

这可以从数据科学家的基础设施开始。 他们使用Python,R或其他语言编码吗? 他们使用哪些工具(Jupyter,Tableau,Apache Kafka和NLTK)进行分析和建模? 它们将哪些数据库和云用作数据源,用于存储经过训练的数据以及用于部署模型?

从那里,devops工程师可以帮助选择和标准化开发环境。 传统上,这可以在计算设备或虚拟桌面上完成。 无论哪种方式,将其应用程序和配置镜像到开发环境都是与数据科学家合作的重要的第一步。

之后,devops工程师应检查数据科学家将代码存储在何处,如何对代码进行版本控制以及如何对代码进行打包以进行部署。 一些数据科学家在使用版本控制工具(例如Git)方面还比较陌生。 其他人可能正在使用代码存储库,但尚未自动进行任何集成。 实现持续集成是开发人员工程师帮助数据科学家的第二个要点,因为它可以创建标准并省去测试新算法的一些手动工作。

要记住的一件事是,某些SaaS和企业数据平台可能具有内置的版本控制,而不能自然地与为代码设计的版本控制系统对接。 这些平台中的许多平台确实具有可以触发集成和部署的API,或者可以模仿CI / CD管道的其他机制。

定义部署管道并配置基础架构

通过开发环境和标准化的持续集成,开发人员的工程师应该考虑自动化测试和生产环境的其他方面。 这可以通过使用诸如Jenkins之类的工具引入部署管道并使用Chef,Puppet,Ansible或其他工具将基础结构配置为代码来完成。

数据科学环境也是Docker等容器以及Kubernetes等容器管理和编排工具的理想选择 。 数据科学环境通常是数据操作,数据管理和数据建模平台的组合,需要作为集成环境进行部署和管理。

了解运行数据集成,机器学习培训和其他数据分析工作的规模和频率至关重要。 Devops工程师可能会发现多种模式,因为数据科学家会处理各种不同的工作负载,例如针对部分数据集频繁测试新模型,计划运行以重新训练生产机器学习模型,以及特殊工作来训练新的分析模型。 这些工作负载类型应帮助开发人员的工程师决定如何最好地配置和扩展云基础架构,以满足不同的计算和存储需求。

开发人员,开发人员工程师和数据科学家应就业务成果进行协作

实施devop的最重要方面是促进具有冲突目标的 开发人员和工程师之间的协作 。 开发人员承受着频繁发布应用程序更改的压力,工程师对生产工作流程的性能和可靠性负责。 让开发人员和工程师协作进行自动化并标准化配置可以实现这两个目标。

数据科学家是这种合作的第三方。 他们经常面临向主管和业务经理提供分析的压力。 有时他们正在开发模型,希望开发人员可以在其应用程序中使用它们。 他们对可变容量的基础架构有强烈的需求,并且在尝试新平台,库和基础架构配置时,甚至比开发人员的要求更高。

数据科学家需要与开发人员和工程师建立这种伙伴关系,以提供成功的分析。 了解他们的目标,定义目标目标以及在devop实施上进行合作是这些小组如何协作和交付业务成果的方式。

From: https://www.infoworld.com/article/3409620/applying-devops-in-data-science-and-machine-learning.html

你可能感兴趣的:(将 Devops 应用于数据科学和机器学习)