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

AMLS中PythonScriptStep()传递ds_consumption参数时解析报错问题

Azure Machine Learning 管道新增数据集参数后argparse解析报错修复

问题复现

初始构建Azure ML管道时,通过PythonScriptStep向评分脚本传递普通参数、挂载路径参数,运行状态正常。
正常运行的步骤定义代码:

scoring_step1 = PythonScriptStep(
    name="Scoring_Step1",
    source_directory='./source_directory',
    script_name="scoring1.py",
    arguments=[
    '--input-data-label', input_data_label,
    '--input-data-folder', input_datasetfiles.as_named_input(input_data_label).as_mount(),
    '--output-data-folder-name', cache_folder_name, 
    '--output-data-folder', cache_data_folder,
    '--message', "This is a test message"
    ],
    outputs=[cache_data_folder],
    compute_target=aml_compute,
    runconfig=pipeline_run_config,
    allow_reuse=False
)

对应scoring1.py中通过ArgumentParser接收参数的代码:

# Get parameters
parser = argparse.ArgumentParser()

# argument names need to have the same name when you call them somewhere else
parser.add_argument("--input-data-label", type=str, dest='input_data_label', default='input_data_label', help='given input data label')
parser.add_argument("--input-data-folder", type=str, dest='not_important_when_as_mount', help='arbitrary text')
parser.add_argument('--output-data-folder-name', type=str, dest='output_data_folder_name', default='output_data_folder_name', 
                    help='given output data folder name')
parser.add_argument('--output-data-folder', type=str, dest='output_data_folder', default='output_data_folder', help='Folder for results')
parser.add_argument('--message', type=str, dest='message', default='Hallo Alex', help='Folder for results')

args = parser.parse_args()
input_data_label = args.input_data_label
output_data_folder_name = args.output_data_folder_name
output_data_folder_path = args.output_data_folder # get the path to the datafolder when using "PipelineData"
message = args.message

后续新增流程所需的动态数据集参数ds_consumption后,参数传递逻辑失效,步骤定义修改为:

customer_dataset = Dataset.get_by_name(ws, name='Dreg_Test')
pipeline_param = PipelineParameter(name="pipeline_param", default_value=customer_dataset)                                                  
ds_consumption = DatasetConsumptionConfig("dataset", pipeline_param)

scoring_step2 = PythonScriptStep(
    name="Scoring_Step2",
    source_directory='./source_directory',
    script_name="scoring2.py",
    arguments=[
    '--ds_consumption', ds_consumption,
    '--input-data-label', input_data_label,
    '--input-data-folder', input_datasetfiles.as_named_input(input_data_label).as_mount(),
    '--output-data-folder-name', cache_folder_name, 
    '--output-data-folder', cache_data_folder,
    '--message', "This is a test message"
    ],
    inputs=[ds_consumption],
    outputs=[cache_data_folder],
    compute_target=aml_compute,
    runconfig=pipeline_run_config,
    allow_reuse=False
)

scoring2.py中新增数据集读取逻辑:

# Get the experiment run context
run = Run.get_context()
dataset = run.input_datasets["dataset"]
data = dataset.to_pandas_dataframe()

# End the run
run.complete()

运行scoring2.py时,代码执行到args = parser.parse_args()行即抛出未识别参数的错误,无法定位根因。

根本原因

报错由两个常见的SDK使用误区导致:

  1. 新增了--ds_consumption传参项,但未在scoring2.py的ArgumentParser中注册对应参数,argparse遇到未定义的传入参数会直接抛出解析错误。
  2. 对同一个ds_consumption数据集配置,既在inputs列表中声明,又在arguments列表中重复传递,会导致运行时实际传入脚本的参数顺序错位,触发解析失败。

修复方案

按以下步骤排查调整即可恢复正常运行:

  • 首先统一数据集传递逻辑,二选一即可,不要重复配置:
    • 方案1(匹配现有run.input_datasets读取逻辑,推荐):直接删除arguments列表中的'--ds_consumption', ds_consumption两行,仅保留inputs=[ds_consumption]配置。这种方式下数据集不需要走argparse传递,现有读取数据集的代码可以正常运行,完全不会干扰其他普通参数的解析。
    • 方案2(如果需要通过argparse获取数据集挂载路径):删除inputs=[ds_consumption]配置,修改arguments中数据集项为'--ds_consumption', ds_consumption.as_mount(),同时在scoring2.py的argparse中补充对应参数定义:
      parser.add_argument("--ds_consumption", type=str, dest='ds_consumption_path', help='挂载后的数据集本地路径')
      
      解析后拿到的args.ds_consumption_path就是数据集挂载的本地路径,可直接通过pandas等库读取文件。
  • 如果调整后仍报参数解析错误,检查是否存在手动将数据集配置转成字符串拼接传参的情况:直接将DatasetConsumptionConfig对象作为arguments列表的独立元素传递时,SDK会自动处理带空格、特殊字符的挂载路径转义,手动转字符串反而会导致路径被空格拆分,触发argparse解析错误。

内容的提问来源于stack exchange,提问作者randomnickname

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:48:29