使用Azure机器学习进行机器学习运营(MLOPs)
使用Azure机器学习进行MLOPs
机器学习运营(MLOps)可以显著加快数据科学家和机器学习工程师满足组织需求的速度。一个良好实施的MLOps流程不仅可以加速从测试到生产的转换,还可以为团队提供有关使用的ML工件的所有权、血统和历史数据。现在,数据科学团队需要具备CI/CD技能,以保持持续的推理,进行重新训练周期和模型的自动重新部署。许多ML专业人员仍然被迫手动运行MLOps,这减少了他们可以专注于为业务添加更多价值的时间。
为了解决这些问题,许多个人和团体一直在开发特定的加速器和培训材料,以满足他们自己或客户的个别需求。这导致了大量的加速器、代码存储库,甚至是使用或基于Azure Machine Learning(Azure ML)构建的全面产品。我们收集并评估了来自组织各地的20多个MLOps解决方案加速器和代码库。随着时间的推移,一些这些“热门”存储库的维护不足导致了令人沮丧的经历,原因有各种各样。这些存储库存在各种编码模式问题,或者只使用了一小部分真实生产工作负载的示例。
基于我们对这些加速器的分析,我们确定了可以利用的设计模式和代码。
我们汇集了来自各个国家和职能部门的30多个资源,包括Azure ML产品和工程团队,以协调工作并开发MLOps v2加速器,与Azure Machine Learning v2平台、CLI和SDK的开发保持一致。现在,我们有了一个包含可重复、自动化和协作的工作流和模式的代码库,其中包括将机器学习模型部署到生产的最佳实践。
对于客户来说,这有助于减少启动新数据科学项目并将其推向生产所需的时间。我们的加速器提供了模板,可以重复使用以建立一种与各种实施模式兼容的标准化方法。该加速器包括与存储库组件、存储库结构、模型开发和模型部署之间的链接以及数据科学过程的每个阶段的技术选择等关键MLOps决策。目前,我们支持24种不同的实施模式。该加速器为客户提供了灵活性、安全性、模块化和可扩展性,同时提供易于使用的功能,帮助他们快速从开发转向生产。
解决方案加速器架构
MLOps v2架构模式由四个模块化元素组成,代表了给定数据科学场景的MLOps生命周期的阶段,这些元素之间的关系和流程,以及与这些元素的所有权相关的角色。下面是针对表格数据的经典机器学习场景的MLOps v2架构,以及每个元素的解释。
图1:使用AML的经典机器学习MLOps架构
1. 数据资产:该元素代表组织的数据资产、潜在的数据源和数据科学项目的目标。数据工程师将是MLOps v2生命周期中该元素的主要所有者。这个图中的Azure数据平台既不是详尽无遗的,也不是指导性的。然而,将突出显示代表基于客户用例的推荐最佳实践的数据源和目标,以及它们与架构中其他元素的关系。
2. 管理/设置:该元素启动MLOps v2加速器的部署。它包括与项目相关的所有资源和角色的创建和管理相关的所有任务。这些任务可以包括但不限于:
a. 创建项目源代码存储库。 b. 为项目创建Azure Machine Learning工作区。 c. 创建/修改用于模型实验和部署的数据集和计算资源。 d. 定义项目团队用户、他们的角色以及对其他资源的访问控制。 e. 创建CI/CD(持续集成和持续交付)流水线。 f. 创建用于收集和通知模型和基础设施指标的监视器。
与此阶段相关的角色可能主要是基础设施团队,但也可能包括所有的数据工程师、机器学习工程师和数据科学家。
3. 模型开发(内循环):内循环元素包括您的迭代数据科学工作流程。典型的工作流程如下:数据摄取、探索性数据分析(EDA)、实验、模型开发和评估,以及候选模型注册到生产环境。MLOps v2加速器中实现的这个模块化元素是通用的,可适应您的团队开发模型所使用的流程。
与此阶段相关的人员包括数据科学家和机器学习工程师。
4. 部署(外循环):外循环阶段包括预生产部署测试、生产部署以及由内循环团队注册候选生产模型后由持续集成流水线触发的生产监控。持续部署流水线将根据组织和用例的需求,在通过适当的测试后,将模型和相关资源推进到生产环境和生产监控中。在暂存/测试和生产环境中进行监控有助于收集数据并针对与模型性能、数据漂移和基础设施性能相关的问题采取行动,可能需要人工审查、自动重新训练和重新评估模型,或重新访问开发循环或管理/设置以进行新模型开发或基础设施资源修改。与此阶段相关的人员主要是机器学习工程师。
该存储库还具有专为计算机视觉(CV)和自然语言处理(NLP)用例设计的体系结构。针对Azure ML + Spark和物联网(IoT)边缘场景的其他定制体系结构正在开发中。
技术实现
MLOps存储库包含了我们收集到的最佳实践,使用户能够以最小的工作量从开发转向生产。我们还确保不会被任何单一技术堆栈或硬编码的示例所束缚。然而,我们仍然努力确保示例易于使用,并在需要时可扩展。MLOps存储库包括以下技术矩阵。用户可以从堆栈中选择任意组合来满足他们的需求。
Azure/mlops–v2存储库:Azure MLOps(v2)解决方案加速器。 (github.com) 是一个单一存储库,用户可以配置其中的任何架构模式来开始使用。用户可以从每列中选择一个项目来配置自定义存储库。例如,他们可以选择使用Terraform创建基础设施,并使用GitHub作为CI/CD平台。数据科学家可以选择他们的机器学习问题以及他们想要使用的语言来部署他们的流水线。
表1:架构模式
加粗的项目现在可用。
这些模式可以用于在线或批处理模式(评分)。它们可以部署在安全或非安全环境中,包括单个或多个Azure机器学习工作区。多个工作区通常用于将开发、测试和生产工作负载分离。对于后者,我们还展示了如何将模型和/或代码的推进作为源代码控制工作流程的一部分,或者可选地配置为部署流水线中的批准步骤的示例。
MLOps v2加速器还包括其他可选配置的构建模块。这些模块包括:
1. 负责任的人工智能:虽然这些模块是常规的Azure ML工作区的一部分,但我们现在将它们作为一个可以由人工审查的步骤包含在内。这个手动步骤可以确保开发的模型符合负责任的人工智能原则。
2. 安全性:我们已经包含了来自GitHub高级安全扫描和凭据扫描的步骤和最佳实践(也可在Azure DevOps中使用),可以将其纳入工作流程中。例如,我们提供了一个示例,演示如何使用conda.yml和requirements.txt来在安装的Python包上启用安全扫描。这在我们设置环境和推理容器的当前方式下是不可能的。我们提供了关于如何配置存储库以在流程的早期执行软件包扫描,以防止安全问题成为将模型部署到生产的阻碍因素的GitHub用户文档。
安全是一个重要问题,为了确保安全,我们引入了对安全工作区的支持。这将帮助团队保护其项目和数据的机密性。此外,我们理解快速验证概念的重要性。因此,我们创建了使用Azure DevOps(ADO)、GitHub和Microsoft Learn的快速部署示例,帮助你在最短的时间内测试你的想法。
图2:GitHub的Dependabot警报设置在仓库中的示例
3. Feathr功能存储库集成:我们很高兴地宣布,在MLOps V2扩展架构中,我们将Feathr作为企业级功能存储库进行集成。使用Terraform脚本实现Feathr的部署,并提供了一个简单的经典机器学习示例,以指导您进行实施。
4. 多数据集注册和第三方容器支持:根据用户的要求,我们在MLOps V2加速器中增加了注册多个数据集的功能。我们相信这将为数据科学家和机器学习工程师在项目中使用各种数据集提供了很大的灵活性。此外,我们还添加了对第三方或外部容器的支持。我们甚至支持在Docker容器中通过pip install进行可靠的Python软件包扫描。
5. 模型可观测性:要有效地监测和识别模型和数据漂移,需要一种捕捉和分析数据的方法,特别是来自生产系统的数据。我们已经实现了Azure数据探索器(ADX)作为摄取和分析数据的平台。典型的score.py被修改为将数据推送到ADX。
6. 模型和数据漂移:我们有两种模型和数据漂移的模式。其中一种模式基于ADX,而另一种模式依赖于将计算作为Azure ML管道的一部分。实现的选择取决于客户的偏好。两种方法都包括各种统计测试来估计目标和预测之间的漂移。我们还计划进一步扩展,以包括相关性分析和其他统计测试,例如Jensen-Shannon散度等,用于更大的数据集(但目标值很少)。
7. 容器:这些模式还演示了用户如何将其容器带入Azure ML工作区进行训练和推断,这些容器是在Azure容器仓库(ACR)之外构建的容器。我们正在与产品和工程团队讨论,以提供DeepSpeed和基于ONNX的示例,以帮助最终用户更快地训练和推断他们的模型。
附加功能
该存储库包含如何有效地处理MLFlow模型的示例,该模型允许无缝且无需编码的API部署,不仅适用于表格数据,还适用于计算机视觉等深度学习模型。
该存储库的结构使客户组织可以在整个组织中驱动模式的一致性和重用性。为此,我们创建了一个单独的存储库,其中包含各个步骤的示例,例如安装Azure CLI或部署模型。然后,这些示例可以在主项目存储库的管道中组装为可根据需要进行调整的构建块。这样可以使管道可读性更强,同时确保步骤包含已在整个组织中通用(并获得批准)的模式。
主要存储库:Azure/mlops–project–template (github.com)
模板存储库:Azure/mlops–templates (github.com)
示例:这两个代码示例演示了如何在管道存储库中重用模板。
在Microsoft Learn团队的支持下,我们提供了自主学习和在线实践的内容,以熟悉涉及的各种技术。我们开发了OpenHack内容,其中的一个试点已于2022年6月在内部进行交付。我们目前正在整合来自会议的反馈并改进内容,计划于明年年初发布。
结论
MLOps v2加速器是Microsoft未来的事实标准MLOps解决方案。随着加速器的不断发展,它将继续成为客户在Azure上开始的一站式解决方案。MLOps v2加速器提供了灵活性、可扩展性、模块化、易用性和安全性,可以快速从开发到生产,并且对于在Azure上运行的任何AI/ML项目都是必须使用的。MLOps v2不仅统一了Microsoft的MLOps,还为在Azure上运行的任何AI工作负载设定了新的标准。
致谢
加速器的开发是一个全球团队的努力,他们以多种方式为代码库做出了贡献。
关于作者
Scott Donohoo:数据科学和MLOps领域的技术领导者,专注于帮助数据科学组织从机器学习模型的运营中实现业务价值。在本地和云端IT、大数据、机器学习和分析以及企业软件工程方面有二十多年的经验。
Setu Chokshi:我是一位高级技术领导者、创新者和机器学习和人工智能专家。我也是一个通过积极倾听和分配与才能相匹配的任务而赢得团队尊重的领导者。我的背景是有机地发展的,技术上的胜利为我带来了更大的机会。我有幸曾与业界巨头——通用电气和尼尔森公司合作过。