多模型端点 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

多模型端点

多模型端点提供了经济高效的可扩展解决方案,可用于部署数量非常多的模型。它们使用相同的资源实例集和共享的服务容器来托管您的所有模型。与使用单模型端点相比,这可以提高端点利用率,从而降低托管成本。它还可以减少部署开销,因为 Amazon 可以 SageMaker 管理在内存中加载模型,并根据终端节点的流量模式对其进行扩展。

下图显示多模型端点与单模型端点相比的工作原理。

该图显示了多模型与单模型端点如何托管模型。

多模型端点非常适合在共享服务容器上托管使用相同机器学习框架的大量模型。如果您的模型中包括经常访问和不经常访问的模型,则多模型端点可以在使用更少资源并节约更高成本的同时高效地为对应流量提供服务。您的应用程序应容忍在调用不常使用的模型时偶尔出现的、与冷启动相关的延迟损失。

多模型端点支持同时托管CPU和GPU支持的模型。通过使用GPU支持的模型,您可以通过增加终端节点及其底层加速计算实例的使用率来降低模型部署成本。

多模型端点还可在模型之间实现内存资源的时间共享。当模型的大小和调用延迟非常相似时,这种方法效果最佳。在这种情况下,多模型端点可以有效地在所有模型中使用实例。如果您的模型具有明显更高的每秒交易量 (TPS) 或延迟要求,我们建议将其托管在专用终端节点上。

您可以使用具有以下特征的多模型端点:

您可以使用 Amazon SDK for Python (Boto) 或 SageMaker 控制台创建多模型终端节点。对于CPU支持的多模型终端节点,您可以通过集成多模型服务器库来创建带有自定义容器的终端节点。

多模型端点的工作原理

SageMaker 管理容器内存中多模型端点上托管的模型的生命周期。创建终端节点时,无需将所有模型从 Amazon S3 存储桶下载到容器,而是在调用它们时 SageMaker 动态加载和缓存它们。当 SageMaker收到特定模型的调用请求时,它会执行以下操作:

  1. 将请求路由到端点后面的实例。

  2. 将模型从 S3 存储桶下载到该实例的存储卷中。

  3. 将模型加载到该加速计算实例上的容器内存(CPUCPU或者GPU,取决于您是否拥有或GPU支持的实例)。如果模型已经加载到容器的内存中,则调用速度会更快,因为 SageMaker 不需要下载和加载它。

SageMaker 继续将模型请求路由到已加载模型的实例。但是,如果模型收到许多调用请求,并且多模型终端节点还有其他实例,则会将一些请求 SageMaker 路由到另一个实例以容纳流量。如果尚未在第二个实例上加载模型,则模型将下载到该实例的存储卷中,并加载到容器的内存中。

当一个实例的内存利用率很高并且 SageMaker 需要将另一个模型加载到内存中时,它会从该实例的容器中卸载未使用的模型,以确保有足够的内存来加载模型。卸载的模型将保留在实例的存储卷上,并且稍后可加载到容器的内存中,而无需再次从 S3 存储桶进行下载。如果实例的存储卷达到其容量,则会从存储卷中 SageMaker 删除所有未使用的模型。

要删除模型,请停止发送请求并将其从 S3 存储桶中删除。 SageMaker 在服务容器中提供多模型端点功能。在多模型端点中添加和删除模型不需要更新端点本身。要添加一个模型,请将该模型上传到 S3 存储桶并调用它。无需更改代码即可使用它。

注意

更新多模型端点时,由于多模型端点中的智能路由会适应您的流量模式,因此端点上的初始调用请求可能会遇到更高的延迟。但在它了解您的流量模式后,您就会体验到最常用模型的延迟较低。由于模型是动态加载到实例的,因此不常使用的模型可能会发生一定的冷启动延迟。

用于多模型端点的示例笔记本

要了解有关如何使用多模型端点的更多信息,您可以参阅以下示例笔记本:

有关如何创建和访问可用于运行前面示例的 Jupyter 笔记本实例的说明 SageMaker,请参阅。Amazon SageMaker 笔记本实例创建并打开笔记本实例后,选择 “SageMaker 示例” 选项卡以查看所有 SageMaker 示例的列表。多型号终端笔记本电脑位于该ADVANCEDFUNCTIONALITY部分。要打开笔记本,请选择其使用选项卡,然后选择创建副本

有关多模型端点使用案例的更多信息,请参阅以下博客和资源: