你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 机器学习的体系结构最佳做法

Azure 机器学习是一种托管云服务,可用于训练、部署和管理机器学习模型。 训练和部署模型(包括计算 SKU 和配置)有多种选择和配置。 可以将机器学习模型部署到机器学习计算或其他 Azure 服务,例如 Azure Kubernetes 服务(AKS)。

本文提供有关使用机器学习训练、部署和管理机器学习模型时做出明智决策的体系结构建议。 本指南基于 Azure Well-Architected 框架支柱

重要

如何使用本指南

每个部分都有一个 设计清单,该清单提供关注的体系结构区域以及本地化为技术范围的设计策略。

还包括有关有助于具体化这些策略的技术功能 的建议 。 这些建议并不表示可用于机器学习及其依赖项的所有配置的详尽列表。 而是列出与设计视角相匹配的关键建议。 使用建议生成概念证明或优化现有环境。

基础体系结构 基线 OpenAI 端到端聊天参考体系结构 演示了许多关键建议。

技术范围

此审查专注于这些 Azure 资源的互相关联的决策:

  • 机器学习
  • 机器学习计算群集
  • 机器学习计算实例

评审不会涉及相关的资源,例如数据存储或 Azure 密钥保管库。

可靠性

可靠性支柱的目的是通过 建立足够的复原能力和从故障快速恢复来提供持续的功能。

可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。

设计清单

根据 可靠性设计评审清单 开始设计策略,并确定其与业务需求的相关性。 扩展策略以根据需要包含更多方法。

  • 复原能力:将模型部署到支持可用性区域的环境,例如 AKS。 通过确保部署分布在可用性区域,即使数据中心发生故障,部署仍然可用。 为了提高可靠性和可用性,请考虑使用多区域部署拓扑。

  • 复原能力:确保有足够的计算来训练和推理。 通过资源规划,确保计算 SKU 和缩放设置满足您的工作负荷需求。

  • 复原能力:将用于探索工作的机器学习工作区与用于生产的工作分离。

  • 复原能力:使用托管联机终结点进行推理时,请使用蓝绿部署等发布策略来最大程度地减少停机时间并降低与部署新版本相关的风险。

  • 业务要求:根据可靠性需求选择使用计算群集、计算实例和外部化推理主机,将服务级别协议(SLA)视为一个因素。

  • 恢复:确保在训练大型模型时具有自我修复功能,例如机器学习支持的检查点功能。

  • 恢复:确保已定义恢复策略。 机器学习不具备自动故障转移功能。 因此,必须设计包含工作区及其所有依赖项的策略,例如 Key Vault、Azure 存储和 Azure 容器注册表。

建议
建议 益处
多区域模型部署:为了增强可靠性和可用性,请考虑尽可能使用多区域部署环境。 多区域部署可确保即使一个区域遇到中断,机器学习工作负载也能继续运行。 多区域部署可改善跨区域的负载分布,从而可能提高位于不同地理区域的用户的性能。 有关详细信息,请参阅业务连续性和灾难恢复的故障转移
模型训练复原能力:使用机器学习支持的检查点功能,包括适用于 PyTorch 的 Azure 容器、TensorFlow 估算器类或 Run 对象和支持模型检查点的 FileDataset 类。 模型检查点会在训练期间定期保存机器学习模型的状态,以便在中断、失败或终止时还原它。 有关详细信息,请参阅 使用星云提高检查点速度和降低成本
对计算群集使用专用虚拟机层:对计算群集使用专用虚拟机层进行批处理推理,以确保不会抢占批处理作业。 低优先级虚拟机的价格较低,但可能被抢占。 使用专用虚拟机层的群集不会抢占。

安全

安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。

安全设计原则通过对机器学习的技术设计应用方法,为实现这些目标提供了高级设计策略。

设计清单

