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

如何将TensorFlow端点JSON响应转为text/csv?SageMaker监控问题

AWS SageMaker Model Monitor 问题解答

1. 能否将端点输出转为text/csv格式?

可以,有两种可行方案:

  • 修改模型推理脚本:在TensorFlow模型的serve函数中,直接提取predictions中的二维数组值,拼接为逗号分隔的CSV字符串返回,同时设置响应的Content-Type为text/csv; charset=utf-8。
  • 自定义输出序列化器:创建SageMaker端点时,自定义输出序列化器(继承BaseSerializer),将模型返回的JSON响应中的predictions扁平化处理为CSV格式字符串,指定Content-Type为text/csv; charset=utf-8。

2. 输入输出改为JSON后,预处理脚本监控任务失败

由于无法查看img1的具体报错,以下是常见排查方向:

  • 检查预处理脚本的JSON解析逻辑:确保能正确从JSONL格式的输入输出数据中提取特征、预测值、真值等字段,避免因字段缺失或格式不匹配导致解析错误。
  • 验证S3数据格式:确认输入输出数据是每行一个JSON对象的合法JSONL格式,而非单个JSON数组或其他不符合要求的格式。
  • 检查执行角色权限:确保监控任务的执行角色拥有访问S3数据路径、CloudWatch日志、SageMaker资源的完整权限,避免因权限不足导致任务终止。
  • 查看CloudWatch日志:在CloudWatch中找到对应监控任务的日志流,获取详细报错信息,定位具体问题(如脚本语法错误、数据读取失败等)。

3. 批量转换场景监控任务未触发处理

使用$["predictions"]作为JSONPath但任务未触发,可能存在以下问题:

  • 批量输出格式错误:批量转换的输出必须是每行一个预测对象的JSONL格式(如每行{"predictions":[[0.8]]}),不能是包含所有预测的单个JSON数组,否则Model Monitor无法解析数据。
  • JSONPath表达式不准确:原预测格式为二维数组[[0.8],[0.5]],$["predictions"]会提取整个二维数组,需指定到具体数值层级,比如$["predictions"][0][0]来获取单个概率值,确保概率属性能正确提取数值。
  • 触发条件未满足:检查create_monitoring_schedule中schedule_config的触发规则(如数据量阈值、时间间隔),确认是否积累了足够数量的批量数据达到触发条件。
  • 输入路径配置错误:确保监控调度的输入数据源正确指向批量转换的输出路径,且路径下存在符合格式要求的数据文件。
  • 查看调度日志:在CloudWatch Events中查看监控调度的触发记录,或在SageMaker控制台查看任务状态详情,确认是否有触发失败的具体原因。

内容的提问来源于stack exchange,提问作者SRIRAM SIDHARTHA R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:55:17