Press "Enter" to skip to content

构建适用于企业的机器学习运营

支持您的AI战略的有效MLOps蓝图

Image by Author: Generated with Midjourney

背景-导航MLOps

在我的职业生涯中,我注意到成功的AI战略的关键在于将机器学习模型部署到生产中,从而在规模上释放其商业潜力。然而,这不是小事-它涉及到各种技术、团队的整合,通常需要组织内的文化转变,这个系统被称为MLOps。

然而,并不存在一种适用于所有公司的MLOps战略。在本文中,我提供了一个灵活的MLOps蓝图,可以作为起点或调整您当前工作流程的手段。虽然MLOps之旅可能很复杂,但我强烈建议将其视为将AI整合到您的业务中的不可或缺的初始步骤,而不是次要考虑因素。

MLOps超越技术

Image by Author: The components of successful MLOps strategies

在深入技术之前,我想分享一下我观察各种MLOps战略的(非技术)见解。MLOps不仅仅是技术-它取决于三个关键组成部分:投资、文化和技术。从一开始就考虑到这三点的公司通常在战略上更加成功。我见过的一个常见错误是企业优先考虑解决方案的投资,而没有考虑必要的文化转变。这个疏忽可能会严重削弱您的战略,可能会浪费资金并削弱高管或投资者的信心。

文化

向任何企业介绍新文化都不是一件容易的事情,需要全面的人员支持。我看到的一个常见陷阱是企业在考虑文化变革时,突然用新的、闪亮的工具替换旧的工具。这种方法可能会导致怨恨,这些工具被忽视或被误用。

相反,有效管理文化变革的公司已经让最终用户参与到制定MLOps战略中,并分配了他们负责促进所有权的责任。此外,他们提供了必要的支持和培训,以提高用户的技能,奖励参与这些计划。

解决方案可能确实在技术上更为优越,但如果没有推动文化变革,它就会面临无效的风险。毕竟,是人操作技术,而不是反过来。

技术

为了简洁起见,我将技术定义为技术基础设施和数据管理服务的组合。

一个有效的MLOps战略是建立在成熟数据生态系统之上的。通过利用数据管理工具,数据科学家应该被授权以安全和符合监管的方式访问数据,以进行模型开发。

从技术基础设施的角度来看,我们应该赋予数据科学家和ML工程师访问硬件和软件的能力,以促进AI产品的开发和交付。对于许多公司来说,利用云基础设施是必不可少的支持。

投资

MLOps中没有捷径,特别是当涉及到投资时。高效的MLOps战略应该优先考虑在人员和技术方面的投资。我遇到的一个反复出现的问题是客户往往会由于预算限制而围绕单个数据科学家构建MLOps战略。在这种情况下,我通常建议重新评估,或者至少降低期望值。

从一开始,确立您在创新方面的投资程度及其持续时间是至关重要的。事实上,如果您希望AI成为您业务的基础并获得相关的利益,持续的投资至关重要。

如果您想了解有关开发AI战略的信息,可以阅读我的关于使用Wardley Maps制定AI战略的文章:

为企业建立AI战略

通过 Wardley 地图制定 AI 策略的艺术

towardsdatascience.com

MLOps 的高级蓝图

现在我们已经打好基础,我们将深入探讨 MLOps 的一些技术组件。为了帮助可视化,我设计了一个流程图,展示了各个过程之间的关系。虚线表示数据流动,实线表示从一个活动到另一个活动的转换。

Image by Author: High Level MLOps Workflow

模型开发实验室

模型开发的过程本质上是不可预测和迭代的。未能认识到这一点的公司将难以构建有效的 AI 策略。事实上,模型开发往往是工作流中最混乱的方面,充满了试验、重复和频繁的失败。所有这些元素在探索新解决方案时都是必不可少的,这就是创新的源头。因此,数据科学家需要什么?实验、创新和协作的自由。

有一种普遍的观念认为,数据科学家在编写代码时应遵循软件工程最佳实践。虽然我不反对这种观点,但每件事都有其时机和场所。我不认为模型开发实验室一定是这个领域。我们应该接受混沌作为工作流的必要部分,寻求利用帮助我们管理它的工具——有效的模型开发实验室应该提供这样的工具。让我们来看看一些潜在的组件。

实验和原型制作——Jupyter Labs

Jupyter Labs 提供了一个多功能的集成开发环境(IDE),适用于创建初步模型和概念验证。它提供了笔记本、脚本和命令行界面的访问,这些功能对数据科学家来说通常都很熟悉。

作为一个开源工具,Jupyter Labs 具有与 Python 和 R 的无缝集成,涵盖了现代数据科学模型开发任务的大部分。大多数数据科学工作负载都可以在实验室 IDE 中进行。

环境管理——Anaconda

Image by Author: Schematic of Anaconda virtual environments and model sharing in model development labs

有效的环境管理可以简化后续的 MLOps 工作流步骤,重点放在安全访问开源库和重现开发环境上。Anaconda 是一个软件包管理器,允许数据科学家使用简单的命令行界面创建虚拟环境并安装模型开发所需的必要库和包。