根据 设计评审清单制定针对安全 的设计策略,并确定漏洞和控制,以增强安全防御能力。 扩展策略以根据需要包含更多方法。

  • 可用性:通过将对工作区的访问限制为虚拟网络中的资源来减少机器学习工作区的攻击面。

  • 机密性:通过实现网络隔离来防范机器学习工作区中的数据外泄。 确保显式批准对所有外部资源的访问,不允许访问所有其他外部资源。

  • 完整性:实现访问控制,以最低特权原则对外部资源的机器学习工作区进行身份验证和授权。

  • 完整性:通过基于特定用例或项目设置工作区来实现机器学习工作区的用例隔离。 此方法遵循最低特权原则,确保只有需要访问用例或项目的数据和试验资产的个人才能访问工作区。

  • 完整性:规范对基础模型的访问。 确保只有批准的注册表可以访问模型注册表中的模型。

  • 完整性:规范对已批准的容器注册表的访问。 确保机器学习计算只能访问批准的注册表。

  • 完整性:规范可在机器学习计算上运行的 Python 包。 规范 Python 包可确保仅运行受信任的包。

  • 完整性:要求在机器学习计算环境中用于训练的代码进行签名。 要求代码签名可确保运行的代码来自受信任的源,并且未被篡改。

  • 机密性:遵循基于角色的访问控制(RBAC)对机器学习工作区和相关资源(如工作区存储帐户)的最小特权原则,以确保个人只有其角色所需的权限,从而最大程度地降低潜在的安全风险。

  • 完整性:通过为静态数据和传输中的数据实现加密来建立信任和验证访问权限。

建议
建议 益处
安全基线:若要增强机器学习服务的安全性和合规性,请 为机器学习应用 Azure 安全基线 安全基线提供有关关键安全方面的定制指导,例如网络安全、标识管理、数据保护和特权访问。 为了获得最佳安全性,请使用 Microsoft Defender for Cloud 监视这些方面。
托管虚拟网络隔离:为机器学习配置 托管虚拟网络隔离 。 启用托管虚拟网络隔离时,会为工作区创建托管虚拟网络。 为工作区创建的托管计算资源会自动使用此托管虚拟网络。 如果无法实现托管虚拟网络隔离,则必须遵循 网络拓扑建议 ,将计算与解决方案中其余资源(包括工作区资源的专用终结点)分开到专用子网中。 托管虚拟网络隔离通过将工作区与其他网络隔离来增强安全性,从而减少未经授权的访问风险。 在组织内另一个网络中发生违规的情况中,机器学习工作区的独立网络仍然不受影响,从而保护机器学习工作负载。
机器学习网络隔离:为机器学习工作区 配置专用终结点 ,并通过该专用终结点连接到工作区。 机器学习网络隔离通过确保对工作区的访问安全并受到控制来提高安全性。 为工作区配置专用终结点后,可以将对工作区的访问限制为仅通过专用 IP 地址进行。
仅允许批准的出站访问:在机器学习工作区上,配置出站模式,以管理出站访问,从而最大程度地降低数据外泄的风险。 为需要访问的资源配置专用终结点、服务标记或完全限定的域名(FQDN)。 此配置可最大程度地降低数据外泄的风险,从而提高数据安全性。 启用此配置后,获取系统访问权限的恶意参与者无法将数据发送到未经批准的外部目标。
依赖服务的虚拟网络隔离:使用专用终结点配置依赖服务,例如存储、Key Vault 和容器注册表,并禁用公共访问。 网络隔离通过将对 Azure 平台即服务(PaaS)解决方案的访问限制为专用 IP 地址来增强安全性。
托管标识使用托管标识在 机器学习和其他服务之间进行身份验证。 托管标识无需存储凭据并手动管理和轮换服务主体,从而提高安全性。
禁用本地身份验证:禁用机器学习计算群集和实例的 本地身份验证 禁用本地身份验证会增加机器学习计算的安全性,并提供对标识和资源凭据的集中控制和管理。
禁用公共 SSH 端口:确保通过将remoteLoginPortPublicAccess设置为Disabled 来关闭机器学习计算群集上的公共 SSH 端口。 如果使用其他计算,请应用类似的配置。 禁用 SSH 访问有助于防止未经授权的个人获得访问权限,并可能对系统造成伤害,并防止暴力攻击。
不要为机器学习计算分配公共 IP 地址:在预配机器学习计算群集或计算实例时,将 enableNodePublicIp 设置为 false。 如果使用其他计算,请应用类似的配置。 不要预配公共 IP 地址来增强安全性,方法是限制对计算实例或群集进行未经授权的访问的可能性。
获取最新的作系统映像重新创建计算实例以获取最新的作系统映像 使用最新映像可确保保持一致、稳定和安全的环境,包括确保拥有最新的安全修补程序。
严格的机器学习工作区访问控制:使用 Microsoft Entra ID 组来管理工作区访问 ,并遵循 RBAC 的最低特权原则。 严格的工作区访问控制通过确保个人只有其角色所需的权限来提高安全性。 例如,数据科学家可能有权访问运行试验,但不能修改安全设置,从而最大程度地降低潜在的安全风险。
限制模型目录部署将模型部署限制为特定的注册表 将部署从模型目录限制为特定注册表可确保仅将模型部署到已批准的注册表。 此方法有助于规范对开放源代码基础模型的访问。
加密静态数据:请考虑 将客户管理的密钥用于机器学习 静态加密数据可确保使用直接管理的密钥加密敏感数据,从而增强数据安全性。 如果你有管理自己的加密密钥的法规要求,请使用此功能来符合该要求。
尽量减少数据外泄的风险实现数据外泄防护。 例如,创建一个服务终结点策略来筛选出站虚拟网络流量,并仅允许数据外泄到特定的 Azure 存储帐户。 通过限制入站和出站要求,最大程度地降低数据外泄的风险。
顾问

