你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Well-Architected Framework 对 Azure 机器学习的透视图
Azure 机器学习是一种托管云服务,可用于训练、部署和管理机器学习模型。 训练和部署模型有多种选择和配置,包括计算 SKU 和配置。 可以将机器学习模型部署到机器学习计算或其他 Azure 服务(如 Azure Kubernetes 服务 (AKS) )。
本文提供使用机器学习训练、部署和管理机器学习模型时做出明智决策的体系结构建议。 本指南基于 Azure Well-Architected Framework 支柱。
重要
如何使用本指南
每个部分都有一个 设计清单 ,其中介绍了关注的体系结构领域以及本地化到技术范围的设计策略。
还包括有关有助于实现这些策略的技术功能 的建议 。 这些建议并不表示可用于机器学习及其依赖项的所有配置的详尽列表。 而是列出映射到设计视角的关键建议。 使用建议生成概念证明或优化现有环境。
基础体系结构 基线 OpenAI 端到端聊天参考体系结构 演示了许多关键建议。
技术范围
本评论重点介绍这些 Azure 资源的相关决策:
- 机器学习
- 机器学习计算群集
- 机器学习计算实例
该评审不会解决数据存储或 Azure 密钥保管库等已连接资源的问题。
可靠性
可靠性支柱的目的是通过 构建足够的复原能力和从故障中快速恢复的能力来提供持续的功能。
可靠性设计原则提供适用于单个组件、系统流和整个系统的高级设计策略。
设计清单
根据 可靠性设计评审清单启动设计 策略,并确定其与业务需求的相关性。 扩展策略以根据需要包含更多方法。
复原能力:将模型部署到支持可用性区域的环境,例如 AKS。 通过确保跨可用性区域分布部署,可以确保即使在数据中心发生故障时部署也可用。 为了增强可靠性和可用性,请考虑使用多区域部署拓扑。
复原能力:确保有足够的计算用于训练和推理。 通过资源规划,确保计算 SKU 和缩放设置满足工作负载的要求。
复原能力:将用于探索工作的机器学习工作区与用于生产的工作区分开。
复原能力:使用托管联机终结点进行推理时,请使用发布策略(例如蓝绿部署),以最大程度地减少停机时间并降低与部署新版本相关的风险。
业务要求:根据可靠性需求选择计算群集、计算实例和外部化推理主机的使用,同时考虑服务级别协议 (SLA) 。
恢复:在训练大型模型时,请确保具有自我修复功能,例如机器学习支持的检查点功能。
恢复:确保已定义恢复策略。 机器学习没有自动故障转移。 因此,必须设计一个包含工作区及其所有依赖项的策略,例如密钥保管库、Azure 存储和Azure 容器注册表。
建议
建议 | 好处 |
---|---|
多区域模型部署:为了增强可靠性和可用性,请考虑使用多区域部署环境(如果可能)。 | 多区域部署可确保即使某个区域遇到服务中断,机器学习工作负载也能继续运行。 多区域部署改进了跨区域的负载分布,从而可能提高位于不同地理区域中的用户的性能。 有关详细信息,请参阅业务连续性和灾难恢复的故障转移。 |
模型训练复原能力:使用机器学习支持的检查点功能,包括 Azure Container for PyTorch、TensorFlow 估算器类或 Run 对象和支持模型检查点的 FileDataset 类。 | 模型检查点在训练期间定期保存机器学习模型的状态,以便在发生中断、失败或终止时可以还原它。 有关详细信息,请参阅 使用星云提高检查点速度和降低成本。 |
对计算群集使用专用虚拟机层:对计算群集使用专用虚拟机层进行批量推理,以确保批处理作业不会被抢占。 | 低优先级虚拟机的价格较低,但可以抢占。 不会抢占使用专用虚拟机层的群集。 |
安全性
安全支柱的目的是为工作负载提供 保密性、完整性和可用性 保证。
安全设计原则提供了一个高级设计策略,用于通过将方法应用于围绕机器学习的技术设计来实现这些目标。
设计清单
根据 安全设计评审清单启动设计 策略,并识别漏洞和控制,以改善安全状况。 扩展策略以根据需要包含更多方法。
可用性:通过将工作区的访问限制为虚拟网络中的资源,减少机器学习工作区的攻击面。
保密性:通过实现网络隔离来防范机器学习工作区中的数据外泄。 确保显式批准对所有外部资源的访问,并且不允许访问所有其他外部资源。
完整性:实现访问控制,根据最低特权原则对外部资源的机器学习工作区进行身份验证和授权。
完整性:通过基于特定用例或项目设置工作区,为机器学习工作区实现用例隔离。 此方法遵循最小特权原则,确保只有需要访问用例或项目的数据和试验资产的个人才能访问工作区。
完整性:规范对基础模型的访问。 确保只有已批准的注册表才能访问模型注册表中的模型。
完整性:规范对已批准的容器注册表的访问。 确保机器学习计算只能访问已批准的注册表。
完整性:规范可在机器学习计算上运行的 Python 包。 规范 Python 包可确保仅运行受信任的包。
完整性:要求在机器学习计算环境中用于训练的代码进行签名。 要求代码签名可确保运行的代码来自受信任的源且未被篡改。
保密性:遵循基于角色的访问控制的最小特权原则, (RBAC) 机器学习工作区和相关资源(如工作区存储帐户),以确保个人只有其角色所需的权限,从而最大程度地降低潜在的安全风险。
完整性:通过对静态数据和传输中的数据实施加密来建立信任和验证访问权限。
建议
建议 | 好处 |
---|---|
安全基线:若要增强机器学习服务的安全性和合规性,请 为机器学习应用 Azure 安全基线。 | 安全基线提供有关关键安全方面的定制指导,例如网络安全、标识管理、数据保护和特权访问。 为了获得最佳安全性,请使用 Microsoft Defender for Cloud 来监视这些方面。 |
托管虚拟网络隔离:为机器学习配置 托管虚拟网络隔离 。 启用托管虚拟网络隔离时,会为工作区创建托管虚拟网络。 为工作区创建的托管计算资源会自动使用此托管虚拟网络。 如果无法实现托管虚拟网络隔离,则必须遵循 网络拓扑建议 ,将计算与解决方案中的其余资源(包括工作区资源的专用终结点)分离到专用子网中。 | 托管虚拟网络隔离通过将工作区与其他网络隔离来增强安全性,从而降低未经授权的访问风险。 在组织内的另一个网络中发生违规的情况下,机器学习工作区的独立网络不会受到影响,从而保护机器学习工作负载。 |
机器学习网络隔离:为机器学习 工作区配置专用终结点 ,并通过该专用终结点连接到工作区。 | 机器学习网络隔离通过确保对工作区的访问是安全且受控的,增强了安全性。 为工作区配置专用终结点后,可以将对工作区的访问限制为仅通过专用 IP 地址进行。 |
仅允许已批准的出站访问: 在 机器学习工作区中将出站访问 Allow only approved outbound 配置为 的出站模式,以最大程度地降低数据外泄的风险。 为需要访问的资源配置专用终结点、服务标记或完全限定的域名 (FQDN) 。 |
此配置可将数据外泄的风险降到最低,从而提高数据安全性。 启用此配置后,获取系统访问权限的恶意参与者无法将你的数据发送到未经批准的外部目标。 |
依赖服务的虚拟网络隔离:使用专用终结点配置依赖服务(例如存储、密钥保管库和容器注册表),并禁用公共访问。 | 网络隔离通过将 Azure 平台即服务 (PaaS) 解决方案的访问限制为专用 IP 地址,增强了安全性。 |
托管标识: 使用托管标识在 机器学习和其他服务之间进行身份验证。 | 托管标识无需存储凭据并手动管理和轮换服务主体,从而提高安全性。 |
禁用本地身份验证:禁用机器学习计算群集和实例的 本地身份验证 。 | 禁用本地身份验证可提高机器学习计算的安全性,并提供对标识和资源凭据的集中控制和管理。 |
禁用公共 SSH 端口:确保公共安全外壳 (SSH) 端口在机器学习计算群集上关闭,方法是将 设置为 remoteLoginPortPublicAccess Disabled 。 如果使用不同的计算,请应用类似的配置。 |
禁用 SSH 访问有助于防止未经授权的人员获取访问权限,并可能对系统造成伤害,并保护你免受暴力攻击。 |
不要为机器学习计算预配公共 IP 地址:在预配机器学习计算群集或计算实例时,将 false enableNodePublicIp 设置为 。 如果使用不同的计算,请应用类似的配置。 |
避免预配公共 IP 地址,通过限制对计算实例或群集进行未经授权的访问来增强安全性。 |
获取最新的操作系统映像: 重新创建计算实例以获取最新的操作系统映像。 | 使用最新映像可确保保持一致、稳定和安全的环境,包括确保拥有最新的安全修补程序。 |
严格的机器学习工作区访问控制:使用Microsoft Entra ID组来管理工作区访问,并遵守 RBAC 的最低特权原则。 | 严格的工作区访问控制通过确保个人只有其角色所需的权限来增强安全性。 例如,数据科学家可能有权运行试验,但不能修改安全设置,从而最大程度地降低潜在的安全风险。 |
限制模型目录部署: 将模型部署限制为特定注册表。 | 将模型目录中的部署限制为特定注册表可确保仅将模型部署到批准的注册表。 此方法有助于规范对开源基础模型的访问。 |
加密静态数据:考虑 将客户管理的密钥与机器学习配合使用。 | 加密静态数据可确保使用你直接管理的密钥加密敏感数据,从而增强数据安全性。 如果你有管理自己的加密密钥的法规要求,请使用此功能来符合该要求。 |
最大程度地降低数据外泄的风险: 实现数据外泄防护。 例如,创建服务终结点策略来筛选出口虚拟网络流量,并仅允许将数据外泄到特定的 Azure 存储帐户。 | 通过限制入站和出站要求,最大程度地降低数据外泄的风险。 |
顾问
下面是针对机器学习的 顾问 安全最佳做法建议的一些示例:
- 应使用客户管理的密钥 (CMK) 对工作区进行加密。
- 工作区应使用 Azure 专用链接。
- 工作区应禁用公用网络访问。
- 计算应位于虚拟网络中。
- 应重新创建计算实例以获取最新的软件更新。
Azure Policy
下面是机器学习安全性的内置Azure Policy定义示例:
- 为指定的机器学习计算配置允许的注册表。
- 为指定的机器学习计算配置允许的 Python 包。
- 机器学习工作区应禁用公用网络访问。
- 应重新创建机器学习计算实例以获取最新的软件更新。
- 机器学习计算应位于虚拟网络中。
- 机器学习计算应禁用本地身份验证方法。
- 机器学习工作区应使用 CMK 进行加密。
- 机器学习工作区应使用 专用链接。
- 机器学习工作区应使用用户分配的托管标识。
- 在为指定的机器学习计算运行作业之前,需要一个名为 的审批终结点。
- 对于计算的训练代码,需要代码签名。
- 将模型部署限制为特定注册表。
成本优化
成本优化侧重于 检测支出模式、确定关键领域的投资优先级,以及优化其他 领域以满足组织预算,同时满足业务需求。
阅读 成本优化设计原则 ,了解实现这些目标的方法,以及与其环境中训练和部署模型相关的技术设计选择的必要权衡。
设计清单
根据投资 成本优化的设计评审清单 启动设计策略,并微调设计,使工作负载与为工作负荷分配的预算保持一致。 你的设计应使用正确的 Azure 功能,监视投资,并寻找随时间推移进行优化的机会。
使用优化:选择适当的资源以确保它们符合工作负载要求。 例如,在 CPU 或 GPU、各种 SKU 或低优先级 VM 与常规优先级 VM 之间进行选择。
使用优化:确保在空闲时缩减或关闭未使用的计算资源,以减少浪费。
使用优化:应用策略并配置配额,以符合设计的上限和下限。
使用优化:测试并行化训练工作负载,以确定是否可以在成本较低的 SKU 上满足训练要求。
速率优化:如果对未来一到三年的使用情况有很好的估计,请购买 Azure 虚拟机预留实例。
监视和优化:在训练模型时监视资源使用情况,例如 CPU 和 GPU 使用情况。 如果资源没有得到充分利用,请修改代码以更好地利用资源或缩小到更小或更便宜的 VM 大小。
建议
建议 | 好处 |
---|---|
优化计算资源:根据工作负载的要求优化计算资源。 选择最适合工作负荷的 SKU:
|
选择正确的计算至关重要,因为它直接影响工作负荷的运行成本。 在没有正确使用的情况下选择 GPU 或高性能 SKU 可能会导致浪费开支,而选择小计算可能会导致训练时间过长和性能问题。 |
优化计算缩放: 配置计算群集进行自动缩放 ,以确保仅使用所需的内容。 对于训练群集,请将最小节点数设置为 0,并将节点空闲时间配置为适当的时间。 若要减少迭代试验,请缩短时间以节省成本。 若要进行更多迭代试验,请使用更长时间来防止在每次更改后为纵向扩展或缩减付费。 |
为计算群集配置自动缩放,使其在使用率较低时进行缩减。 将训练群集的最小节点数设置为 0,以便在不使用时缩减到 0。 |
设置训练终止策略: 设置提前终止策略 以限制训练运行或提前终止训练的持续时间。 | 设置终止策略有助于通过提前停止性能不佳的运行来节省成本。 |
将低优先级虚拟机用于批处理工作负荷:请考虑对不对时间敏感且中断可恢复的 批处理工作负荷使用低优先级虚拟机 。 | 低优先级虚拟机支持以低成本使用大量计算能力。 他们利用 Azure 中的剩余容量。 |
为计算实例启用空闲关闭: 为计算实例启用空闲关闭 ,或者如果已知使用 时间,则计划启动和停止 时间。 | 默认情况下,计算实例可供你使用,并产生成本。 将计算实例配置为在空闲时关闭或为其配置计划可在不使用时节省成本。 |
并行化训练工作负载:考虑 并行化训练工作负荷。 在机器学习中的并行组件的帮助下测试运行它们。 | 并行工作负载可以在多个较小的实例上运行,从而可能节省成本。 |
Azure VM 预留实例:如果对未来一到三年的使用情况有很好的估计,请购买 Azure VM 预留实例。 如果对使用情况有良好的估计值,请利用服务的预留容量选项。 | 购买 Azure 虚拟机预留实例以预付虚拟机使用情况,并通过即用即付定价提供折扣。 折扣将自动应用于与预留匹配的虚拟机使用情况。 |
卓越运营
卓越运营主要侧重于 开发实践、可观察性和发布管理的过程。
卓越运营设计原则提供了一个高级设计策略,用于实现这些目标,以满足工作负载的运营要求。
设计清单
根据 卓越运营的设计评审清单 启动设计策略,以定义与机器学习相关的可观测性、测试和部署流程。
开发标准:利用机器学习模型目录和注册表来存储、版本化和共享机器学习资产。
自动化提高效率: 遵循良好的机器学习操作 (MLOps) 实践。 尽可能生成端到端自动化管道,用于数据准备、训练和评分过程。 在开发中,使用脚本而不是笔记本来训练模型,因为脚本更容易集成到自动化管道中。
放心部署:为机器学习工作区、计算群集、计算实例和其他部署环境实现基础结构即代码 (IaC) 。
可观测性:监视已部署模型的性能,包括数据偏移。
可观测性:如果将模型部署到联机终结点, 请启用 Application Insights 来 监视联机终结点和部署。 监视训练基础结构,确保满足基线要求。
简单性:使用针对机器学习进行优化的特选环境(如果可用)。
建议
建议 | 好处 |
---|---|
最小化机器学习工作区实例:尽可能减少工作区数以减少维护。 | 限制工作区数可减少维护工作量和运营成本。 对于安全性等要求,可能需要多个单独的工作区。 尽可能减少工作区数。 |
利用模型目录和注册表:利用机器学习模型目录和注册表来存储、版本和共享机器学习资产。 使用机器学习模型目录来帮助实现模型的 A/B 测试和部署。 |
使用机器学习模型注册表来存储和版本化机器学习模型,以跟踪更改并维护用于训练的作业和数据集的世系。 借助机器学习模型目录,数据科学团队可以发现、评估和微调预先训练的基础机器学习模型。 在机器学习模型注册表中存储版本控制模型支持部署策略,例如 A/B 版本、Canary 版本和回滚。 |
监视模型性能: 监视已部署模型的性能,并 检测数据集上的数据偏移。 | 监视部署的模型可确保模型满足性能要求。 监视数据偏移有助于检测输入数据中可能导致模型性能下降的更改。 管理数据偏移有助于确保模型随时间推移提供准确的结果。 |
监视基础结构:如果模型部署到联机终结点, 请启用 Application Insights 来 监视联机终结点和部署。 监视训练基础结构,确保满足基线要求。 确保 正在收集机器学习的资源日志 。 |
监视终结点可让你查看指标,例如请求延迟和每分钟请求数。 可以将性能与基线进行比较,并使用此信息对计算资源进行相应的更改。 监视指标(如网络字节数)可以在接近配额限制时发出警报并阻止限制。 同样,监视训练环境可提供对训练环境进行更改的信息。 使用该信息来决定横向扩展或横向扩展、使用不同的高性能 SKU 进行纵向扩展或缩减,或者在 CPU 或 GPU 之间进行选择。 |
策展模型训练环境:使用针对机器学习优化的特选环境(如果可用)。 |
特选环境 是由机器学习提供的预创建环境,可加快部署时间并减少部署和训练延迟。 使用特选环境可提高训练和部署成功率,并避免不必要的映像生成。 特选环境(例如 用于 PyTorch 的 Azure 容器)也可以进行优化,以便在机器学习上训练大型模型。 |
性能效率
性能效率与维护用户体验有关,即使通过管理容量 增加负载 也是如此。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。
性能效率设计原则提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。
设计清单
根据 性能效率的设计评审清单 启动设计策略,以便根据机器学习工作负载的关键绩效指标定义基线。
性能目标:确定模型的可接受训练时间和重新训练频率。 为训练时间设置明确的目标以及测试有助于确定满足训练时间目标所需的计算资源、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 策略进行审核。 请考虑以下与安全性相关的策略:
- 允许指定机器学习计算的注册表。
- 为指定的机器学习计算配置允许的 Python 包。
- 机器学习计算应位于虚拟网络中。
- 机器学习计算应禁用本地身份验证方法。
- 机器学习工作区应禁用公用网络访问。
- 应重新创建机器学习计算实例以获取最新的软件更新。
- 机器学习工作区应使用客户管理的密钥进行加密。
- 机器学习工作区应使用专用链接。
- 机器学习工作区应使用用户分配的托管标识。
- 在为指定的机器学习计算运行作业之前,需要调用的审批终结点。
- 需要代码签名,以便训练计算代码。
- 将模型部署限制为特定注册表。
请考虑以下与成本优化相关的策略:
请考虑以下与卓越运营相关的策略:
若要全面治理,请查看机器学习Azure Policy内置定义。
顾问建议
顾问是一种个性化的云顾问,可帮助遵循最佳做法来优化 Azure 部署。 顾问建议可帮助你提高机器学习的可靠性、安全性、成本效益、性能和卓越运营。
请考虑以下 顾问 安全性建议:
- 应使用客户管理的密钥 (CMK) 对工作区进行加密。
- 工作区应使用专用链接。
- 工作区应禁用公用网络访问。
- 计算应位于虚拟网络中。
- 应重新创建计算实例以获取最新的软件更新。
请考虑以下 顾问 建议实现卓越运营:
- 应启用机器学习工作区中的资源日志。
后续步骤
将这些文章视为演示本文重点介绍的建议的资源。
- 使用 基线 OpenAI 端到端聊天参考体系结构 作为如何将这些建议应用于工作负载的示例。
- 使用 机器学习 产品文档来构建实现专业知识。