Anaconda 还提供了仓库镜像,用于评估开源软件包的安全商业使用,但应考虑第三方管理的相关风险。使用虚拟环境在管理实验阶段非常重要,为给定实验提供了一个包含所有包和依赖项的封闭空间。

版本控制和协作——GitHub Desktop

协作是成功的模型开发实验室的关键部分,利用 GitHub Desktop 是促进这一过程的有效方式。通过 GitHub Desktop,数据科学家可以为每个实验室创建一个仓库。每个仓库存储了模型开发笔记本或脚本,以及一个 environment.yml 文件,该文件指示 Anaconda 如何在另一台机器上重现开发笔记本的环境。

三个实验室组件 Jupyter Labs、Anaconda 和 GitHub 的组合为数据科学家提供了一个安全的空间,可以进行实验、创新和协作。

#一个示例 environment.yml 文件,用于复制 conda 环境name: myenvchannels:  - conda-forgedependencies:  - python=3.9  - pandas  - scikit-learn  - seaborn

模型管道开发

在我与处于MLOps成熟初期阶段的客户的讨论中,似乎存在这样一种想法,即数据科学家开发模型然后“交给”机器学习工程师“投入生产”。这种方法行不通,很可能是失去机器学习工程师的最快方式。没有人想要处理别人的混乱代码,而且说实话,期望工程师这样做是不公平的。

相反,组织需要培养一种文化,让数据科学家负责在数据实验室内开发模型,然后将其形式化为端到端模型管道。以下是原因:

  • 数据科学家比任何其他人更了解他们的模型。让他们负责创建模型管道将提高效率。
  • 在开发的每个阶段建立软件工程最佳实践的文化。
  • 机器学习工程师可以专注于增加价值的工作,例如资源配置、扩展、自动化,而不是重构别人的笔记本。

一开始构建端到端管道可能会令人望而生畏,但幸运的是,有一些针对数据科学家的工具可以帮助他们实现这一目标。

模型管道构建-Kedro

Kedro是来自麦肯锡量子黑客的Python开源框架,旨在帮助数据科学家构建模型管道。

# Kedro项目的标准模板{{ cookiecutter.repo_name }}     # 模板的父目录├── conf                         # 项目配置文件├── data                         # 本地项目数据├── docs                         # 项目文档├── notebooks                    # 与项目相关的Jupyter笔记本├── README.md                    # 项目自述文件├── setup.cfg                    # 工具配置选项└── src                          # 项目源代码    └── {{ cookiecutter.python_package }}       ├── __init.py__       ├── pipelines       ├── pipeline_registry.py       ├── __main__.py       └── settings.py    ├── requirements.txt    ├── setup.py    └── tests

Kedro提供了一个标准模板,用于使用软件工程最佳实践构建端到端模型管道。其背后的概念是鼓励数据科学家构建模块化、可重复、可维护的代码。一旦数据科学家完成了Kedro工作流程,他们就实际上构建了可以更轻松地部署到生产环境的东西。以下是总体概念:

  • 项目模板:Kedro提供了一个标准且易于使用的项目模板,增强了结构、协作和效率。
  • 数据目录:Kedro中的数据目录是该项目可以使用的所有数据源的注册表。它提供了定义存储数据的方式和位置的简单方法。

从https://docs.kedro.org/en/0.18.1/faq/faq.html中获取的Kedro定义的数据工程目录

  • 管道:Kedro将您的数据处理结构化为依赖任务的管道,强制执行清晰的代码结构,可视化数据流和依赖关系。
  • 节点:在Kedro中,节点是Python函数的包装器,命名该函数的输入和输出,作为Kedro管道的构建块。
  • 配置:Kedro管理各种环境(开发、生产等)的不同配置,而不会将任何配置硬编码到您的代码中。
  • I/O:在Kedro中,I/O操作与实际计算分离,这增加了代码可测试性和模块化,并且易于在不同数据源之间切换。
  • 模块化和可重用性:Kedro提倡一种模块化的编码风格,产生可重用、可维护和可测试的代码。
  • 测试:Kedro集成了Python中的测试框架PyTest,使编写管道测试变得容易。
  • 版本控制:Kedro支持数据和代码的版本控制,使您的管道的任何先前状态都可以复制。
  • 日志记录:Kedro提供了一个标准化的日志记录系统,用于跟踪事件和更改。
  • 钩子和插件:Kedro支持钩子和插件,根据项目要求扩展框架功能。
  • 与其他工具的集成:Kedro可以与各种工具集成,如Jupyter笔记本电脑、Dask、Apache Spark等,以便于数据科学工作流程的不同方面。

所有的Kedro项目都遵循这个基本模板。在数据科学团队中强制执行这个标准将有助于实现复制性和可维护性。

有关Kedro框架的更全面概述,请访问以下资源:

  • Kedro文档:链接
  • 数据工程中分层思考的重要性: 链接

