开始前的准备工作
以下主题假设您已构建和训练了一个或多个机器学习模型,并已准备好部署它们。您无需在 SageMaker 中训练模型,即可在 SageMaker 中部署模型并获得推理。如果您没有自己的模型,也可以使用 SageMaker 的
内置算法或预训练模型
。
如果您是初次使用 SageMaker,并且尚未选择要部署的模型,请按照
Amazon SageMaker 入门
教程中的步骤来熟悉 SageMaker 如何管理数据科学流程以及如何处理模型部署的示例。有关模型训练的更多信息,请参阅
训练模型
。
有关更多信息、参考和其他示例,请参阅
资源
。
模型部署步骤
对于推理端点,常规工作流包括以下内容:
-
通过指向 Amazon S3 中存储的模型构件和容器映像,在 SageMaker Inference 中创建模型。
-
选择推理选项。有关更多信息,请参阅
推理选项
。
-
通过选择端点后所需的实例类型和实例数量,创建 SageMaker Inference 端点配置。您可以使用
Amazon SageMaker Inference Recommender
来获取有关实例类型的建议。对于无服务器推理,您只需根据模型大小提供所需的内存配置。
-
创建 SageMaker Inference 端点。
-
调用您的端点以收到推理作为响应。
下图显示了上述工作流。
您可以使用 AWS 控制台、AWS SDK、SageMaker Python SDK、AWS CloudFormation 或 AWS CLI 来执行这些操作。
要使用批量转换进行批量推理,请指向您的模型构件和输入数据,然后创建批量推理作业。SageMaker 不会托管用于推理的端点,而是将您的推理输出到您选择的 Amazon S3 所在的位置。
SageMaker 提供了多个推理选项,便于您从中选择最适合自己工作负载的选项:
实时推理
:
实时推理
非常适合具有低延迟或高吞吐量要求的在线推理。根据您选择的实例类型,对可以处理持续流量的完全托管式持久性端点 (REST API) 使用实时推理。实时推理可以支持最大 6 MB 的负载大小和 60 秒的处理时间。
无服务器推理
:当您有间歇性或不可预测的流量模式时,
无服务器推理
是理想的选择。SageMaker 管理所有底层基础设施,因此无需管理实例或扩展策略。您只需为实际用量付费,而不需为空置时间付费。实时推理可以支持最大 4 MB 的负载大小和最长 60 秒的处理时间。
批量转换
:
批量转换
适用于在前期有大量数据可用并且不需要持久性端点时进行离线处理。您也可以使用批量转换来预处理数据集。它可以支持大小为 GB 且处理时间为数天的大型数据集。
异步推理
:当您想对请求进行排队并拥有处理时间长的大型负载时,
异步推断
是理想的选择。异步推理可以支持高达 1 GB 的负载和长达 1 小时的长处理时间。当没有需要处理的请求时,您也可以将端点缩减到 0。
下图以流程图的形式显示了上述信息,可以帮您选择最适合您的使用案例的选项。
如果您有多个模型使用同一个框架并且可以共享一个容器,则使用
在一个端点后的一个容器中托管多个模型
。此选项可通过提高端点利用率和减少部署开销来帮助您优化成本。
如果您有多个模型使用不同的框架,并且各自都需要自己的容器,则使用
在一个端点托管使用不同容器的多个模型
。使用此选项,您可以获得多模型端点的许多好处,并且可以部署各种框架和模型。
如果您想在端点后面托管带有预处理和后处理逻辑的模型,请使用
串行推理管道
。推理管道由 SageMaker 完全托管,由于所有容器都托管在相同的 Amazon EC2 实例上,因此延迟更低。
要在 SageMaker 中使用现有的 Docker 容器,请参阅
调整自己的 Docker 容器以与 SageMaker 配合使用
。
要创建新的 Docker 容器,并获得有关如何运行自己的推理代码的更高级指导,请参阅以下链接。
用于模型部署的 CI/CD
要在 SageMaker 中整理机器学习解决方案,您可以使用
SageMaker MLOps
。您可以使用此功能自动执行机器学习工作流中的步骤并执行 CI/CD 实践。您可以使用
MLOps 项目模板
来帮助设置和实施 SageMaker MLOps 项目。SageMaker 还支持使用您自己的
第三方 Git 存储库
来创建 CI/CD 系统。
对于您的 ML 管道,请使用
模型注册表
来管理模型版本以及模型的部署和自动化。
部署防护机制
如果您想在不影响生产的情况下更新生产环境中的模型,则可以使用部署防护机制。部署防护机制是 SageMaker Inference 中的一组模型部署选项,用于在生产环境中更新机器学习模型。使用完全托管式部署选项,您可以在生产环境中控制从当前模型切换到新模型的过程。流量转移模式可让您精细控制流量转移过程,而自动回滚等内置保护措施可帮助您尽早发现问题。要了解有关部署防护机制的更多信息,请参阅
部署防护机制文档
。
Inferentia
如果您需要为图像或语音识别、自然语言处理 (NLP)、个性化、预测或欺诈检测等使用案例运行大规模机器学习和深度学习应用程序,则可以使用带有实时端点的
Inf1
实例。
Inf1
实例专为支持机器学习推理应用程序而构建,并采用 AWS Inferentia 芯片。与基于 GPU 的实例相比,
Inf1
实例可提供更高的吞吐量和更低的每次推理成本。
要在
Inf1
实例上部署模型,请使用 SageMaker Neo 编译模型,然后为部署选项选择
Inf1
实例。要了解更多信息,请参阅
使用 SageMaker Neo 优化模型性能
。
优化模型性能
SageMaker 提供了用于在部署机器学习模型时管理资源和优化推理性能的功能。您可以使用 SageMaker 的
内置算法和预构建模型
,以及为机器学习开发的
预构建 Docker 映像
。要训练一次 TensorFlow、Apache MXNet、PyTorch、ONNX 和 XGBoost 模型,并对其进行优化,以部署到 ARM、Intel 和 Nvidia 处理器上,请参阅
使用 SageMaker Neo 优化模型性能
。