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

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

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

  • 配置训练群集以实现自动缩放
  • 设置订阅和工作区上的配额
  • 针对训练作业设置终止策略
  • 将计算实例计划为自动关闭并启动
  • 使用 Azure 虚拟机预留实例
  • 在本地训练
  • 并行化训练
  • 设置数据保留和删除策略
  • 将资源部署到同一区域

使用 Azure 机器学习计算群集 (AmlCompute)

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

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

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

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

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

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

重要

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

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

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

可以使用 AmlCompute SDK 类AmlCompute CLI 以及 REST API 来配置 AmlCompute 群集,以适应 Azure 门户中不断变化的工作负载要求。

设置资源上的配额

AmlCompute 附带一个配额(或限制)配置。 此配额根据 VM 系列(例如 Dv2 系列、NCv3 系列)而定,且因每个订阅的区域而异。 订阅从较小的默认值开始以便于你上手,但使用此设置可以控制在订阅中逐渐增加的 Amlcompute 资源量。

对于订阅内的每个工作区,还需配置按 VM 系列的工作区级别配额。 这样,你就可以对每个工作区可能产生的成本进行更精细的控制并限制某些 VM 系列。

若要在工作区级别设置配额,请使用 Azure 门户。 选择订阅中的任何工作区,然后在左窗格中选择“使用量 + 配额”。 然后选择“配置配额”选项卡以查看配额。 你需要订阅范围的权限来设置配额,因为这是一个会影响多个工作区的设置。

设置“作业自动终止”策略

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

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

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

计划计算实例

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

使用预留实例

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

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

并行化训练

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

设置数据保留和删除策略

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

将资源部署到同一区域

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

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