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

部署模型用于推理

使用 Amazon SageMaker,您可以部署机器学习 (ML) 模型来进行预测,也称为推理。SageMaker 提供多种 ML 基础设施和模型部署选项,以帮助满足您的所有 ML 推理需求。它是一项与 MLOps 工具集成的完全托管服务,因此您可以扩展模型部署,降低推理成本,在生产中更有效地管理模型,并减轻运营负担。

构建并训练机器学习模型后,您可以使用 SageMaker Inference 开始从模型中获取预测或推理。使用 SageMaker Inference,您可以设置返回推理的端点,也可以通过模型运行批量推理。

要开始使用 SageMaker Inference,请参阅以下部分并查看推理选项,以确定哪个功能最适合您的使用案例。

您可以参阅资源部分,了解更多故障排除和参考信息、帮助您入门的博客和示例以及常见问题解答。

开始前的准备工作

以下主题假设您已构建和训练了一个或多个机器学习模型,并已准备好部署它们。您无需在 SageMaker 中训练模型,即可在 SageMaker 中部署模型并获得推理。如果您没有自己的模型,也可以使用 SageMaker 的内置算法或预训练模型

如果您是初次使用 SageMaker,并且尚未选择要部署的模型,请按照 Amazon SageMaker 入门教程中的步骤来熟悉 SageMaker 如何管理数据科学流程以及如何处理模型部署的示例。有关模型训练的更多信息,请参阅训练模型

有关更多信息、参考和其他示例,请参阅资源

模型部署步骤

对于推理端点,常规工作流包括以下内容:

  • 通过指向 Amazon S3 中存储的模型构件和容器映像,在 SageMaker Inference 中创建模型。

  • 选择推理选项。有关更多信息,请参阅 推理选项

  • 通过选择端点后所需的实例类型和实例数量,创建 SageMaker Inference 端点配置。您可以使用 Amazon SageMaker Inference Recommender 来获取有关实例类型的建议。对于无服务器推理,您只需根据模型大小提供所需的内存配置。

  • 创建 SageMaker Inference 端点。

  • 调用您的端点以收到推理作为响应。

下图显示了上述工作流。


                上文中描述的工作流示意图,显示了如何从 SageMaker 获取推理。

您可以使用 Amazon 控制台、Amazon SDK、SageMaker Python SDK、Amazon CloudFormation 或 Amazon CLI 来执行这些操作。

要使用批量转换进行批量推理,请指向您的模型构件和输入数据,然后创建批量推理作业。SageMaker 不会托管用于推理的端点,而是将您的推理输出到您选择的 Amazon S3 所在的位置。

推理选项

SageMaker 提供了多个推理选项,便于您从中选择最适合自己工作负载的选项:

  • 实时推理实时推理非常适合具有低延迟或高吞吐量要求的在线推理。根据您选择的实例类型,对可以处理持续流量的完全托管式持久性端点 (REST API) 使用实时推理。实时推理可以支持最大 6 MB 的负载大小和 60 秒的处理时间。

  • 无服务器推理:当您有间歇性或不可预测的流量模式时,无服务器推理是理想的选择。SageMaker 管理所有底层基础设施,因此无需管理实例或扩展策略。您只需为实际用量付费,而不需为空置时间付费。实时推理可以支持最大 4 MB 的负载大小和最长 60 秒的处理时间。

  • 批量转换批量转换适用于在前期有大量数据可用并且不需要持久性端点时进行离线处理。您也可以使用批量转换来预处理数据集。它可以支持大小为 GB 且处理时间为数天的大型数据集。

  • 异步推理:当您想对请求进行排队并拥有处理时间长的大型负载时,异步推断是理想的选择。异步推理可以支持高达 1 GB 的负载和长达 1 小时的长处理时间。当没有需要处理的请求时,您也可以将端点缩减到 0。

下图以流程图的形式显示了上述信息,可以帮您选择最适合您的使用案例的选项。


                此图列出了每个 SageMaker Inference 选项的优点。上文描述了所有优点。

高级端点选项

