AWS Sagemaker模型监控报编码不匹配错误 如何实现输出为JSON编码
AWS Sagemaker模型监控编码不匹配解决方案
核心问题根因:Sagemaker数据捕获逻辑未将端点输出识别为JSON格式,一方面你之前配置json_content_types时传入的是字符串而非数组,另一方面模型返回的响应Content-Type为*/*未被纳入JSON识别范围,导致输出被默认转为Base64编码。
操作步骤
- 方案1(推荐,规范度最高):调整模型推理服务的返回响应头,明确指定
Content-Type为application/json。
以Sagemaker PyTorch容器的推理代码为例,修改predict_fn返回逻辑即可:import json def predict_fn(input_data, model): # 原有推理逻辑 prediction = model(input_data) # 返回结果时追加响应头配置 return json.dumps(prediction.tolist()), {"Content-Type": "application/json"} - 方案2(无需修改推理代码的兼容方案):修正
DataCaptureConfig配置,将*/*加入JSON识别列表,同时注意json_content_types参数需要传入数组类型:data_capture_config=DataCaptureConfig( enable_capture = True, sampling_percentage=100, json_content_types = ["application/json", "*/*"], destination_s3_uri=MY_BUCKET ) - 配置修改完成后,重新部署Sagemaker端点,发送测试请求后拉取S3存储的捕获文件,确认
endpointOutput字段下的encoding为JSON后,重新触发模型监控任务即可解决报错。
内容的提问来源于stack exchange,提问作者Pallavi_Answers
相关产品推荐
相关产品推荐

