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

Sagemaker实时推理端点Payload超6MB限制的解决方案咨询

Amazon SageMaker实时推理Payload超限解决方案

一、更紧凑的数据格式选择

针对大尺寸图片导致JSON Payload超6MB限制的问题,推荐以下几种高效替代格式:

1. MessagePack

二进制序列化格式,体积比JSON更小,序列化/反序列化速度更快。无需复杂配置,直接替换JSON的序列化逻辑即可:

  • 发送端:用msgpack.packb()序列化数据,设置ContentType为application/x-msgpack
  • 端点侧:用msgpack.unpackb()解析二进制Body

2. Protocol Buffers(Protobuf)

强类型二进制格式,压缩率远高于JSON,适合结构化数据场景。需要先定义.proto文件描述数据结构,两端生成对应语言的代码来完成序列化/反序列化,适合长期维护的生产环境。

3. 直接传输二进制图片(规避Base64膨胀)

Base64编码会让图片体积增加约33%,如果只需要传递图片+少量元数据,可采用以下方式:

  • 将inferenceType、productType放在请求头中
  • 图片二进制直接作为请求Body发送,或用multipart/form-data格式同时传递元数据和图片文件
  • 端点侧直接读取二进制图片,无需Base64解码,大幅降低Payload体积

二、gzip压缩Payload的可行性

可以通过gzip压缩Payload后发送,SageMaker支持接收压缩请求,只需注意两点:

  1. 发送时设置Content-Encoding: gzip请求头,保留原ContentType(如application/json)
  2. 端点侧先解压Body再处理

发送端示例代码

import gzip
import json
from io import BytesIO
import boto3

sagemaker_runtime_client = boto3.client('sagemaker-runtime')
endpoint_name = "your-endpoint-name"
productType = "your-product-type"
encoded_image_bytes_as_string = "base64-encoded-image"

data = {
    'inferenceType': 'SINGLE_INSTANCE',
    'productType': productType,
    'images': [encoded_image_bytes_as_string],
}
payload = json.dumps(data).encode('utf-8')

# 压缩Payload
compressed_payload = BytesIO()
with gzip.GzipFile(fileobj=compressed_payload, mode='w') as f:
    f.write(payload)
compressed_payload.seek(0)

response = sagemaker_runtime_client.invoke_endpoint(
    EndpointName=endpoint_name,
    ContentType="application/json",
    ContentEncoding="gzip",
    Body=compressed_payload.read()
)

端点侧解压示例(Python推理容器)

import gzip
import json

def input_fn(request_body, request_content_type, request_context):
    # 检查是否为gzip压缩
    if request_content_type == 'application/json' and request_context.get('ContentEncoding') == 'gzip':
        decompressed_body = gzip.decompress(request_body)
        return json.loads(decompressed_body.decode('utf-8'))
    # 非压缩情况处理
    return json.loads(request_body.decode('utf-8'))

# 其他模型加载、推理逻辑...

注意:压缩后的Payload仍需控制在6MB以内,建议结合「直接传输二进制图片」的方案,进一步降低体积。

内容的提问来源于stack exchange,提问作者219CID

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:35:11