你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 上的 AI 工作负荷操作
构建 AI 工作负载并将其过渡到生产环境时,运营团队必须完全有能力支持这些工作负载,就像任何其他生产工作负荷一样。 由于运营团队可能具有有限的 AI 技术经验,因此必须就这些技术对其进行培训,并在流程的早期将 AI 工作负载集成到工作流中。 尽早将运营和数据团队聚集在一起开发 AI 工作负载,以增进对每个团队流程的相互了解。 这种早期协作至关重要,因为两个团队都需要密切合作,才能有效地支持 AI 工作负载。 数据团队依赖于运营团队来提供可靠的运行状况信号和可操作警报。 运营团队依赖于数据团队来帮助诊断潜在问题,并根据操作标准解决实际问题。 这种合作关系有助于确保系统性能平稳高效。
本指南提供了有关如何开发操作机制和做法的建议,以改进对 AI 工作负载的支持。 它强调运营和数据团队之间的高效协作。
建议
下面是本文中提供的建议摘要。
建议 | 说明 |
---|---|
监视工作负荷的各个方面。 | 尽管许多常规监视和可观测性问题也适用于 AI 工作负载,但需要处理的特定注意事项,以确保随时适当监视整个工作负荷。 若要构建监视和可观测性策略,可能需要跨不同的团队工作,以获得适当的专业知识并涵盖所有相关模式和指标。 ▪ 扩展可观测性平台 |
将安全部署做法应用于 AI 工作负载。 | 采取措施,确保围绕敏感生产数据的最高安全级别,并将部署方法与零停机时间要求保持一致。 根据需要使用适当的工具,并强调不要重塑已经存在的工具和流程。 通常,你将能够使用已建立的服务实现高级别的效率,同时启用安全部署。 ▪ 在安全部署实践中包括 AI 工作负荷组件 |
接受有关测试和自动化的 DevOps 实践。 | 在生产环境中生成、部署和操作 AI 工作负荷时,应用 DevOps 做法。 工作负荷应允许在生产环境中使用实际用户输入进行可观测性和测试。 仅当强大的 DevOps 过程和简化的自动化允许快速部署、错误更正和 A/B 测试时,才能以安全的方式提供此功能。 ▪ 支持在生产环境中进行测试 ▪ 尽可能自动执行操作实践 ▪ 接受 DevOps 做法 |
记录进度。 | 从一开始就构建良好的文档习惯,以便捕获有关工作负荷使用的数据的战略决策、更改历史记录和关键信息。 ▪ 采用良好的文档做法 |
扩展可观测性平台
为了实现卓越运营,可靠的可观测性至关重要。 当组织采用 AI 技术时,必须增强可观测性平台,以帮助确保对工作负荷运行状况进行全面监视。 不熟悉 AI 的组织可能在其运营团队中缺乏大数据、数据科学和 DataOps 专业知识。 因此,有关操作最佳做法的培训是改进可观测性平台的重要第一步。 因此,运营和数据团队应进行协作,以确定正确的监视模式和指标来捕获和分析。
若要评估模型的运行状况,需要全面概述其特定质量指标。 质量度量通常包括模型新鲜度、输出正确性和响应延迟等指标。 但是,应与数据科学家和工程师协作,以建立定义工作负荷质量的特定指标。 AI 工作负载的不确定性质使得对质量的警惕监视尤为重要,因为这些度量在部署后随时可能会意外更改。 可观测性建议包括:
与数据科学家和工程师合作,确定质量指标。
生成或扩展仪表板以评估工作负荷的总体运行状况。 此方法应包括组件可用性指标和质量指标。
实施设计良好的可用性和质量警报,运营团队可以理解并采取措施。
编码标准操作过程,用于定义运营团队如何响应质量警报,例如与数据团队合作调查和修正潜在故障。
请密切关注利用率指标,因为运行 AI 工作负载的成本可能很高。 如果工作负荷团队未关闭、纵向缩减或解除分配资源,则成本可能会很快增长,因为它们未使用。 操作可以通过监视利用率来帮助确保成本保持在预期参数内。
在安全部署实践中包括 AI 工作负荷组件
AI 工作负载依赖于生产数据,这些数据通常包括敏感信息。 因此,必须保持这些工作负载的最高安全级别。 为了帮助保护数据,请扩展 安全部署做法 ,包括与工作负荷 AI 组件相关的所有代码。 如果工作负荷的停机时间为零,请相应地设计 AI 组件的部署方法。
对于推理终结点,请根据部署模型使用蓝绿或 Canary 部署(无论没有流量镜像)。
对于索引服务,请使用具有别名更新的并行部署模型来切断流量。
对于业务流程代码,请使用功能标志或蓝绿部署。
可能需要使用网关解决方案,例如Azure 应用程序网关或 Azure Front Door,具体取决于应用程序、数据平台和特定网络拓扑。
工具
Azure 机器学习支持使用内置流量拆分本机进行蓝绿部署。
不要反复做同样的工作
由于联机推理终结点本质上是微服务,因此它们以完全自包含的工作负载组件的形式运行,其数据和代码在工作流中提供特定函数。 因此,像具有其生命周期的其他关键微服务一样对待联机推理终结点。 可以单独更新联机推理终结点。 但是,与较大工作负荷中的其他微服务一样,它们必须无缝协作。 因此,在部署更新时,应确定集成测试的优先级。 确保部署不会对其他服务(例如模型服务和业务流程协调程序)产生负面影响。 或者,批处理推理终结点通常与作业处理计算紧密耦合,并包含在数据管道中。 在这些情况下,将它们视为更大解决方案的一部分,而不是微服务。
支持在生产环境中进行测试
运营团队可能不会设计或执行 AI 工作负荷测试。 但是,它们必须通过监视、警报和调查来支持 AI 工作负荷测试,因为生产环境中需要测试。 由于 AI 的不确定性质,在生产环境中进行测试有助于确保工作负荷在一段时间内按预期执行。 运营团队应与工作负荷团队密切合作,以高效捕获和诊断异常测试结果,并按照操作标准进行诊断。 为了确保运营能够支持测试和工作负荷团队可以执行测试,两个团队都需要与其流程保持一致才能协同工作。 非生产环境中的测试活动培训有助于使团队熟悉操作顺序。
尽可能自动执行操作实践
自动执行所有与工作负荷相关的操作做法,包括监视、警报和测试过程。 自动化是使进程可重复、高效且一致的主要策略。 设计自动化策略时,需要人工监督活动,例如正确诊断模型不一致和其他质量信号。 初始版本尤其如此。 与维护模型相关的流程对于运营团队来说是新的,因此,在此阶段,对质量信号做出不当响应的风险更高。 随着工作负荷的成熟,你可能能够使用自动化来识别设计良好的质量门的误报,但到达这一点可能是一个漫长而复杂的过程。
如果可能,请重复使用现有的自动化工具为 AI 工作负载执行新的自动化任务。 例如,如果已使用 Azure Pipelines 或 GitHub 工作流,请继续使用它们来部署业务流程代码,而不是使用单独的工具。 但是,请避免过度工程,只使用一个自动化工具。 如果某些任务或作业不适合你选择的工具,请选择更合适的工具,而不是生成一个增加不必要的复杂性的自定义解决方案。
注意
若要完全支持工作负荷,需要许多相交角色和技术。 数据、基础结构、安全性和运营团队在很大程度上都依赖于自动化。 使用尽可能少的工具并对其进行标准化,以帮助使自动化策略易于管理且更易于训练。
接受 DevOps 做法
在工作负载开发初期,在开发过程中标准化 DevOps 做法的使用。 对于沙盒环境以外的所有环境,严格定义和强制执行的标准应控制整个开发生命周期。 严格禁止任何手动部署活动来强制实施这些标准。 所有部署(无论是更新、修补程序还是新资源部署)都必须通过遵循安全部署实践的持续集成和持续部署管道来完成。 良好的 DevOps 卫生做法应包括:
版本控制: 尽可能对所有代码资产使用版本控制。 版本控制是 DevOps 和良好变更管理实践的基石,对于顺利协作至关重要。 将版本控制应用于库包,包括 SDK 和容器映像。 在软件开发生命周期(SDLC)中使用特定版本的库包时保持一致。 各种开发环境中的不同版本的库(如 XGBoost 或 scikit-learn)可能会导致工作负载行为的变化。 模型版本控制也是如此。 确保模型版本在 SDLC 中保持一致,以便在预生产环境中测试一个版本的模型,并在生产环境中发布其他版本。
简单版本命名方案: 使用简单的版本命名方案来帮助确保始终使用给定资产的最新批准的版本。 特定于 AI 的资产可能包括:
- 笔记本代码。
- 业务流程协调程序代码。
- 数据处理作业代码。
- 机器学习作业代码。
- 模型
可以操作的工具: 某些工具非常适合试验,但不适用于操作化。 这种限制可能导致难以或不可能将它们集成到运营自动化中。 例如,笔记本是试验和探索数据分析工作的良好工具,但它们不是生产管道开发工作的好工具。 完成试验后,请从这些工具中提取逻辑,并将其放入可用于作业代码的 Python 包中。
采用良好的文档做法
良好的文档习惯对于所有类型的工作负荷都很重要。 AI 工作负载的复杂性使得这些习惯更加重要。 确保有一个特定于工作负荷团队的存储库,其中文档是安全存储和版本控制的。 与其他工作负载一样,应记录标准信息。 此标准信息包括工作负载、安全配置、网络设计和设置指南中使用的所有工具。 请考虑记录以下特定于 AI 的工作负荷信息:
模型训练和地面数据索引管理信息: 文档数据源、数据源所有者、刷新频率和偏差消除过程,以建立如何训练模型以及如何处理地面数据。
训练过程的历史记录: 通过记录你选择特定超参数、温度、权重和其他参数的原因,详细说明如何到达当前批准的配置。 包括你测试的其他配置以及在整个训练过程中观察到的行为更改。 此信息有助于防止重复失败或低效的配置。
功能存储信息: 记录哪些功能具有最佳预测能力以及如何做出该决定。
数据科学家工作站配置: 全面记录工作站配置,以简化数据科学家的载入过程。 指定使用 conda 环境所需的必要库和依赖项。
数据转换信息: 记录数据转换发生时从头到尾的整个过程。 记录数据在引入时的显示方式以及转换后数据的显示方式。
工具
利用通过 MLFlow 和机器学习自动配置和历史记录捕获。