下面是机器学习 顾问 安全最佳做法建议的一些示例:

  • 工作区应使用客户管理的密钥(CMK)进行加密。
  • 工作区应使用 Azure 专用链接。
  • 工作区应禁用公用网络访问。
  • 计算应位于虚拟网络中。
  • 应重新创建计算实例以获取最新的软件更新。
Azure Policy

下面是 机器学习安全性的内置 Azure Policy 定义 示例:

成本优化

成本优化侧重于 检测支出模式、优先考虑关键领域的投资,以及优化其他 以满足组织预算,同时满足业务需求。

阅读 成本优化设计原则 ,了解实现这些目标的方法以及与其环境中训练和部署模型相关的技术设计选择的必要权衡。

设计清单

根据成本优化设计评审清单启动设计策略,进行投资和微调设计,使工作负荷与为工作负荷分配的预算保持一致。 设计应使用正确的 Azure 功能,监视投资,并查找随时间推移进行优化的机会。

  • 使用优化:选择适当的资源以确保它们符合工作负荷要求。 例如,在 CPU 或 GPU、各种 SKU 或低优先级 VM 与常规优先级 VM 之间进行选择。

  • 使用优化:确保在空闲时减少或关闭未使用的计算资源,以减少浪费。

  • 使用优化:应用策略并配置配额,以符合设计的上限和下限。

  • 使用优化:测试并行化训练工作负荷,以确定是否可以在低成本 SKU 上满足训练要求。

  • 费用优化:如果您对未来一到三年的使用情况有很好的估计,请购买 Azure 虚拟机预留实例。

  • 监视和优化:训练模型时监视资源使用情况,例如 CPU 和 GPU 使用情况。 如果资源未完全使用,请修改代码以更好地使用资源或缩减为更小或更便宜的 VM 大小。

建议
建议 益处
优化计算资源:根据工作负荷的要求优化计算资源。 选择最适合工作负荷的 SKU:
  • 常规用途 - 均衡的 CPU 与内存比率,适用于所有用途。
  • 计算优化 - CPU 与内存比率高,适用于数学密集型计算。
  • 内存优化 - 内存相对于 CPU 较高,适合内存计算或数据库应用。
  • M 系列 - 具有大量内存和 CPU 的大型计算机。
  • GPU – 更适用于具有大量变量的模型,这些变量可以受益于更高的并行度和专用核心指令。 典型应用程序包括深度学习、图像或视频处理、科学模拟、数据挖掘以及利用 GPU 开发框架。 使用多个系列进行测试,并将结果记录为基线。 随着模型和数据的发展,最充足的计算资源可能会发生变化。 监视执行时间并根据需要重新评估。
选择正确的计算至关重要,因为它直接影响工作负荷的运行成本。 选择 GPU 或高性能 SKU(没有适当使用)可能会导致浪费开支,而选择未充分利用的计算可能会导致长时间的训练时间和性能问题。
优化计算缩放配置计算群集进行自动缩放 ,以确保仅使用所需的内容。

对于训练群集,请将最小节点数设置为 0,并将节点空闲的时间量配置为适当的时间。 为了减少迭代试验,请缩短节省成本的时间。 若要进行更频繁的迭代试验,请设定更长的时间以避免每次更改后增加或缩减成本。
为计算群集配置自动缩放,以便在其使用率较低时缩减。

