本文介绍了在训练机器学习模型和将其部署到 Azure 机器学习时,如何管理和优化成本。
使用以下技巧来帮助管理和优化计算资源成本。
- 使用 Azure 机器学习计算群集
- 配置训练群集以实现自动缩放
- 为托管在线终结点配置自动缩放
- 设置订阅和工作区上的配额
- 针对训练作业设置终止策略
- 使用低优先级虚拟机 (VM)
- 计划计算实例在指定时间自动关闭和启动
- 使用 Azure 预留虚拟机实例
- 并行化训练
- 设置数据保留和删除策略
- 将资源部署到同一区域
- 删除失败的部署
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版本未提供服务级别协议。 建议不要将预览版功能用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款。
使用 Azure 机器学习计算群集
随着数据的不断变化,需要快速且精简的模型训练和重训练流程来维持模型准确。 但是,持续训练需要付出一定代价,尤其是 GPU 上的深度学习模型。
Azure 机器学习用户可以使用托管 Azure 机器学习计算群集(也称为 AmlCompute)。 AmlCompute 支持多种 GPU 和 CPU 选项。 AmlCompute 是由 Azure 机器学习代表你的订阅在内部进行托管的。 它在 Azure IaaS 云规模上提供相同的企业级安全性、合规性和治理功能。
由于这些计算池位于 Azure IaaS 基础结构内,因此,你可以按照与基础结构的其余部分相同的安全性和合规性要求来部署、缩放和管理训练。 这些部署发生在你的订阅内,并遵循你的治理规则。
配置训练群集以实现自动缩放
根据工作负载要求自动缩放群集有助于降低成本,这样就可以只使用所需的内容。
AmlCompute 群集的设计旨在根据工作负载动态进行缩放。 群集可以纵向扩展到所配置的最大节点数。 每次作业完成后,群集都会释放节点并缩放到你配置的最小节点数。
重要
若要避免在没有作业运行时产生费用,请将最小节点数设置为 0。 此设置允许 Azure 机器学习在不使用节点时取消分配这些节点。 值大于 0 将使该数量的节点保持运行状态,即使它们未被使用也是如此。
还可以配置节点在纵向缩减之前处于空闲状态的时间量。 默认情况下,纵向缩减之前的空闲时间设置为 120 秒。
- 如果执行迭代较少的试验,请缩短此时间以节省成本。
- 如果进行大量迭代的开发/测试实验,您可能需要延长时间间隔,这样在每次更改训练脚本或环境后,就不会因为频繁的扩展和缩减计算资源而付出额外费用。
你可以使用以下方法为不断变化的工作负载要求配置 AmlCompute 群集:
- Azure 门户
- AmlCompute SDK 类
- AmlCompute CLI
- REST APIs。
为自动缩放配置托管在线终端
自动调节会自动运行适量的资源来处理应用程序的负载。 托管在线端点支持通过与 Azure Monitor 自动缩放功能的集成进行自动缩放。 有关详情,请参阅“适用于实时推理的联机终结点和部署”。
Azure Monitor 自动缩放支持一组丰富的规则:
- 基于指标的扩展,例如 CPU 利用率 >70%
- 基于计划的扩展,例如,用于高峰营业时段的扩展规则
- 两者的组合
有关详细信息,请查看自动缩放在线终结点。
设置资源上的配额
AmlCompute 附带一个配额(或限制)配置。 此配额按 VM 系列配置,例如 Dv2 系列或 NCv3 系列。 配额因每个订阅的区域而异。 订阅从较小的默认值开始。 使用此设置可以控制您订阅中可启动的 AmlCompute 资源量。 有关详细信息,请参阅“Azure 机器学习计算”。
在一个订阅中,你还可以为每个工作区配置按 VM 系列划分的工作区级别配额。 这样,你就可以对每个工作区可能产生的成本进行更精细的控制并限制某些 VM 系列。 有关详细信息,请参阅“工作区级别的配额”。
若要在工作区级别设置配额,请执行以下操作:
打开 Azure 门户,然后选择订阅中的任何工作区。
在工作区菜单中选择“支持 + 故障排除”>“使用情况 + 配额”。
选择“查看配额”以查看 Azure 机器学习工作室中的配额。
在此页中,你可以找到订阅和区域以设置配额。
由于此设置会影响多个工作区,您需要具有订阅范围的权限来设置配额。
设置作业终止策略
在某些情况下,应对训练进行配置以限制训练的持续时间或提前终止。 例如,当使用 Azure 机器学习的内置超参数优化或自动化机器学习时。
以下是几个选择:
- 设置
timeout命令作业limits配置中的属性,以控制运行的最大持续时间,从而决定在所选的本地或远程云计算资源上可以运行的最长时间。 - 对于超参数优化,定义一个基于Bandit策略、中位数停止策略或截断选择策略的提前终止策略。 若要进一步控制超参数遍历,请使用
max_total_trials或timeout参数。 有关详细信息,请参阅“指定提前终止策略”。 - 对于自动化机器学习,请使用
enable_early_termination标志设置类似的终止策略。 还可以使用诸如trial_timeout_minutes和timeout_minutes等属性来控制试用期间或整个试验的最大持续时间。 有关详细信息,请参阅“退出条件”。
安排计算实例
当你创建计算实例时,VM 将保持打开状态,以供你使用。
使用预留实例
节省计算资源成本的另一种方法是 Azure 虚拟机预留实例。 此产品按一年或三年的期限提供。 其折扣最高可达标准价格的 72%,并直接应用于每月 Azure 帐单。
Azure 机器学习计算本身就支持预留实例。 如果购买一年或三年的预留实例,则折扣将自动应用于 Azure 机器学习托管计算。
并行化训练
优化成本和性能的关键方法之一是借助 Azure 机器学习中的并行组件并行化工作负载。 并行组件允许使用多个较小节点并行执行任务,从而使你可以水平缩放。 并行化会产生开销。 是否选择此选项具体取决于工作负载和可实现的并行度。 有关详细信息,请参阅“ParallelComponent 类”。
设置数据保留和删除策略
每次管道运行时,在每个步骤都会生成中间数据集。 随着时间的推移,这些中间数据集会占用存储帐户中的空间。 请考虑设置策略,在数据的整个生命周期中管理数据,以存档和删除数据集。 有关详细信息,请参阅通过自动管理数据生命周期来优化成本。
将资源部署到同一区域
位于不同区域的计算可能会遇到网络延迟和数据传输成本增加的问题。 Azure 网络成本源自 Azure 数据中心的出站带宽。 若要帮助降低网络成本,请将所有资源部署到该区域。 在数据所在的同一区域中预配 Azure 机器学习工作区和依赖资源可帮助降低成本并提高性能。
对于混合云场景(如使用 Azure ExpressRoute 的场景),将所有资源移动到 Azure 以优化网络成本和延迟有时可能更具成本效益。
删除失败的部署
托管联机终结点使用虚拟机(VM)进行部署。 如果已提交创建联机部署的请求,而该请求失败,则可能已经过了创建计算的阶段。 在这种情况下,失败的部署会产生费用。 如果已完成针对失败的调试或调查,可以删除失败的部署来节省成本。