AWS Sagemaker监控错误:编码不匹配



我试图在AWS Sagemaker中的模型上运行模型监控。由于"编码不匹配:endpointtinput的编码是JSON,但endpointOutput的编码是base64。目前我们只支持相同类型的输入和输出编码。">

endpointtinput的编码为JSON, endpointOutput的编码为base64,但期望输入和输出都是JSON。

我尝试在DataCaptureConfig中使用json_content_types,但endpointOutput仍然是base64编码。

下面是我在部署中使用的DataCaptureConfig:

data_capture_config=DataCaptureConfig(
enable_capture = True,
sampling_percentage=100,
json_content_types = 'application/json',
destination_s3_uri=MY_BUCKET)

我从模型中捕获的文件看起来像这样:

{
"captureData": {
"endpointInput": {
"observedContentType": "application/json",
"mode": "INPUT",
"data": "{ === json data ===}",
"encoding": "JSON"
},
"endpointOutput": {
"observedContentType": "*/*",
"mode": "OUTPUT",
"data": "{====base 64 encoded output ===}",
"encoding": "BASE64"
}
},
"eventMetadata": {
=== some metadata ===
}

我观察到输出内容类型没有被识别为json/应用程序。所以我需要一个解决方案/过程来获得json编码形式的输出。请帮助获取JSON编码的输入和输出数据。

这里报告了类似的问题,但没有响应。

在部署端点时,请在DataCaptureConfig中设置CaptureContentTypeHeader,并适当地映射Json contenttypes或CsvContentTypes的输出。

https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CaptureContentTypeHeader.html

这样做将相应地设置编码。如果没有设置,则默认为base64编码,因此会出现问题。

我以前在使用boto3 sagemaker-runtime调用端点时遇到过类似的问题。尝试在invoke_endpoint函数中添加'Accept'请求参数,值为'application/json'。

查阅更多帮助https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html#API_runtime_InvokeEndpoint_RequestSyntax

相关内容

  • 没有找到相关文章

最新更新