SageMaker TorchServe容器中如何提升输入长度限制?
在AWS SageMaker里调整TorchServe的消息大小限制
问题根源
这个报错是TorchServe默认的Netty消息大小限制导致的,默认阈值大概是100MB(对应报错里的102970662字节),当请求体超过这个值时就会触发错误。
调整方法
SageMaker上的TorchServe容器支持通过两种方式修改这个限制,解决之前properties文件无效的问题:
方法1:创建端点时设置环境变量
在创建SageMaker模型或端点配置时,添加以下环境变量:
TS_MAX_REQUEST_SIZE:设置最大请求体大小,单位为字节,比如设209715200对应200MBTS_MAX_RESPONSE_SIZE:如果需要同时调整响应大小限制,可一并设置该变量
用Python SDK创建模型的示例代码:
from sagemaker.pytorch.model import PyTorchModel model = PyTorchModel( model_data="s3://你的存储桶/model.tar.gz", role="你的SageMaker角色ARN", framework_version="2.0", py_version="py310", env={ "TS_MAX_REQUEST_SIZE": "209715200", # 200MB "TS_MAX_RESPONSE_SIZE": "209715200" } )
方法2:自定义TorchServe配置文件
之前直接在model.tar.gz里放properties文件无效,是因为SageMaker的TorchServe容器优先读取默认配置,需将自定义配置放在model.tar.gz的config目录下,步骤如下:
- 本地创建
config文件夹,在其中新建config.properties文件,写入:
max_request_size=209715200 max_response_size=209715200
- 将
config文件夹、模型文件、推理脚本打包成model.tar.gz,目录结构需为:
model.tar.gz ├── config/ │ └── config.properties ├── model.pth(你的模型文件,名称可根据实际调整) └── inference.py(自定义推理脚本)
- 将打包好的
model.tar.gz上传至S3,创建SageMaker模型时指定该文件路径即可。
验证配置生效
重新部署端点后,发送一个超过原限制的请求测试,若不再触发CorruptedFrameException,则说明配置已生效。
内容的提问来源于stack exchange,提问作者Hassan Rahamathullah
相关产品推荐
相关产品推荐

