Azure ML提交命令作业报错:作业输入路径不能为空
排查Azure ML命令作业“输入路径不能为空”错误
1. 核对前置预处理作业的输出传递
- 确认预处理作业的
train_data和test_data输出已正确保存为MLflow制品或Azure ML数据资产,且路径不为空。 - 检查训练作业中引用这两个输入的格式是否正确,比如:
from azure.ai.ml import Input train_data = Input(type="uri_folder", path=f"azureml://jobs/{prep_job.name}/outputs/train_data") test_data = Input(type="uri_folder", path=f"azureml://jobs/{prep_job.name}/outputs/test_data") - 确认预处理作业状态是Completed,如果作业失败,输出路径必然为空。
2. 验证训练作业的输入定义
- 确保训练作业
inputs字典里,train_data和test_data的type参数(比如uri_folder或uri_file)和预处理输出类型匹配,且path参数没被意外设为空字符串。 - 排查是否存在变量未正确赋值就传入输入路径的情况,比如:
# 错误示例:prep_train_output未正确获取预处理作业输出 training_job.inputs.train_data = Input(type="uri_folder", path=prep_train_output)
3. 检查train.py的输入读取逻辑
- 确认train.py里通过
args.train_data和args.test_data获取输入路径的代码正常,没有把路径设为空的操作。比如参数解析部分:import argparse parser = argparse.ArgumentParser() parser.add_argument("--train_data", type=str, required=True) parser.add_argument("--test_data", type=str, required=True) args = parser.parse_args() # 排查是否有代码将args.train_data/args.test_data置空
4. 检查作业提交前的参数状态
- 在调用
ml_client.create_or_update(training_job)之前,打印training_job.inputs确认四个输入都已正确赋值,没有空值或遗漏:print(training_job.inputs) ml_client.create_or_update(training_job) - 核对输入参数名称是否拼写正确,比如别把
train_data写成train_data_,导致实际传递的输入不匹配。
5. 排查数据资产的权限与路径有效性
- 如果预处理输出是注册的数据资产,确认训练作业用的计算集群有权限访问该资产的存储路径(比如Blob存储的SAS权限或托管标识权限)。
- 登录Azure ML Studio查看数据资产详情,确认路径指向的存储位置确实存在文件或文件夹。
内容的提问来源于stack exchange,提问作者Karthik S
相关产品推荐
相关产品推荐

