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

管理和优化 Azure 机器学习成本

本文介绍了在训练机器学习模型和将其部署到 Azure 机器学习时,如何管理和优化成本。

使用以下技巧来帮助管理和优化计算资源成本。

  • 使用 Azure 机器学习计算群集
  • 配置训练群集以实现自动缩放
  • 为托管联机终结点配置自动缩放
  • 设置订阅和工作区上的配额
  • 针对训练作业设置终止策略
  • 使用低优先级虚拟机 (VM)
  • 将计算实例计划为自动关闭并启动
  • 使用 Azure 虚拟机预留实例
  • 并行化训练
  • 设置数据保留和删除策略
  • 将资源部署到同一区域
  • 删除失败的部署

有关计划和监视成本的信息,请参阅“计划管理 Azure 机器学习成本”。

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版本未提供服务级别协议。 建议不要将预览版功能用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

使用 Azure 机器学习计算群集

随着数据的不断变化,需要快速且精简的模型训练和重训练流程来维持模型准确。 但是,持续训练需要付出一定代价,尤其是 GPU 上的深度学习模型。

Azure 机器学习用户可以使用托管 Azure 机器学习计算群集(也称为 AmlCompute)。 AmlCompute 支持多种 GPU 和 CPU 选项。 AmlCompute 是由 Azure 机器学习代表你的订阅在内部进行托管的。 它在 Azure IaaS 云规模上提供相同的企业级安全性、合规性和治理功能。

由于这些计算池位于 Azure IaaS 基础结构内,因此,你可以按照与基础结构的其余部分相同的安全性和合规性要求来部署、缩放和管理训练。 这些部署在你的订阅中发生,遵循你的治理规则。 有关详细信息,请参阅“计划管理 Azure 机器学习的成本”。

配置训练群集以实现自动缩放

根据工作负载要求自动缩放群集有助于降低成本,这样就可以只使用所需的内容。

AmlCompute 群集的设计旨在根据工作负载动态进行缩放。 群集可以纵向扩展到所配置的最大节点数。 每次作业完成后,群集都会释放节点并缩放到你配置的最小节点数。

重要

若要避免在没有作业运行时产生费用,请将最小节点数设置为 0。 此设置允许 Azure 机器学习在不使用节点时取消分配这些节点。 值大于 0 将使该数量的节点保持运行状态,即使它们未被使用也是如此。

还可以配置节点在纵向缩减之前处于空闲状态的时间量。 默认情况下,纵向缩减之前的空闲时间设置为 120 秒。

  • 如果执行迭代较少的试验,请缩短此时间以节省成本。
  • 如果迭代较多的开发/测试试验,可能需要增加此时间,这样就不用在每次更改训练脚本或环境后为纵向扩展或纵向缩减付费。

你可以使用以下方法为不断变化的工作负载要求配置 AmlCompute 群集:

为自动缩放配置托管联机终结点

自动缩放会自动运行适量的资源来处理应用程序的负载。 托管联机终结点支持通过与 Azure Monitor 自动缩放功能的集成进行自动缩放。 有关详情,请参阅“适用于实时推理的联机终结点和部署”。

Azure Monitor 自动缩放支持一组丰富的规则:

  • 基于指标的缩放,例如 CPU 利用率 >70%
  • 基于计划的缩放,例如,高峰营业时段的缩放规则
  • 两者的组合

有关详细信息,请参阅自动缩放联机终结点

设置资源上的配额

AmlCompute 附带一个配额(或限制)配置。 此配额按 VM 系列配置,例如 Dv2 系列或 NCv3 系列。 配额因每个订阅的区域而异。 订阅从较小的默认值开始。 使用此设置可以控制在订阅中逐渐增加的 Amlcompute 资源量。 有关详细信息,请参阅“Azure 机器学习计算”。

此外,对于订阅内的每个工作区,你还可以配置按 VM 系列的工作区级别配额。 这样,你就可以对每个工作区可能产生的成本进行更精细的控制并限制某些 VM 系列。 有关详细信息,请参阅“工作区级别的配额”。

