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

SageMaker BatchTransform MultiRecord模式JSON解析错误求助

解决Amazon SageMaker批量转换MultiRecord模式下的JSON解析错误问题

核心原因

当启用MultiRecord策略时,SageMaker会将多条输入记录打包成一个JSON数组发送给模型容器,但你的输入是JSONL(每行一个独立JSON对象)格式,若配置或推理代码未匹配这种打包逻辑,就会触发解析错误。

解决方案

  • 调整输入格式或配置SplitType
    如果希望继续使用JSONL输入文件,需在批量转换任务中明确设置SplitType=Line,同时将Content-Type设为application/json。这样SageMaker会按行分割JSONL内容,自动将多行JSON对象打包成一个合法的JSON数组传递给模型。

    若不想修改配置,可将输入文件转换为标准JSON数组格式:

    [
      {"number":"0060540745","brand_name":"XYZ","generic_keywords":"123"},
      {"number":"0060540745","brand_name":"XYZ","generic_keywords":"123"},
      {"number":"0060540745","brand_name":"XYZ","generic_keywords":"123"}
    ]
    
  • 修改模型推理代码的输入处理逻辑
    检查你的模型容器代码(尤其是input_fn函数),确保它能处理JSON数组格式的输入:

    import json
    
    def input_fn(request_body, request_content_type):
        if request_content_type != "application/json":
            raise ValueError(f"Unsupported content type: {request_content_type}")
        
        data = json.loads(request_body)
        # 兼容SingleRecord(单个对象)和MultiRecord(数组)两种模式
        return data if isinstance(data, list) else [data]
    

    这段代码会将输入统一转换为数组格式,确保两种策略下都能正常解析。

  • 验证输入数据的合法性
    检查JSONL文件中是否存在格式错误(如空行、引号不闭合、逗号缺失等)。SingleRecord模式下单个行的错误只会影响该条记录,但MultiRecord模式下会导致整个打包后的JSON数组解析失败。可以用jq工具批量验证:

    jq . example.jsonl
    

    若输出无报错,则说明所有行都是合法的JSON对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:16:11