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

Amazon SageMaker批量转换输出未纳入模型监控作业的问题排查

问题原因与解决方案

核心原因

  1. 默认仅分析捕获的输入数据
    SageMaker数据质量监控的BatchTransformInput默认只会读取数据捕获路径下的input/文件夹内容,不会自动包含output/目录。你的输入数据是5列特征,因此监控检测到5列,与包含目标变量的6列基线数据集不匹配,触发列数违规。
  2. 基线与监控数据集结构不匹配
    你的基线是5输入+1目标的6列结构,但当前监控仅分析输入的5列特征,自然不符合基线的列数约束。

解决方案

方案1:配置监控同时读取输入和输出数据

修改BatchTransformInput的参数,明确指定读取input/和output/的文件,并通过join_source将输出列追加到输入数据后,形成与基线一致的6列结构。

调整后的代码示例:

schedule = data_quality_model_monitor.create_monitoring_schedule(
    monitor_schedule_name="schedule",
    batch_transform_input=BatchTransformInput(
        data_captured_destination_s3_uri=f"s3://{default_bucket}/{s3_prefix_destination}",
        # 指定读取input和output下的所有文件
        source=BatchTransformInputSource(
            input_files="input/*",
            output_files="output/*"
        ),
        destination="/opt/ml/processing/input",
        dataset_format=MonitoringDatasetFormat.csv(header=False),
        # 将输出列追加到输入数据之后,匹配基线的6列结构
        join_source="Input"
    ),
    output_s3_uri=f's3://{default_bucket}/{s3_prefix_output}',
    statistics=f"s3://{default_bucket}/{s3_prefix_statistics}",
    constraints=f"s3://{default_bucket}/{s3_prefix_constraints}",
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)

方案2:验证基线数据集的定义

确认你的基线统计数据(statistics)和约束(constraints)是否基于包含目标变量的6列数据生成:

  • 如果基线是仅基于输入特征的5列,需要重新生成匹配输入数据的基线
  • 如果基线确实包含目标变量,必须确保监控的输入数据包含完整的6列(输入+输出/目标)

额外检查项

  • 确认S3中捕获的input/文件是5列,output/文件是1列(模型预测结果,对应目标变量),合并后正好6列
  • 检查Batch Transform作业的split_type="Line"配置是否正确,避免行数据被错误拆分/合并
  • 如果目标变量原本就在Batch Transform的输入数据中,需确认作业是否在处理时过滤了目标列,导致捕获的input/文件仅保留5列特征

内容的提问来源于stack exchange,提问作者Fili7.5

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:05:55