将训练群集的最小节点数设置为 0,以便在不使用时缩减到 0。
设置训练终止策略设置提前终止策略 以限制训练运行持续时间或提前终止它们。 设置终止策略有助于通过提前停止不良运行来节省成本。
对批处理工作负荷使用低优先级虚拟机:考虑对不具有时间敏感且可恢复中断的 批处理工作负荷使用低优先级虚拟机 低优先级虚拟机使大量的计算能力可用于低成本。 他们利用 Azure 中的剩余容量。
为计算实例启用空闲关闭启用计算实例的空闲关闭,或者如果已知使用时间则计划启动和停止时间。 默认情况下,计算实例可供你使用,从而产生成本。 将计算实例配置为在空闲时关闭,或者在未使用计算实例时配置计划可节省成本。
并行化训练工作负荷:考虑 并行化训练工作负荷。 在机器学习中并行组件的帮助下测试运行它们。 并行工作负荷可以在多个较小的实例上运行,从而可能节省成本。
Azure 虚拟机预留实例:如果对未来一到三年的使用情况有很好的估计,则购买 Azure 虚拟机预留实例。 当你对使用情况有很好的估计时,请利用服务的预留容量选项。 购买 Azure 虚拟机预留实例,可预付虚拟机使用费用,并在即用即付价格中提供折扣。 符合预留条件的虚拟机使用情况会自动获得折扣。

卓越运营

卓越运营主要侧重于 开发实践、可观测性和发布管理的各个过程。

卓越运营设计原则 提供了一个高级设计策略,用于实现这些目标以满足工作负荷的作要求。

设计清单

根据 卓越运营的设计评审清单 启动设计策略,以定义与机器学习相关的可观测性、测试和部署过程。

  • 开发标准:利用机器学习模型目录和注册表来存储、版本和共享机器学习资产。

  • 自動化以提高效率:遵循良好的 机器学习运维(MLOps) 做法。 尽可能生成端到端自动化管道,用于数据准备、训练和评分过程。 在开发中,使用脚本而不是笔记本来训练模型,因为脚本更易于集成到自动化管道中。

  • 放心部署:为机器学习工作区、计算群集、计算实例和其他部署环境实现基础结构即代码(IaC)。

  • 可观测性:监视已部署模型的性能,包括数据偏移。

  • 可观测性:如果模型部署到联机终结点,请启用Application Insights监控联机终结点和部署。 监视训练基础设施,以确保满足基线要求。

  • 简单性:使用针对机器学习优化的特选环境(如果可用)。

建议
建议 益处
最小化机器学习工作区实例:尽可能减少工作区数量,以减少维护。 限制工作区数可降低维护工作量和运营成本。 对于安全性等要求,可能需要多个单独的工作区。 尽可能减少工作区数。
利用模型目录和注册表:利用机器学习模型目录和注册表来存储、版本和共享机器学习资产。

使用机器学习模型目录来帮助实现模型的 A/B 测试和部署。
使用机器学习模型注册表来存储和版本化机器学习模型,以跟踪更改,并使用用于训练的作业和数据集来维护世系。

借助机器学习模型目录,数据科学团队可以发现、评估和微调预先训练的基础机器学习模型。

在机器学习模型注册表中存储版本化模型支持这些部署策略,例如 A/B 发布、金丝雀发布和回滚。
监视模型性能监视已部署模型的性能,并 检测数据集上的数据偏移 监视已部署的模型可确保模型满足性能要求。

监控数据漂移有助于检测输入数据的变化,这些变化可能导致模型性能下降。 管理数据偏移有助于确保模型随时间推移提供准确的结果。
监视基础结构:如果模型部署到联机终结点,请启用 Application Insights以监视联机终结点和部署

监视训练基础设施,确保满足基本需求。

确保 收集机器学习的资源日志
监视终结点提供对指标的可见性,例如请求延迟和每分钟的请求数。 可以将性能与基线进行比较,并使用此信息相应地更改计算资源。 如果接近配额限制时,监视指标(如网络字节)可以发出警报,并预防限流。

同样,监视训练环境可提供对训练环境进行更改的信息。 使用该信息可以决定横向扩展或横向扩展、使用不同性能的 SKU 进行纵向扩展或缩减,或者选择 CPU 或 GPU。
管理模型训练环境:使用针对机器学习优化的精选环境(如果可用)。 特选环境 是机器学习提供的预创建环境,可加快部署时间并减少部署和训练延迟。 使用特选环境可提高训练和部署成功率,并避免不必要的映像生成。

还可以针对机器学习中的大型模型训练优化定制环境,例如 Azure Container for PyTorch

性能效率

性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。

性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。

设计清单