注册表和存储——数据版本控制(DVC)

注册表和存储是机器学习中实现可重复性的基础,任何打算将机器学习纳入业务的企业都应该牢记这一点。机器学习模型基本上由代码、数据、模型工件和环境组成,所有这些都必须可以追踪以实现可重复性。

DVC是一种提供模型和数据版本控制及跟踪的工具。虽然GitHub也可以是一种替代方案,但它在存储大型对象方面受到限制,对于大型数据集或模型存在问题。DVC本质上扩展了Git,提供了相同的版本控制功能,同时使得可以将更大的数据集和模型存储在本地或云端的DVC repo中。

在商业设置中,将代码的版本控制存储在Git repo中,同时将实际的模型工件和数据分别存储在受控环境中,具有明显的安全优势。

请记住,随着AI在商业用途上的监管加强,模型可重复性将变得越来越重要。可重复性可以促进审计。

模型管道部署——Docker

作者的图片:Docker推理管道的示意图,注意这种方法也可以应用于模型监视和重新训练管道

部署不仅仅是一个单一的任务,而是由工具、活动和流程精心构造而成;Docker将所有这些内容都绑定在一起,用于模型部署。对于具有众多依赖项的复杂的ML应用程序来说至关重要,Docker通过封装应用程序及其环境来确保任何机器上的一致性。

该过程始于Dockerfile;随后Docker使用其命令构建一个镜像,一个适合任何启用Docker的机器的完整打包模型管道。与Kedro的管道功能配合使用,Docker可以有效地部署模型重新训练和推理管道,确保在ML工作流程的所有阶段中实现可重复性。

模型监视和重新训练管道——MLflow

随着时间的推移,机器学习模型会遭受性能下降,这可能是由于概念漂移或数据漂移引起的。我们希望能够在我们的模型性能开始出现问题时进行监视和重新训练。MLflow通过其跟踪API提供了这种能力。数据科学家应将跟踪API纳入其构建的模型训练和推理管道中。尽管我已经指定了MLflow用于模型监视和重新训练管道的跟踪,但在模型开发实验室中也可以进行跟踪,特别是用于实验跟踪。

推理端点

鉴于推理管道已被封装到Dockerfile中,我们可以在任何地方创建推理管道的Docker镜像,用作任何应用程序的API端点。根据使用情况,我们将不得不决定在哪里部署Docker镜像,但这超出了本文的范围。

角色和责任

在MLOps中分配不同的角色和责任对其成功至关重要。MLOps的多面性跨越多个学科,需要明确划分角色。这确保了每个任务的高效完成。此外,它促进了责任制,有助于更快地解决问题。最后,清晰的委派减少了混乱和重叠,使团队更有效率,并有助于维护和谐的工作环境。就像一个润滑良好的机器,每个齿轮都要完美地发挥其作用。

数据科学家

  • 角色:数据科学家在MLOps策略中的主要职能是专注于模型开发。这包括初始实验、原型制作和为经过验证的模型设置建模管道。
  • 责任:数据科学家确保模型符合机器学习最佳实践,并与业务案例相一致。除了实验室任务外,他们还与业务利益相关者进行接触,确定有影响力的解决方案。他们完全负责数据实验室,首席数据科学家应该为设置实验室的操作节奏和最佳实践进行领导。

机器学习工程师

  • 角色:ML工程师监督MLOps的技术基础设施,探索创新解决方案,与数据科学家一起制定策略,并提高流程效率。
  • 职责:他们确保技术基础设施的功能,监控组件的性能以控制成本,并确认生产模型在所需的规模下满足需求。

数据治理专业人员

  • 角色:数据治理专业人员维护安全和数据隐私政策,在MLOps框架内安全传输数据中发挥关键作用。
  • 职责:虽然数据治理是每个人的责任,但这些专业人员通过定期检查和审计制定政策并确保合规性。他们跟进规定并确保所有数据消费者的合规性。

结论

在MLOps领域中航行是一项需要有意识的规划、正确的技术和人才组合以及支持变革和学习的组织文化的任务。

这个过程可能看起来复杂,但通过采用精心设计的蓝图,将MLOps作为一个整体的、迭代的过程而不是一次性项目来处理,你可以从你的AI战略中获得巨大的价值。不过要记住,没有一种方法适用于所有情况。关键是根据你的具体需求量身定制你的策略,并保持对变化情况的灵活应对。

关注我的领英账号:

订阅小猪AI,获取更多我的见解:

我分享数据科学项目、经验和专业知识,以帮助你在你的旅程中前行。你可以通过以下方式注册小猪AI…

johnadeojo.medium.com

如果你有兴趣将AI或数据科学整合到你的业务运营中,我们邀请你与我们安排一次免费的初步咨询:

在线预约 | 数据中心解决方案

通过免费咨询,发现我们在帮助企业实现雄心壮志方面的专业知识。我们的数据科学家和…

www.data-centric-solutions.com

Leave a Reply

Your email address will not be published. Required fields are marked *