借助实时推理,您可以使用以下高级推理选项进一步优化性能和成本:

  • 如果您有多个模型使用同一个框架并且可以共享一个容器,则使用在一个端点后的一个容器中托管多个模型。此选项可通过提高端点利用率和减少部署开销来帮助您优化成本。

  • 如果您有多个模型使用不同的框架,并且各自都需要自己的容器,则使用在一个端点托管使用不同容器的多个模型。使用此选项,您可以获得多模型端点的许多好处,并且可以部署各种框架和模型。

  • 如果您想在端点后面托管带有预处理和后处理逻辑的模型,请使用串行推理管道。推理管道由 SageMaker 完全托管,由于所有容器都托管在相同的 Amazon EC2 实例上,因此延迟更低。

自带模型

要在 SageMaker 中使用现有的 Docker 容器,请参阅调整自己的 Docker 容器以与 SageMaker 配合使用

要创建新的 Docker 容器,并获得有关如何运行自己的推理代码的更高级指导,请参阅以下链接。

后续步骤

有了端点并了解常规推理工作流后,您可以使用 SageMaker Inference 中的以下功能来改进推理工作流。

监控

要通过模型精度和偏差等指标跟踪模型随时间的变化,您可以使用模型监控器。使用模型监控器,您可以设置警报,以便在模型质量出现偏差时通知您。要了解更多信息,请参阅模型监控器文档。要详细了解可用于监控模型部署和更改端点的事件的工具,请参阅监控 Amazon SageMaker。例如,您可以使用 Amazon CloudWatch 指标,通过调用错误和模型延迟等指标来监控端点的运行状况。SageMaker 端点调用指标可以为您提供有关端点性能的宝贵信息。

用于模型部署的 CI/CD

要在 SageMaker 中整理机器学习解决方案,您可以使用 SageMaker MLOps。您可以使用此功能自动执行机器学习工作流中的步骤并执行 CI/CD 实践。您可以使用 MLOps 项目模板来帮助设置和实施 SageMaker MLOps 项目。SageMaker 还支持使用您自己的第三方 Git 存储库来创建 CI/CD 系统。

对于您的 ML 管道,请使用模型注册表来管理模型版本以及模型的部署和自动化。

部署防护机制

如果您想在不影响生产的情况下更新生产环境中的模型,则可以使用部署防护机制。部署防护机制是 SageMaker Inference 中的一组模型部署选项,用于在生产环境中更新机器学习模型。使用完全托管式部署选项,您可以在生产环境中控制从当前模型切换到新模型的过程。流量转移模式可让您精细控制流量转移过程,而自动回滚等内置保护措施可帮助您尽早发现问题。要了解有关部署防护机制的更多信息,请参阅部署防护机制文档

Inferentia

如果您需要为图像或语音识别、自然语言处理 (NLP)、个性化、预测或欺诈检测等使用案例运行大规模机器学习和深度学习应用程序,则可以使用带有实时端点的 Inf1 实例。

Inf1 实例专为支持机器学习推理应用程序而构建,并采用 Amazon Inferentia 芯片。与基于 GPU 的实例相比,Inf1 实例可提供更高的吞吐量和更低的每次推理成本。

要在 Inf1 实例上部署模型,请使用 SageMaker Neo 编译模型,然后为部署选项选择 Inf1 实例。要了解更多信息,请参阅使用 SageMaker Neo 优化模型性能

优化模型性能

SageMaker 提供了用于在部署机器学习模型时管理资源和优化推理性能的功能。您可以使用 SageMaker 的内置算法和预构建模型,以及为机器学习开发的预构建 Docker 映像。要训练一次 TensorFlow、Apache MXNet、PyTorch、ONNX 和 XGBoost 模型,并对其进行优化,以部署到 ARM、Intel 和 Nvidia 处理器上,请参阅使用 SageMaker Neo 优化模型性能

自动扩缩

如果您的端点流量各不相同,则可能需要尝试自动扩缩。例如,在高峰时段,您可能需要更多实例来处理请求,但在低流量时段,您可能需要减少计算资源的使用。要动态调整预配置的实例数以响应工作负载更改,请参阅自动扩缩 Amazon SageMaker 模型

如果您的流量模式不可预测或不想设置扩展策略,也可以对 SageMaker 为您管理自动扩缩的端点使用无服务器推理。在低流量时段,SageMaker 会缩减您的端点,如果流量增加,SageMaker 就会纵向扩展您的端点。有关更多信息,请参阅 无服务器推理 文档。