你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Azure 上的 AI 工作负载的 MLOps 和 GenAIOps
AI 工作负荷操作以数据管理和使用该数据的消耗为中心。 运营可确保在实现和维护确定工作负荷优先级的质量、可靠性、安全性、道德和其他标准方面提高效率。
工作负荷任务可分为三个主要领域:应用程序开发、数据处理和 AI 模型管理。 每个类别都应采用行业证明的操作方法,例如 DevOps、DataOps、MLOps 和 GenAIOps。
DevOps 活动通过自动化持续集成和持续部署(CI/CD)管道和监视涵盖整个 应用程序开发生命周期管理 。 但是,对于 AI 工作负载,数据管道是核心组件之一。 DataOps 是 DevOps 的专用化,它侧重于 通过简化数据提取、转换和加载(ETL/ELT)等过程来管理数据生命周期 。 DataOps 从业者通常测量数据流性能和数据清理的有效性,并监视管道是否存在异常。
AI 工作负载本质上是不确定的。 在推理期间,许多 AI 模型很容易为相同的查询生成不同的答案。 这些工作负载需要能够管理和适应 AI 输出不可预测性的过程。 DataOps 扩展到 MLOps,它 可操作机器学习工作流 进行模型训练和测试。 GenAIOps 是 MLOps 的专用子集,面向生成 AI 解决方案。 它涉及模型发现和优化预先训练的模型以及扩充数据等任务。
操作活动通常重叠,不同的方法适用于不同程度。 例如,在歧视 AI 中,DataOps 扮演了主要角色,而 DevOps 活动不太突出。 相反,在生成式 AI 中,卓越运营更依赖于 DevOps 而不是 DataOps。
不管怎样,总体目标是在整个开发生命周期内通过高效操作实现功能交付。 预期结果为:
- 具有一致结果的可重复进程。
- 随着时间的推移,模型的持续准确性。
- 可最大程度地减少风险的有效治理。
- 用于适应模型偏移的变更管理流程。
自动化和监视是实现这些目标的关键操作策略 。
还需要 为 AI 组件、常规、计划外和紧急操作建立标准化流程,并建立适当的跟踪机制。 如果没有这些进程,将面临以下风险:
- 数据处理、模型托管、地面数据管理和其他任务中的重复错误和不可重现性。
- 用于模型训练和优化的质量低或过时数据。
- 在最坏的情况下,影响最终用户对系统的信心,导致法律、合规性或安全问题。
必须使用正确的工具集实现已建立的进程。 专用工具可用于跨环境管理 AI/机器学习工作流。
本文重点介绍操作的设计策略,并提供工具建议。
建议
下面是本文中提供的建议摘要。
建议 | 说明 |
---|---|
设计高效的工作负荷操作生命周期。 | 根据 AI 工作负载的组件,不同的操作阶段将应用于其生命周期。 请务必了解与方案相关的最佳做法以及可用于实现这些方案的工具。 花点时间了解并实施工作负载的所有组件的关键建议。 ▪ DataOps ▪ MLOps ▪ GenAIOps ▪ 监视 |
自动执行所有操作。 | 自动化可确保工作负荷生命周期中的可重复性和效率。 尽管 DevOps 流程是其中的关键参与者,但需要采取其他步骤来高效生成、测试、验证和部署模型。 ▪ 自动化 |
尽可能利用部署管道。 | 部署管道可帮助你交付可重复的基础结构部署,或持续集成代码。 在将模型提升到生产环境之前,它们也是创建和/或验证模型的绝佳工具。 实现部署管道有助于提高工作负荷的可靠性以及总体用户体验。 ▪ 部署管道 |
防止模型中的偏移和衰减。 | 必须防范模型衰减和偏移,同时具有一个结构化过程,可帮助你以受控方式接受新的模型更改。 遵循有关模型维护的建议有助于保持合规,避免意外的用户体验,并提供更最新的服务。 ▪ 模型维护 |
工作负荷操作生命周期
此图演示了 AI 模型的操作阶段,包括数据收集、清理数据以消除不一致或错误,并将数据转换为可分析的格式。 这些阶段与训练歧视模型和生成模型中的地面数据相关。 但是,此图像中未描述训练生成模型的特定用例。 该用例不属于本文的范围。
MLOps 和 GenAIOps 的阶段类似。 主要区别在于,在 GenAIOps 的情况下,焦点从训练转向选择正确的模型、提示工程,并通过微调或实现检索扩充生成(RAG)来整合特定于域的知识。
即使是部署和监视的阶段也相当相似。
以下部分介绍常见的操作做法。 它们涵盖生命周期的每个阶段,从预生产到生产。
DataOps
数据从各种生产数据源聚合,然后预处理以删除错误和不一致以及处理缺失值。 最后,它将它转换为适合训练或扩充的格式并规范化。 训练数据和地面数据文章介绍了设计的各个方面。
此阶段的数据操作过程应该高效,因为 处理来自多个源和复杂数据管道的 大量数据可能很有挑战性。 需要采用的方法可确保此阶段 生成高质量的数据。 监视此阶段,跟踪可接受的质量条的进度。
还需要确保数据安全,因为数据来自生产环境。 确保较低的环境(如开发/测试)与生产环境一样安全,以帮助防止出现任何安全问题。
注意
通过在初始阶段投入大量数据清理来解决质量不佳的数据。 利用已知的分析模式(如奖牌、数据网格和功能存储)来执行上游处理任务。 如果上游阶段无效,则需要在下游阶段提高质量,这会导致工作负荷成本增加,因为数据准备发生在每个阶段。
有关数据处理任务的信息,请参阅以下文章:
工具
建议标准化工作负荷的数据业务流程工具。 这些工具应能够提供可对活动进行分组且具有内置自动化的数据管道。
Azure 数据工厂管道可以是初始选择。 它可以有效地连接和处理许多数据源。 还可以考虑 Azure Synapse Analytics,它结合了大数据和数据仓库,并支持数据湖、Apache Spark 和 Azure Synapse SQL。 它还与 ETL 的数据工厂集成。
为了准备训练数据,Azure 机器学习管道提供了可以自动执行数据收集和处理等任务的专用功能。
Pandas(用于数据准备)和报废等开源技术是热门选择。
MLOps
模型训练是选择适当的算法并为其提供预处理的历史数据和观察的过程,使模型能够学习模式并进行预测。
训练模型(特征工程)和超参数优化是迭代过程,而且成本高昂。 每次迭代期间,数据科学家都会使用数据、代码和参数的组合来跟踪结果。 使用可重复管道跟踪试验,以最少的手动工作量跟踪试验 ,直到达到正确的准确性级别。
另一个操作挑战是预配和缩放 进行试验的专用计算资源 。 此外,还应 有效地打包和发布模型 。
Teams 可以从基于 UI 的开发开始,以减少挑战,并且随着他们变得更加自信,过渡到基于代码的方法。
工具
建议使用工具,通过 捕获代码版本、环境、参数、运行和结果等详细信息来跟踪机器学习试验 。 MLflow 是一个这样的开源框架。 请考虑使用与 MLflow 兼容的Azure 机器学习工作区,并提供简化的工作流,使数据科学家能够管理项目中的工作效率和可重现性。 若要使用源代码管理跟踪管理代码开发,可将机器学习管道与源代码管理(如 GitHub)集成,或使用文件共享。
托管计算还可以影响你选择的工作流业务流程协调程序。 如果应用程序托管在 Azure Kubernetes 服务 (AKS),请考虑使用 Kubeflow。
如果考虑Azure 机器学习,建议从 Azure 精心构建的框架的角度着手机器学习,以确保了解产品如何帮助你解决工作负荷的精心构建的框架质量问题。
流程的一部分是优化个人时间。 数据科学家通常需要特定的工具和 SDK 来有效地从工作站进行探索数据分析(EDA)和试验。 评估Azure 机器学习中的预生成选项是否合适。 否则,请存储工作站配置或维护已批准的 VM 映像,以便执行此操作。 可以用作起点的映像的一个示例是数据科学虚拟机(DSVM)。
在某些情况下,策略可能不允许使用 VM。 查找替代项,例如添加 Microsoft Dev Box 和 Azure 虚拟桌面。 还可以考虑使用 Docker 启动包含预生成映像的计算机。
但是,随着此阶段的成熟,需要扩展试验,请移动到托管计算实例,并首选作为工作流一部分集成的选项。 评估是否可以将Azure 机器学习计算实例用于开发和测试目的的训练和推理。 计算群集可以处理大型数据集和复杂模型。
Azure 机器学习通过 SDK 和低代码选项(如自动化机器学习和可视化设计器)提供基于代码的解决方案。 Python SDK 提供了多种方法来训练模型,每个模型都具有不同的功能。 机器学习还支持高级优化和分布式计算技术,例如 ONNX 运行时训练的 ORTModule、DeepSpeed 和 LoRA,以加快训练过程。
GenAIOps
在此阶段的关键活动首先 发现和评估现有模型 ,以识别为特定用例预先训练的模型。 这是一个迭代过程。 找到合适的模型后,它可能会受益于对特定于域的地面进行优化,这还涉及迭代步骤,并且需要某种级别的业务流程。
集成和部署模型需要超越传统 MLOps 功能的专用工具和做法,包括协调模型、矢量索引、提示和代码块。
工具
若要解决发现任务,请利用包含来自各种提供程序的模型的模型目录。 使用 Azure AI Studio 中的模型目录,可以从特选集合中评估模型并有效地部署模型。
Azure 机器学习提示流可帮助开发业务流程代码、实现原型制作、试验、迭代和提示工程。 可以将这些流部署到Azure 机器学习托管终结点。 评估是否可以使用现有的 CI/CD 管道技术运行和部署流。
部署
在此阶段,模型将部署到托管和推理平台或 AI 工作负载的服务层。 API 需要打包为可缩放容器。 容器平台可以是托管计算或自定义托管平台。 操作做法应确保安全部署并启用回滚。
从平台即服务(PaaS)和无服务器解决方案(如 Azure OpenAI 服务)开始,以简化采用和管理。 请考虑使用 Azure 机器学习 无服务器 API 聚合终结点访问。 托管计算群集是高级需求的可行选项。 AKS 上的自承载是另一个选项。 请确保正确调整计算大小,并保持与其他工作负荷的适当隔离。 还可以考虑将模型完全托管为基础结构即服务(IaaS)等选项。 IaaS 提供灵活性,但可以增加操作负担。 这些选项在应用程序平台中介绍。
此阶段提供了将模型移动到生产环境之前捕获问题的最后机会。 测试过程应包括验证步骤,以确保模型配置为按预期提供预测。
应遵循 渐进式公开过程并使用并行部署将模型集成到现有生产环境中。 Canary 模型是推出新模型的常见方法。 使用此方法,用户群逐渐增加。 蓝绿部署是另一种方法。
工具
可以使用Azure 机器学习管道或 Azure Pipelines 部署模型进行推理。 机器学习提供了多种简化操作的功能,包括节点预配、OS 更新、自动缩放、监视和隔离虚拟网络。
机器学习还支持蓝绿部署,允许单个终结点包含多个部署。
如果使用其他托管平台(如 Azure 容器应用或Azure App 服务),则需负责操作,包括预配和缩放。 在这些情况下,请使用 Azure DevOps、GitHub 管道或你选择的 CI/CD 技术。
监视
监视是一个关键策略,在所有阶段应用。 它是一个持续的过程,并作为质量入口的输入,确保经过严格测试的 AI 工作负载,以在整个开发生命周期内保持一致性和可靠性。 必须从运营和数据科学角度监视模型。
强烈建议你执行 DataOps 内部循环监视过程,以度量接近验收质量条并检查异常情况。
对于预先训练的模型,监视数据偏移和性能也很重要,主要侧重于相关性。 评估输入(提示)和输出(完成),以确保它们相关且准确。 此外,请注意安全风险,例如尝试通过恶意提示操纵模型的行为。 确保有彻底的缺点帐篷模式检查两个方向的数据,并筛选出不适当的内容。 在 ResponsibleAI 设计区域中介绍了这些注意事项。
部署后,需要监视操作来解决模型衰减等问题。 由于数据更改或外部更改导致模型产生不相关的结果,模型可能会变得过时。 作为主动措施,使用自动化过程进行持续监视,并评估和重新训练以保持准确性和相关性。 此外,需要像监视任何其他工作负荷一样监视基础结构和工作负荷指标,以帮助确保最佳性能和可靠性。 有关详细信息,请参阅 测试模型衰减。
工具
投资工具,以便更轻松地从推理终结点(如Azure 机器学习数据收集器)收集指标。
还需要观察模型性能、数据偏移以及生成 AI 的安全性和质量。
有关详细信息,请参阅以下文章:
自动化
AI 工作负载很复杂,因为整个生命周期涉及许多角色、频繁更改和相关步骤。 手动过程很容易出错和不一致。 数据处理模型中的自动化有助于确保 可重复性和效率。 自动化并不总是必需的,但它是管理这些复杂性的有效方法。 下面是一些自动化可以降低风险的用例:
与传统的代码部署不同,AI/机器学习中的非确定模型和解决方案需要迭代试验和培训。 当多个团队协作、自动化作为强制实施标准化流程的方法时,可以帮助维护数据科学家、工程师和运营团队之间的一致性、可重现性和有效协作。
模型生命周期涉及两种主要类型的训练:
联机训练将最近的数据经常(有时每天)合并到模型中,以确保决策基于最新信息。 此训练已集成到工作负荷中,以便在常规过程中持续更新模型。
脱机训练训练模型的频率较低,从而在更新之间留出更长的差距。 训练过程独立于主工作负荷,以异步方式完成。 新模型准备就绪后,它将集成到系统中。
如果更新不频繁,可靠性可能会受到损害。 如果错过更新,则无需出现重大问题即可推迟更新。 此概念也适用于地面数据。 例如,如果使用 RAG,则必须决定是否需要使用最近的数据,还是稍微旧的数据已足够。 这两种方案都涉及将最新信息的需求与更新频率的实用性进行平衡。 应通过自动化执行联机培训,因为需要的频率和可靠性。 对于脱机训练,由于需要的频率,需要通过执行成本效益分析来证明自动化的合理性。 此外,还可以使用成本较低的资源(如脱机硬件)执行脱机训练。
传统的 DevOps 过程通常受结构更改的影响。 但是,在 AI 和机器学习中,模型基于生产数据进行训练。 模型衰减会带来重大风险,如果未受到监视,可能会导致性能随时间推移下降。 为了保持模型有效性,需要自动收集和分析性能指标、警报和模型重新训练。 以一种有助于 检测数据和模型依赖项 更改的方式使用自动化,以便随时清楚地了解当前状态。
可以使用两种不同的方法训练模型。
- 模型在开发环境中使用完整的生产数据 进行训练,并且仅通过环境推广项目。 此方法可以降低计算成本,但需要更严格的安全性来处理较低环境中的生产数据,并且可能无法在所有组织中使用。
- 模型在每个环境中训练。 代码提升可能有助于稳定,因为训练代码在较低的环境中经过审查和测试,但会增加计算成本。
这两种方法各有优缺点。 选择正确的方法取决于组织的优先级和工作负载的软件开发生命周期(SDLC)做法。 无论采用哪种方法,在生产部署之前对模型进行彻底测试和评估都至关重要
自动化代码应 合并数据世系以支持可审核性 ,方法是提供数据处理阶段的清晰记录。 此记录可帮助你管理期望,并使你能够演示决策的制定方式,以便解决任何有关结果的担忧。
部署管道
在 AI/机器学习工作负载中,模型开发涉及 创建、验证和将模型提升到模型 托管平台。 请务必让部署管道简化与数据处理、特征工程、模型训练或扩充以及部署到生产相关的复杂工作流。 鉴于 AI 的非确定性性质(使流程不透明),需要在 发布管道 和监视系统中纳入定性测试。
尽管 MLOps 和 GenAIOps 可能需要不同的 AI 活动和核心技术,但基础概念仍与 DevOps 的概念相似。 建议从现有 DevOps 流程应用最佳做法。 将 AI 活动集成到工作负载的现有管道中。
通常,AI 工作负载涉及传统代码部署。 可以选择与代码一起处理模型部署,也可以单独在自己的生命周期中处理。 前一种方法是可取的。 准备好使用工作负载部署打包模型和推理终结点,使 AI 操作主要侧重于数据准备、训练/微调、地面数据管理和监视。
重新评估如何定制以下资产,以涵盖整个 MLOps 和 GenAIOps 生命周期,从预生产到生产:
- 基础结构即代码 (IaC) 工具
- CI/CD 管道
- 用于跟踪和识别问题的可观测性堆栈
工具
可以将通常用于 CI/CD 的 Azure Pipelines 和 GitHub Actions 工作流扩展到机器学习模型。 它们有助于部署机器学习基础结构、自定义工作负荷组件、业务流程代码和模型。 将Azure 机器学习管道与 Azure DevOps 或 GitHub 管道相结合。 有关详细信息,请参阅将 Azure Pipelines 与 Azure 机器学习 配合使用。
两个主要因素会影响你选择正确的工具组合:用例和功能。 例如,Azure 机器学习管道非常适合数据科学家执行的业务流程。 它具有一个丰富的功能集,支持重复使用、缓存等。 有关工具选项,请参阅应使用哪种 Azure 管道技术?
模型维护
AI/ML 布局具有持续的创新竞争力。 新模型经常出现,发现新的用例,新的数据源可用。 因此,模型衰减是一个共同的挑战。
若要防止模型性能下降或随时间而偏移,需要实现自动化过程,以便持续监视、评估和重新训练。 例如:
维护模型目录。 自动执行发现新模型和更新目录的过程。
适应新的用例。 随着新的用例添加到工作负荷要求中,预期查询并相应地调整数据处理逻辑。
合并新的数据源。 如果新的数据源可能会增强模型的预测能力或相关性,请更新数据引入管道以连接到这些源并从中拉取数据。
评估符合法规要求。 适应新功能时,请确保更改在组织或外部合规性标准的约束内保持有效。
实现一个正式的过程来跟踪持续改进,并将自我改进作为该周期中的子进程合并。
持续演变
定期审查和改进运营,鼓励创新。
MLOps 成熟度模型从手动流程发展到完全自动化。 从手动生成和监视开始,并结合自动化应用程序生成、训练环境和分阶段部署,这与综合指标是正当的。 有关详细信息,请参阅 MLOps 成熟度模型。
GenAIOps 成熟度级别从基本模型迁移到结构化部署,逐步使用自动化优化技术。 有关详细信息,请参阅 提升 GenAIOps 的成熟度级别。