如何按计划自动将Azure机器学习在线端点非工作时段成本降至0?
实现Azure ML在线端点非工作时段成本归零的方案
可以实现,核心思路是定时删除非工作时段的部署,次日重新创建部署——因为托管在线端点只要存在活跃部署就会产生费用,即使缩容到0实例,基础计算资源仍会保留计费,只有删除部署才能彻底停止计费。以下是具体操作步骤:
方案一:使用Azure Automation Runbook(推荐)
1. 准备自动化账户
在Azure门户创建Automation账户,启用系统分配的托管身份,给该身份分配Azure ML工作空间的参与者权限,确保能执行部署的删除与创建操作。
2. 编写Runbook脚本
(1)删除部署的PowerShell脚本示例
$resourceGroupName = "你的资源组名称" $workspaceName = "你的ML工作空间名称" $endpointName = "你的在线端点名称" $deploymentName = "你的部署名称" # 以托管身份连接Azure Connect-AzAccount -Identity # 删除指定部署 Remove-AzMLOnlineDeployment -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -EndpointName $endpointName -Name $deploymentName -Force
(2)重新创建部署的PowerShell脚本示例
提前将部署配置保存为YAML文件(如deployment-config.yaml),上传到Automation账户的存储中,再通过脚本调用:
$resourceGroupName = "你的资源组名称" $workspaceName = "你的ML工作空间名称" $endpointName = "你的在线端点名称" $deploymentName = "你的部署名称" $configPath = "/Modules/deployment-config.yaml" # 配置文件在Automation存储中的路径 Connect-AzAccount -Identity # 按配置重新创建部署 New-AzMLOnlineDeployment -ResourceGroupName $resourceGroupName -WorkspaceName $workspaceName -EndpointName $endpointName -Name $deploymentName -DeploymentFile $configPath
3. 设置定时触发器
给两个Runbook分别添加时间触发器:
- 删除部署触发器:设为非工作时段开始时间(比如每日18:00)
- 创建部署触发器:设为工作时段开始时间(比如次日8:00)
方案二:使用Azure Logic Apps
1. 创建逻辑应用
在Azure门户创建消耗型逻辑应用,给逻辑应用的系统身份分配Azure ML工作空间的参与者权限。
2. 设计自动化工作流
(1)删除部署工作流
- 触发器:选择「Recurrence(定期)」,设置每日非工作时段的执行时间
- 操作:添加「Azure Machine Learning」模块中的「Delete Online Deployment」,填写资源组、工作空间、端点及部署名称
(2)创建部署工作流
- 触发器:选择「Recurrence(定期)」,设置每日工作时段的执行时间
- 操作:添加「Azure Machine Learning」模块中的「Create Online Deployment」,填写必要参数或引用提前保存的部署配置
注意事项
- 提前备份部署的完整配置(模型路径、运行环境、实例规格等),确保重新创建的部署与原部署一致
- 测试自动化流程,验证删除和创建操作是否正常执行,避免工作时段服务中断
- 仅删除部署保留端点本身不会产生额外费用,端点本身无计费项
内容的提问来源于stack exchange,提问作者lte__
相关产品推荐
相关产品推荐

