使用Python通过Azure ML启停AmlCompute实例失败,求解决方案
问题解决:StopCompute is not supported for 'AmlCompute' computes.
你遇到的问题核心是混淆了Azure ML里的**Compute Instance(计算实例)和AmlCompute(计算集群)**两种资源类型,两者的启停逻辑完全不同:
begin_stop()方法仅支持Compute Instance(单节点交互式环境),而你当前操作的是AmlCompute(多节点计算集群),所以触发了不支持的错误。
对应解决方案:
1. 确认目标资源类型
先运行以下代码确认你要操作的资源类型:
compute = ml_client.compute.get(ci_basic_name) print(f"Compute type: {compute.type}")
2. 如果目标是Compute Instance
如果输出是ComputeInstance,检查你的资源名称是否正确,确认后原代码ml_client.compute.begin_stop(ci_basic_name).wait()可以正常执行启停。
3. 如果目标是AmlCompute(计算集群)
AmlCompute不支持直接stop,需要通过缩容节点数到0来停止运行、节省成本:
from azure.ai.ml.entities import AmlCompute # 获取目标计算集群 aml_compute = ml_client.compute.get(ci_basic_name) # 将最小/最大节点数都设为0 aml_compute.min_instances = 0 aml_compute.max_instances = 0 # 提交更新 ml_client.compute.begin_update(aml_compute).wait()
之后集群会自动释放所有运行中的节点,达到停止成本消耗的目的。
补充说明
官方文档中的代码示例是针对Compute Instance的,使用时需要注意匹配对应的资源类型,两种资源的管理API存在差异。
内容的提问来源于stack exchange,提问作者DiscoStu
相关产品推荐
相关产品推荐

