如何观察和控制 sagemaker 多模型服务器如何在内存中加载模型

问题描述

我正在评估 SageMaker 多模型服务器 (MMS) 作为托管大量推理模型的选项。我已经根据 SageMaker BYOC MMS 指令成功构建了容器。我可以调用推理,并且模型在 SageMaker 上运行良好。

我在可用的最小实例类型 ml.t2.medium 上运行我的测试。 MMS 被描述为从 S3 下载模型,将它们加载到容器中,并根据需要将模型加载到内存中。然后在内存不足时从内存中卸载。

在我的实验中,彩信在 8-10 左右不断报告 LoadedModelCount 的 CloudWatch 指标。即使我在更大的模型集上运行推理。如果我保持调用的模型数量很少,推理调用大约需要 0.1 秒。如果我越过 LoadedModelCount,推理时间会增加到大约 2 秒。

所以我的猜测是 SageMaker MMS 正在从内存中卸载模型,并将新模型加载到内存中,基本上是不断地进行内存交换。我将登录记录到我的 MMS 模型处理程序中,以表明它会在发生这种情况时一遍又一遍地为不同模型初始化处理程序。

此外,CloudWatch 指标 diskutilization 随着更多模型调用而不断上升,我预计这意味着它将模型从 S3 加载到容器磁盘中。另一方面,其他指标(内存和加载的模型)在 8-10 个加载的模型之后趋于平稳,只有上下细微的变化。这似乎进一步支持了这个理论,即它不断地从容器磁盘交换到内存。

我找不到一种方法来查看 MMS 何时实际从内存中卸载模型,或者何时加载不同的模型。此外,我看不出它使用什么阈值来卸载模型,因为来自 SageMaker 实例的 CloudWatch Memoryutilization 指标永远不会超过 45,我猜这意味着最多使用 45% 的内存。这似乎是一个非常低的门槛,所以我希望找到一种方法来配置它,但还没有找到。

问题 1:如何观察 MMS 何时从内存中卸载模型并加载新模型?

问题 2:如何控制定义何时卸载模型的内存阈值(或 MMS 使用的任何内容)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)