如何将多个模型部署到一个SageMaker节点?

0

【以下的问题经过翻译处理】 客户因延迟问题要求在同一SageMaker容器中托管多个DNN模型。客户不想为每个模型切换不同的容器,因为网络会增加额外的延迟。SageMaker可以托管多个模型吗?同时每个模型共享相同的输入并将不同的模型的输出串联在一起?

profile picture
专家
已提问 8 个月前8 查看次数
1 回答
0

【以下的回答经过翻译处理】 首先Amazon SageMaker支持多种在一个节点上托管多个模型的方式: 1.使用多模型推理端点:Amazon SageMaker支持从同一推理端点提供多个模型。详细信息可以在这里找到[1]。示例代码可以在这里找到[2]。目前,此功能不支持弹性推理或串行推理流水线。多模型端点还可以使您的模型跨内存资源进行时间共享。当模型大小和调用延迟相当相似时,这样做效果最佳。在这种情况下,多模型端点可以在所有模型上有效使用实例。如果您的模型具有显着更高的每秒事务(TPS)或延迟要求,我们建议将它们托管在专用端点上。多模型端点也非常适合可以容忍偶尔调用不经常使用的模型时产生的冷启动相关延迟惩罚的情况。 2.在SageMaker上使用自己的算法:您还可以使用自己的libs和运行/编程语言带来自己的容器。请参见此处有关如何在sagemaker [3]上带来自己的算法/容器映像的示例笔记本。 3.使用多模型服务容器使用多模型:通过使用多模型存档文件来使用多模型推理容器,您可以在此处找到 tensorflow serving的示例[4] 4.如果需要按顺序串行调用模型,SageMaker 推理管道允许您在同一端点上链接最多 5 个模型,一个接一个调用 Sagemaker 端点包括可节省成本的优化,如果是这样,重要的是要记住,管道中的所有容器都在同一台EC2实例上运行,因此“Inference的延迟较低,因为容器在同一台EC2实例上相邻运行”[5]。

在同一端点上拥有多个模型不一定是个好主意(除非您有我在上面提到的原因和要求)。 每个端点拥有一个模型会创建一种隔离,这对容错性、安全性和可扩展性具有积极的好处。

[1]https://aws.amazon.com/blogs/machine-learning/save-on-inference-costs-by-using-amazon-sagemaker-multi-model-endpoints/

[2]https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionity/multi_model_bring_your_own/multi_model_endpoint_bring_your_own.ipynb

[3]https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionity/scikit_bring_your_own/scikit_bring_your_own.ipynb

[4]https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/tensorflow/deploying_tensorflow_serving.rst#deploying-more-than-one-model-to-your-endpoint

[5]https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则

相关内容