根据 性能效率的设计评审清单 启动设计策略,根据机器学习工作负载的关键绩效指标定义基线。

  • 性能目标:确定模型的可接受的训练时间和重新训练频率。 为训练时间设置明确的目标以及测试,可帮助你确定满足训练时间目标所需的计算资源、CPU 与 GPU 和 CPU SKU。

  • 性能目标:为部署的模型定义可接受的性能目标,包括响应时间、每秒请求数、错误率和运行时间。 性能目标充当已部署模型效率的基准。 目标可以帮助你做出 CPU 与 GPU 决定、CPU SKU 选项和缩放要求。

  • 满足容量要求:为模型训练选择正确的计算资源。

  • 满足容量要求:为模型部署选择正确的计算资源。

  • 满足容量要求:选择具有自动缩放功能的部署环境,以在需求波动时添加和删除容量。

  • 实现并维持性能:持续 监视已部署模型的性能、查看结果并采取适当的措施。

  • 实现并维持性能:持续监视已部署模型的基础结构性能、查看结果并采取适当措施。 监控培训设施,确保满足训练时间的需求。

建议
建议 益处
为模型训练选择适当的计算服务:如果需要自动缩放,请考虑使用基于计算实例的机器学习计算群集进行模型训练。

根据训练要求优化计算资源。 首先在 CPU 和 GPU 之间进行选择。 默认选择 CPU,但可以考虑使用 GPU 适用于深度学习、图像或视频处理、大量数据等工作。 接下来,选择最适合您工作负载的映像 SKU。

使用测试选择在确定基线时针对训练时间优化成本的计算选项。
选择正确的计算至关重要,因为它直接影响训练时间。 选择正确的 SKU 和 CPU 与 GPU 可确保模型训练可以满足要求和性能目标。 选择过度使用的低性能 SKU 可能会导致长时间的训练时间和性能问题。

计算群集通过横向扩展支持水平缩放的工作负荷来提高性能。 此方法为处理具有不同需求的工作负载提供了灵活性,并允许根据需要添加或删除计算机。
模型部署环境缩放:使用部署环境的自动缩放功能。 对于 AKS 部署环境,请使用集群自动扩展器以满足需求。 对于在线端点,可通过集成 Azure Monitor 的自动缩放功能来实现自动缩放。 自动缩放可调整已部署模型的实例数,以满足需求。
监视模型性能监视已部署模型的性能。 跟踪生产中模型的性能,提醒你可能出现的问题,如数据偏移、预测偏移、数据质量和特征归属偏差。

监视数据偏移有助于检测输入数据的变化,这些变化可能导致模型性能下降。 管理数据偏移有助于确保模型随时间推移提供准确的结果。
监视基础结构监视联机终结点 并与 Monitor 集成,以跟踪和监视相应的指标和日志。 创建联机部署时启用 Application Insights

监视训练基础结构,并在训练模型时查看资源使用情况,例如内存和 CPU 或 GPU 使用情况,以确保满足基线要求。
监视终结点提供对指标的可见性,例如请求延迟和每分钟的请求数。 可以将性能与基线进行比较,并使用此信息相应地更改计算资源。 如果您接近配额限制,监控指标(如网络字节)可能会发出警报,以防止限制流量。

同样,监控您的训练环境可以为您提供所需的信息,以便对训练环境进行调整。 使用该信息可以决定横向扩展或横向扩展、使用不同性能的 SKU 进行纵向扩展或缩减,或者选择 CPU 或 GPU。

Azure 策略

Azure 提供了一组与机器学习及其依赖项相关的大量内置策略。 可以通过 Azure 策略审核上述一些建议。 请考虑以下与安全性相关的策略:

请考虑以下与成本优化相关的策略:

请考虑以下与卓越运营相关的策略:

有关全面的治理,请查看 机器学习的 Azure Policy 内置定义

顾问建议

顾问是一名个性化的云顾问,可帮助你遵循最佳做法来优化 Azure 部署。 顾问建议可帮助你提高机器学习的可靠性、安全性、成本效益、性能和卓越运营能力。

请考虑以下针对安全性的 顾问 建议:

  • 工作区应使用客户管理的密钥(CMK)进行加密。
  • 工作区应使用专用链接。
  • 工作区应禁用公用网络访问。
  • 计算应位于虚拟网络中。
  • 应重新创建计算实例以获取最新的软件更新。

请考虑以下 顾问 关于卓越运营的建议:

  • 应启用机器学习工作区中的资源日志。

后续步骤

将这些文章视为展示本文中建议的资源。