Sagemaker 无服务器推理和自定义容器:模型归档器子进程失败

Sagemaker Serverless Inference & custom container: Model archiver subprocess fails

我想使用新 Serverless Inference.

在 Sagemaker 上托管一个模型

我按照几个指南编写了自己的推理容器和处理程序。这些是要求:

mxnet
multi-model-server
sagemaker-inference
retrying
nltk
transformers==4.12.4
torch==1.10.0

在非无服务器端点上,此容器运行良好。但是,对于无服务器版本,我在加载模型时收到以下错误消息:

ERROR - /.sagemaker/mms/models/model already exists.

以下子进程抛出错误

['model-archiver', '--model-name', 'model', '--handler', '/home/model-server/handler_service.py:handle', '--model-path', '/opt/ml/model', '--export-path', '/.sagemaker/mms/models', '--archive-format', 'no-archive']

那么与 model-archiver 有关的东西(我猜这是来自 MMS 包的进程?)。

一种可能是无服务器 sagemaker 版本正在尝试将模型写入您已经在推理容器中写入的相同位置。

也许检查您的自定义推理代码并且不要在那里加载模型。

所以问题确实与使用 sagemaker 推理工具包和 MMS 托管模型有关,后者始终使用无服务器推理不支持的多模型场景。

我最终编写了自己的 Flask API,它实际上几乎一样简单,而且更可定制。如果您有兴趣,请联系我了解详情。