若要在工作区级别设置配额,请执行以下操作:

  1. 打开 Azure 门户,然后选择订阅中的任何工作区。

  2. 在工作区菜单中选择“支持 + 故障排除”>“使用情况 + 配额”。

  3. 选择“查看配额”以查看 Azure 机器学习工作室中的配额。

  4. 在此页中,你可以找到订阅和区域以设置配额。

    你需要订阅范围的权限来设置配额,因为这是一个会影响多个工作区的设置。

设置作业终止策略

在某些情况下,应对“训练运行”进行配置以限制其持续时间或提前终止。 例如,当使用 Azure 机器学习的内置超参数优化或自动化机器学习时。

以下是可执行的几个选择:

  • 在 RunConfiguration 中定义名为 max_run_duration_seconds 的参数,用于控制一个运行可在所选计算(本地或远程云计算)上持续的最长持续时间。
  • 对于超参数优化,请在老虎机策略、中间值停止策略或截断选择策略中定义提前终止策略。 若要进一步控制超参数整理,请使用 max_total_runsmax_duration_minutes 等参数。 有关详细信息,请参阅“指定提前终止策略”。
  • 对于自动化机器学习,请使用 enable_early_stopping 标志设置类似的终止策略。 另外,请使用诸如 iteration_timeout_minutesexperiment_timeout_minutes 等属性来控制作业或整个试验的最长持续时间。 有关详细信息,请参阅“退出条件”。

使用低优先级虚拟机

Azure 允许在虚拟机规模集、Batch 和机器学习服务中将未利用的多余容量作为低优先级 VM 使用。 这些容量分配是可预先抢占的,其价格比专用 VM 低。 通常,建议为 Batch 工作负载使用低优先级 VM。 如果可通过重新提交(对于 Batch 推理)或通过重启(对于具有检查点的深度学习培训)从中断中恢复,也应使用它们。

低优先级 VM 具有与专用配额值(按 VM 系列)不同的单一配额。 有关 AmlCompute 配额的详细信息,请参阅“管理和增加配额”。

低优先级 VM 不适用于计算实例,因为后者需要支持交互式笔记本体验。

计划计算实例

当你创建计算实例时,VM 将保持打开状态,以供你使用。

  • 启用空闲关闭(预览版),在 VM 空闲时间达到指定值时节省成本。 请参阅“配置空闲关闭”。
  • 设置计划以自动启动和停止计算实例(预览版),以节省非计划使用成本。 请参阅“计划自动启动和停止”。

使用预留实例

节省计算资源成本的另一种方法是 Azure 虚拟机预留实例。 此产品按一年或三年的期限提供。 其折扣最高可达即用即付价格的 72%,并直接应用于每月 Azure 帐单。

Azure 机器学习计算本身就支持预留实例。 如果你购买了一年或三年的预留实例,将自动根据你的 Azure 机器学习托管计算来应用折扣。

并行化训练

优化成本和性能的关键方法之一是借助 Azure 机器学习中的并行组件并行化工作负载。 并行组件允许使用多个较小节点并行执行任务,从而使你可以水平缩放。 并行化会产生开销。 是否选择此选项具体取决于工作负载和可实现的并行度。 有关详细信息,请参阅“ParallelComponent 类”。

设置数据保留和删除策略

每次执行管道时,都会在每个步骤中生成中间数据集。 随着时间的推移,这些中间数据集会占用存储帐户中的空间。 请考虑设置策略,在数据的整个生命周期中管理数据,以存档和删除数据集。 有关详细信息,请参阅通过自动管理数据生命周期来优化成本

将资源部署到同一区域

位于不同区域的计算可能会遇到网络延迟和数据传输成本增加的问题。 Azure 网络成本源自 Azure 数据中心的出站带宽。 若要帮助降低网络成本,请将所有资源部署到该区域。 在数据所在的同一区域中预配 Azure 机器学习工作区和依赖资源可帮助降低成本并提高性能。

对于混合云场景(如使用 Azure ExpressRoute 的场景),将所有资源移动到 Azure 以优化网络成本和延迟有时可能更具成本效益。

删除失败的部署

托管联机终结点使用 VM 进行部署。 如果已提交创建联机部署的请求,而该请求失败,则可能已经过了创建计算的阶段。 在这种情况下,失败的部署会产生费用。 如果已完成针对失败的调试或调查,可以删除失败的部署来节省成本。