Azure AI命令作业触发HttpResponseError:资源范围无效
问题:Azure AI命令作业启动时触发HttpResponseError
使用azure-ai-ml 1.20.0版本,在Notebook中启动命令作业时触发HttpResponseError,但计算、环境等资源在管道作业中可正常使用。
YAML环境配置
name: my-custom-env channels: - conda-forge dependencies: - python=3.9 - (...several others) - pip: - inference-schema[numpy-support]==1.3.0 - (...several others)
创建环境代码
from azure.ai.ml.entities import Environment from azure.identity import DefaultAzureCredential from azure.ai.ml import MLClient credential = DefaultAzureCredential() ml_client = MLClient( credential=credential, subscription_id='my-subscription-id', resource_group_name='my-resource-group-name', workspace_name='my-workspace-name' ) env = Environment( name='my-custom-env', description='Custom environment for my project', conda_file='custom_environment.yaml', image='mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest', version='0.0.0', ) env = ml_client.environments.create_or_update(env)
环境可在非command类型作业中正常使用,无异常。
YAML作业配置(jobs/run_command.yaml)
name: job_name display_name: Job display name experiment_name: my_experiment_name type: command compute: azureml:my-compute-resource environment: azureml:my-custom-env:0.0.0 code: . command: echo "foo"
运行作业的代码及错误信息
通过load_job加载配置运行
from azure.ai.ml import load_job job_config = load_job(source='jobs/run_command.yaml') job = ml_client.jobs.create_or_update(job_config)
触发错误:
HttpResponseError: (UserError) The given resource scope /subscriptions/my-subscription-id/resourceGroups/my_resource_group/providers/Microsoft.MachineLearningServices/workspaces/my_workspace/environments/ is not valid; scope should start like /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>.
通过command()直接创建作业
from azure.ai.ml import command job_config = command( code='.', command='echo "foo"', environment=ml_client.environments.get('my-custom-env', version='0.0.0'), compute='my-compute-resource', experiment_name='my_experiment_name', name='job_name', display_name='Job display name' ) ml_client.create_or_update(job_config)
触发完全相同的错误。
尝试过多种指定环境的方式(名称、镜像、从工作区获取对象等),错误信息一致。
解决方案
- 升级azure-ai-ml版本:1.20.0版本存在命令作业环境解析的已知bug,升级到1.21.0及以上版本可直接修复,执行以下命令升级:
pip install --upgrade azure-ai-ml>=1.21.0
临时 workaround(不升级版本时):
- 先获取环境的完整ARM ID:
env = ml_client.environments.get('my-custom-env', version='0.0.0') env_arm_id = env.id - 在YAML作业配置中,将环境字段替换为该ARM ID:
environment: <env_arm_id> - 或在
command()函数中直接传入ARM ID字符串:job_config = command( # 其他参数保持不变 environment=env_arm_id, )
- 先获取环境的完整ARM ID:
验证资源名称格式:确保环境名称、版本中无特殊字符,计算资源名称正确,避免因名称解析错误导致的路径拼接问题。
内容的提问来源于stack exchange,提问作者A. S. K.
相关产品推荐
相关产品推荐

