Watson机器学习服务部署Docplex模型遇EntityStreamSizeException问题求助
Watson Machine Learning Lite版部署Docplex模型时遇到请求实体大小超限的413错误
问题背景
在使用Watson Machine Learning Lite版部署Docplex模型并发起求解请求时,收到以下413错误:
Exception has occurred: ApiRequestFailure
Failure during scoring asyncronously.
Status code: 413. The request content was malformed:
EntityStreamSizeException: incoming entity size (32281635) exceeded size limit (10485760 bytes)! This may have been a parser limit (set via pekko.http.[server|client].parsing.max-content-length), a decoder limit (set via pekko.http.routing.decode-max-size), or a custom limit set with withSizeLimit.
错误触发于提交求解任务的代码段:
solve_payload = { client.deployments.DecisionOptimizationMetaNames.SOLVE_PARAMETERS: { 'oaas.logAttachmentName': 'log.txt', 'oaas.logTailEnabled': 'true', 'oaas.includeInputData': 'false', 'oaas.resultsFormat': 'JSON' }, client.deployments.DecisionOptimizationMetaNames.INPUT_DATA: [ { "id": cplex_file, "content": getfileasdata("model.lp") } ], client.deployments.DecisionOptimizationMetaNames.OUTPUT_DATA: [ { "id": ".*\.json" }, { "id": ".*\.txt" } ] } job_details = client.deployments.create_job(deployment_uid, solve_payload)
IBM支持给出的调整pekko.http.server.parsing.max-content-length为infinite的方案,需要结合服务版本的限制来判断可行性。
解答
1. 错误根源与版本限制差异
- 该413错误确实是服务器端的请求实体大小限制导致的,报错中明确的10MB(10485760字节)是Watson ML服务的默认请求内容上限。
- Lite版不支持调整该限制:Lite tier作为免费试用版本,有固定的资源和配置限制,无法修改
pekko.http.server.parsing.max-content-length这类服务器级参数。 - 付费版可调整:Standard或Enterprise tier的Watson ML服务允许通过配置该参数扩大上限甚至设置为
infinite,这也是IBM支持方案的适用场景。
2. Lite版的替代解决方法
由于Lite版无法修改服务器限制,可通过以下方式规避问题:
- 优化模型文件:简化Docplex模型,移除冗余约束、变量或数据;对LP文件进行gzip压缩,在代码中处理压缩和解压逻辑后再提交。
- 分离模型与请求体:不要将完整模型文件嵌入请求的
INPUT_DATA中,先将模型部署为在线服务,再提交较小的输入数据;或使用IBM Cloud Object Storage存储模型,在求解任务中通过路径引用加载模型,而非直接嵌入请求。
内容的提问来源于stack exchange,提问作者Anastasiia Nazarenko
相关产品推荐
相关产品推荐

