You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure ML命令作业code路径指向Azure Blob存储

报错原因

command()函数的code参数传入路径时,SDK会先做格式校验:如果传入值既不是存在的本地文件/目录路径,也不符合Azure ML认可的云资源URI规范,SDK会默认将其作为本地路径做存在性校验,找不到对应资源就抛出你看到的ValidationException。你直接填入原生Blob路径时,SDK无法识别这是云存储路径,就会默认去本地文件系统找对应目录,自然会报错。

正确配置方案

根据你的Blob存储接入情况,二选一即可:

方案1:使用工作区Datastore格式URI(最简便,推荐)

如果存代码的Blob容器已经注册为当前ML工作区的Datastore(工作区初始化时默认绑定的Blob存储会自动注册为名为workspaceblobstore的Datastore),直接按照Azure ML规定的Datastore URI格式填写code参数就行,不需要额外配置权限,格式规则:

azureml://datastores/<你的Datastore名称>/paths/<代码在Blob中的相对目录路径>

修改后的代码示例:

from azure.ai.ml import Input, command
from azure.ai.ml.constants import AssetTypes

my_job_inputs = {
    "input_data": Input(
        path='***',
        type=AssetTypes.URI_FOLDER
    )
}

job = command(
    # 替换为你自己的Datastore名和代码存放路径
    code="azureml://datastores/workspaceblobstore/paths/src/my_job_code/",
    command='python main.py --input_folder ${{inputs.input_data}}',
    inputs=my_job_inputs,
    environment="test-env2",
    compute="compute-instance"                                                      
)

returned_job = ml_client.create_or_update(job)
# 打印作业监控地址
print(returned_job.services["Studio"].endpoint)

注意:路径指向的目录下必须直接包含你要执行的main.py入口文件,不要多嵌套一层无意义的目录,否则运行时会报找不到脚本。

方案2:直接使用Blob HTTPS地址

如果存代码的Blob没有注册为工作区Datastore,可以直接填Blob目录的HTTPS访问地址,需要提前配好访问权限:

  • 公共访问级别的Blob容器,直接填目录HTTPS地址即可
  • 私有Blob容器,二选一配置权限:给运行作业的计算资源(计算实例/集群)绑定对应存储账号的「存储Blob数据读取者」RBAC权限;或者在HTTPS地址后拼接有读权限、有效期覆盖作业全运行周期的SAS令牌
    code参数示例:
# 私有Blob带SAS的路径示例
code="https://<你的存储账号名>.blob.core.windows.net/<容器名>/代码目录路径?<你的SAS令牌字符串>"
校验提示

提交作业如果不再报路径校验错误,可以进到ML Studio的作业详情页,打开「代码」页签确认自动拉取的代码文件是否完整、入口文件路径是否匹配,避免作业启动后找不到执行脚本。

内容的提问来源于stack exchange,提问作者make-it-happen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:42:27