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

如何解决SageMaker Pipeline多数据输入预处理的报错问题?

SageMaker Pipeline多数据输入配置错误排查

问题概述

运行带多个数据输入的SageMaker预处理管道时,单输入场景可正常执行,但添加第二个需合并的数据输入后出现两类错误:

  • FailureReason: 'ClientError: AlgorithmError: , exit code: 1'
  • FailureReason: 'ClientError: Failed to invoke sagemaker:CreateProcessingJob. Error Details: null'

备注:单独使用任一数据输入均可成功运行,说明管道具备数据读取能力,问题出在多参数/输入的配置逻辑上。

当前代码配置

参数定义

from sagemaker.workflow.parameters import (
ParameterInteger,
ParameterString,)
Processing_instance_count = ParameterInteger(name="ProcessingInstanceCount",default_value=1)

data_input1 = ParameterString(name="data1",default_value=data1,)
data_input2 = ParameterString(name="data2",default_value=data2,)

处理步骤代码

process_step = ProcessingStep(     
    name="...",     
    processor=sklearn_processor,     
    inputs=[         
        ProcessingInput(source=data1, destination="/opt/ml/processing/input"),        
        ProcessingInput(source=data2, destination="/opt/ml/processing/input"),],     
    outputs=[         
        ProcessingOutput(output_name="...", source="/opt/ml/processing/output"),],    
    code=preprocess_script_uri,     
)

管道定义代码

pipeline_name = f"..."       
pipeline = Pipeline(     
    name=pipeline_name,     
    parameters=[         
        Processing_instance_count,         
        data_input1,         
        data_input2,     ],     
    steps=[process_step],     
)

问题根源与修复方案

1. 重复目标路径导致数据覆盖

两个ProcessingInput都指向同一个目标路径/opt/ml/processing/input,这会导致后一个输入覆盖前一个的文件,或引发文件系统冲突,最终让预处理脚本找不到完整的数据源,触发AlgorithmError。

修复:给每个输入分配独立子路径:

inputs=[         
    ProcessingInput(source=data_input1, destination="/opt/ml/processing/input/data1"),        
    ProcessingInput(source=data_input2, destination="/opt/ml/processing/input/data2"),
]

同时修改预处理脚本,从对应的子路径读取两个数据源进行合并。

2. 参数引用错误导致Job创建失败

处理步骤中直接使用了原始变量data1/data2,而非定义好的参数对象data_input1/data_input2,管道无法正确解析参数化的输入路径,从而引发CreateProcessingJob调用失败。

修复:修正ProcessingInput的source参数,使用定义好的参数对象:

inputs=[         
    ProcessingInput(source=data_input1, destination="/opt/ml/processing/input/data1"),        
    ProcessingInput(source=data_input2, destination="/opt/ml/processing/input/data2"),
]

额外验证点

  • 确认预处理脚本已适配新的子路径,没有硬编码旧路径
  • 检查SageMaker执行角色对两个数据源的存储位置(如S3)均有读取权限
  • 验证两个数据源的文件格式一致,避免脚本因格式不兼容崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:10:56