使用Azure CLI创建ML环境遇到的构建及使用异常问题
Azure ML CLI创建环境后的两个问题及解决办法
问题1:Conda规格无变化时环境镜像不构建(显示Not built)
用az ml environment create创建环境时,如果当前指定的Conda配置和同名称的旧版本完全一致,CLI会跳过镜像构建流程,只生成环境的元数据,导致环境在ML Studio里显示“Not built”。
解决办法
- 强制触发构建:给CLI命令加上
--build参数,不管Conda配置有没有变化,都会重新构建镜像:
az ml environment create --name $(AML_ENVIRONMENT_NAME) --version $(AML_ENVIRONMENT_VERSION) --resource-group $(RESOURCE_GROUP) --workspace-name $(WORKSPACE_NAME) --image $(AML_ENVIRONMENT_BASE_IMAGE) --conda-file $(AML_ENVIRONMENT_CONDA_SPEC) --build
- 复用已有镜像:如果确认旧版本的镜像完全匹配当前需求,可以添加
--use-existing-image参数,直接复用已构建的镜像,无需重新编译。
问题2:调用Environment.get()时触发Autosave版本的新构建
通过CLI创建的环境,元数据里缺少Python SDK预期的部分标识字段,导致调用Environment.get()时,SDK会误判环境需要更新,自动生成带Autosave_YYYY-MM-DDTHH:MM:SS后缀的新版本并触发构建,而且流水线会实际使用这个自动生成的版本。
解决办法
- 禁用自动保存:获取环境后手动关闭自动保存开关,阻止SDK生成Autosave版本:
from azureml.core import Environment env = Environment.get(ws, name=env_name, version=env_version) env.autosave = False
- CLI创建时显式设置构建策略:创建环境时用
--set参数指定构建属性,让环境元数据和SDK创建的保持一致:
az ml environment create --name $(AML_ENVIRONMENT_NAME) --version $(AML_ENVIRONMENT_VERSION) --resource-group $(RESOURCE_GROUP) --workspace-name $(WORKSPACE_NAME) --image $(AML_ENVIRONMENT_BASE_IMAGE) --conda-file $(AML_ENVIRONMENT_CONDA_SPEC) --set build.build_on_create=True
- 改用SDK的导入方法:用
Environment.from_existing_workspace替代Environment.get,这个方法不会触发自动构建流程:
from azureml.core import Environment env = Environment.from_existing_workspace(workspace=ws, name=env_name, version=env_version)
内容的提问来源于stack exchange,提问作者jarmniku
相关产品推荐
相关产品推荐

