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

能否不开启Sagemaker端点数据捕获,用自定义S3数据执行模型监控?

问题

我们目前用Sagemaker部署机器学习模型,但受PII约束无法开启Sagemaker的数据捕获功能来使用Model Data Monitoring。不过我们已经把清理PII后的所有输入和输出备份到了S3存储位置,想知道能不能直接用这些S3路径调度Model Data Monitoring任务?

我们尝试用create_monitoring_schedule接口,按照要求传入batch_transform_input参数,把模型端点输入CSV的S3路径传入,但执行失败,错误信息为:'MonitoringExecutionStatus': 'Failed', 'FailureReason': 'Job inputs had no data'。

测试代码如下:

mon_schedule_name = "DEMO-sagemaker-monitoring-poc-" + strftime(
    "%Y-%m-%d-%H-%M-%S", gmtime()
)

batch_transform_input=BatchTransformInput(
        data_captured_destination_s3_uri=<S3_location_of_model_input_CSV>,
        destination="/opt/ml/processing/input",
        dataset_format=MonitoringDatasetFormat.csv(header=False)
)

my_default_monitor.create_monitoring_schedule(
    monitor_schedule_name=mon_schedule_name,
    batch_transform_input=batch_transform_input,
    statistics=my_default_monitor.baseline_statistics(),
    constraints=my_default_monitor.suggested_constraints(),
    schedule_cron_expression=CronExpressionGenerator.hourly(),
    enable_cloudwatch_metrics=True,
)
问题分析与解决方法

核心原因

你对BatchTransformInput的参数使用有误:data_captured_destination_s3_uri是用来指定批量转换任务生成的标准捕获数据路径,而非直接传入自定义的S3数据文件路径。Sagemaker会按照批量转换的固定格式去查找数据,找不到就会判定为“无输入数据”。

正确实现步骤

要使用自定义S3中的清理后数据执行Model Data Monitoring,需调整输入配置方式,具体如下:

  1. 改用MonitoringInput传入自定义数据
    放弃batch_transform_input参数,使用monitoring_inputs传入自定义S3数据,示例代码调整如下:

    from sagemaker.model_monitor import MonitoringInput, DatasetFormat
    
    mon_schedule_name = "DEMO-sagemaker-monitoring-poc-" + strftime(
        "%Y-%m-%d-%H-%M-%S", gmtime()
    )
    
    # 定义自定义S3输入配置
    custom_monitoring_input = MonitoringInput(
        s3_data_input_config={
            "S3Uri": "<S3_location_of_model_input_CSV>",
            "LocalPath": "/opt/ml/processing/input",
            "S3DataType": "S3Prefix",  # 若为单个文件则改为"S3Object"
            "S3InputMode": "File"
        },
        dataset_format=DatasetFormat.csv(header=False)
    )
    
    my_default_monitor.create_monitoring_schedule(
        monitor_schedule_name=mon_schedule_name,
        monitoring_inputs=[custom_monitoring_input],  # 替换原batch_transform_input参数
        statistics=my_default_monitor.baseline_statistics(),
        constraints=my_default_monitor.suggested_constraints(),
        schedule_cron_expression=CronExpressionGenerator.hourly(),
        enable_cloudwatch_metrics=True,
    )
    
  2. 确认S3路径与权限

    • 检查Sagemaker执行角色是否拥有该S3路径的s3:GetObject和s3:ListBucket权限
    • 若使用前缀路径,确保前缀下存在有效CSV文件,且层级嵌套不会导致Sagemaker无法遍历
    • 验证CSV文件格式与dataset_format配置一致(比如是否包含表头)
  3. 适配数据格式要求
    Model Data Monitoring要求输入数据需匹配基线统计的结构:

    • 数据质量监控:需包含与基线一致的特征列,列数、顺序需对应
    • 模型质量监控:需同时包含特征列与预测结果列,需在配置中指定对应列索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:10:55