使用 Amazon SageMaker Elastic Inference (EI) - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon SageMaker Elastic Inference (EI)

此功能在中国区域中不可用。

使用 Amazon Elastic Inference (EI),您可以对部署作为Amazon SageMaker 托管模型,但只有将 GPU 实例用于终端节点的一小部分成本。通过 EI,您可以付出使用完整 GPU 实例的一小部分成本,将推理加速添加到托管的终端节点。除了 CPU 实例类型之外,将可用大小之一的 EI 加速器添加到可部署模型中,然后将该模型作为生产变体添加到您用于部署托管终端节点的终端节点配置中。您也可以将 EI 加速器添加到 SageMaker笔记本实例,以便您在构建模型时测试和评估推理性能。

启用 EI 的 TensorFlow、Apache MXNet 和 PyTorch 版本中支持 Elastic Inference。要使用任何其他深度学习框架,请使用 ONNX 导出您的模型,然后将模型导入到 MXNet。然后,您可以将带有 EI 的模型用作 MXNet 模型。有关将 ONNX 模型导入 MXNet 中的信息,请参阅将 ONNX 模型导入 MXNet 中

EI 的工作原理

Amazon Elastic Inference 加速器是网络附加设备,与终端节点中的 SageMaker 实例结合使用来加速推理调用。Elastic Inference 允许您将部分 GPU 附加到任何 SageMaker 实例,从而加速推理。您可以选择客户端实例来运行您的应用程序,并附加一个 Elastic Inference 加速器来使用适当数量的 GPU 加速,从而满足推理需求。在未充分利用 GPU 实例进行推理时,Elastic Inference 将帮助您降低成本。我们建议您使用不同的 CPU 实例和加速器大小来对模型试用 Elastic Inference。

EI 加速器有以下类型可用。您可以使用任意 EI 加速器类型配置终端节点或笔记本实例。

在该表中,列出了单精度浮点 (F32) 和半精度浮点 (F16) 操作的吞吐量,以万亿次浮点运算 (TFLOPS) 为单位。此外还以 GB 为单位列出了内存。

加速器类型 F32 吞吐量 (TFLOPS) F16 吞吐量 (TFLOPS) 内存 (GB)
ml.eia2.medium 1 8 2
ml.eia2.large 2 16 4
ml.eia2.xlarge 4 32 8
ml.eia1.medium 1 8 1
ml.eia1.large 2 16 2
ml.eia1.xlarge 4 32 4

选择 EI 加速器类型

在为托管模型选择加速器类型时,请考虑以下因素:

  • 模型、输入张量和批量大小影响您需要的加速器内存数量。在开始时,使用提供的内存至少与您训练模型的文件大小相当的加速器类型。一个因素是模型在运行时使用的内存可能比文件大小大得多。

  • 对 CPU 计算资源、主系统内存以及基于 GPU 的加速和加速器内存的需求因不同类型的深度学习模型而异。应用程序的延迟和吞吐量需求也会确定您需要的计算和加速的数量。全面测试不同实例类型和 EI 加速器大小的配置,确保选择最适合您应用程序性能需求的配置。

有关如何选择 EI 加速器的更多信息,请参阅:

在 SageMaker 笔记本实例中使用 EI

通常情况下,您首先在 SageMaker 笔记本中生成和测试机器学习模型,然后部署模型用于生产。在创建笔记本实例时,您可以将 EI 附加到笔记本实例。您可以通过使用 TensorFlow、MXNet 和 PyTorch 评估程序及模型支持的本地模式,设置本地托管在笔记本实例上的终端节点,方法是Amazon SageMaker Python 开发工具包来测试推理性能。笔记本实例上目前不支持启用 Elastic Inference 的 PyTorch。有关如何将 EI 连接到笔记本实例并设置本地终端节点用于推理的说明,请参阅将 EI 附加到笔记本实例。此外,还有启用了弹性推理的 SageMaker 笔记本 Jupyter 内核,用于 TensorFlow 和 Apache MXNet 启用了 Elastic Inference 的版本。有关使用 SageMaker 笔记本实例的信息,请参阅使用 Amazon SageMaker 笔记本实例

在托管终端节点上使用 EI

在准备好部署模型用于生产以提供推理时,您将创建 SageMaker 托管终端节点。您可以将 EI 附加到其中托管了终端节点的实例,用于在提供推理时提升其性能。有关如何将 EI 附加到托管终端节点实例的说明,请参阅在 Amazon SageMaker 托管终端节点上使用 EI

支持 EI 的框架

Amazon Elastic Inference 旨在与AmazonTensorFlow、Apache MXNet 或 PyTorch 机器学习框架的增强版本。这些框架的增强版本在您使用 Amazon SageMaker Python 开发工具包时自动构建到容器中,或者您可以将其作为二进制文件下载并导入到自己的 Docker 容器中。

您可以将启用了 EI 的 TensorFlow 二进制文件从公有amazonei-tensorflowAmazon S3 存储桶添加到 TensorFlow 服务容器。有关构建容器(使用启用了 EI 的 TensorFlow 版本)的更多信息,请参阅 SageMaker 中具有 TensorFlow 的 Amazon Elastic Inference

您可以将启用了 EI 的 MXNet 二进制文件从公有亚马逊-阿帕切姆网Amazon S3 存储桶添加到 MXNet 服务容器。有关构建容器(使用启用了 EI 的 MXNet 版本)的更多信息,请参阅 SageMaker 中具有 MXNet 的 Amazon Elastic Inference

您可以将启用了 EI 的 PyTorch 二进制文件从公有amazonei-pytorchAmazon S3 存储桶添加到 PyTorch 服务容器。有关构建容器(使用启用了 EI 的 PyTorch 版本)的更多信息,请参阅 SageMaker 中具有 PyTorch 的 Amazon Elastic Inference

要在托管终端节点中使用 Elastic Inference,您可以根据需要选择以下任一框架。

如果您需要创建一个自定义容器来部署复杂的模型,并且此模型需要扩展到 SageMaker 预构建容器不支持的框架,请使用低级别Amazon适用于 Python 的开发工具包 (Boto 3)

将 EI 与 SageMaker 内置算法结合使用

目前,图像分类算法对象检测算法内置算法支持 EI。有关将图像分类算法与 EI 结合使用的示例,请参阅端到端多类别图像分类示例

EI 示例笔记本

以下示例笔记本提供了在 SageMaker 中使用 EI 的示例: