SageMaker 无服务器推理现已普遍可用
探索最新的 SageMaker 推理选项
我非常兴奋能写这篇文章。 ML Inference 本身就非常有趣。将无服务器添加到其中,它变得更加有趣!当我们谈到 sServerless Inference 之前,我们不得不考虑可能使用 AWS Lambda 等服务。Lambda 等服务的问题在于它们没有提供开箱即用的托管 ML 基础设施工具。您必须自己构建、管理和维护所有容器、ML 基础设施。[0]
SageMaker Serverless Inference 将所有这些抽象出来。它使您可以专注于模型构建过程,无需像使用 Lambda 那样维护自己的容器需要做繁重的工作。无服务器推理采用其他 SageMaker 推理选项的相同核心基础。它仍然支持 AWS 深度学习图像/框架以及自带容器 (BYOC) 方法的灵活性。如果您在 SageMaker 上有现有的实时推理工作负载,您可以保留大部分相同的代码并添加包含无服务器配置的代码段。在本文中,我们将探讨一个将 Sklearn 模型部署到 SageMaker 无服务器端点的示例。[0][1][2]
注意:对于那些刚接触 AWS 的人,如果您想跟随,请确保您在以下链接中创建一个帐户。部署过程会产生成本,特别是如果您让端点保持启动并运行。本文还将假定您具有 SageMaker 和 AWS 的中级知识。[0]
目录
- 何时使用无服务器推理
- 无服务器推理支持什么?
- 无服务器推理示例
- 其他资源和结论
何时使用无服务器推理
目前 SageMaker Inference 有四个主要选项:实时推理、批量推理、异步推理和现在的无服务器推理。在上一篇文章中,我已经解释了前三个选项的用例。那么什么时候使用无服务器推理呢?[0][1][2][3]
当您有间歇性和不可预测的工作负载时,无服务器推理是一个很好的选择。理想情况下,您的工作负载应该能够像任何无服务器解决方案一样承受冷启动。使用无服务器推理的另一个主要原因是没有基础设施管理。如果您不想处理 AutoScaling 或实例管理/设置,那么无服务器推理是一个不错的选择。无服务器推理的另一个主要价值主张是节省成本。您通过调用无服务器推理来收费,而不是使用实时推理按小时计费。如果您的团队正在 SageMaker 上构建 POC,并且不希望在此过程中产生大量费用,这是一个很好的选择。[0]
无服务器推理支持什么?
在 Reinvent 2021 中发布无服务器推理预览版之后,添加了一些关键功能。 SageMaker Python SDK 支持已启用,这使得使用 Amazon SageMaker 进行无服务器推理训练和部署支持的容器/框架变得比以往任何时候都更加容易。您还可以使用用于无服务器推理的模型注册表,这将使您可以灵活地将无服务器端点添加到您的 MLOps 工作流程中。最后,每个端点的最大并发调用已增加到 200 个(预览时为 50 个)。[0][1][2]
无服务器推理示例
对于我们的无服务器推理示例,我们将使用 California Housing 数据集训练和部署 Sklearn 模型。此数据集在 SageMaker 示例数据集存储库中公开可用,我们将展示您可以在笔记本中检索它。
对于设置,我们将使用带有 Python3 数据科学内核的 SageMaker Studio。您还可以使用经典笔记本实例并使用 ml.m5.xlarge 笔记本实例和 conda_python3 内核。进入笔记本后,我们将设置 S3 存储桶和训练实例。
接下来,我们将从公共 SageMaker 样本中检索 California Housing 数据集。这是一个回归问题,我们将使用 Sklearn 框架来解决。
然后我们可以使用 Pandas 读取数据集,以确保我们已经正确创建了 DataFrame。
然后,我们将此数据集上传到 S3,SageMaker 将在其中访问训练数据并转储模型工件。
Sklearn 是 SageMaker 提供的受支持的深度学习容器之一,因此我们可以使用 SageMaker Python SDK 直接抓取图像,而无需处理任何 Docker 相关工作。[0]
在这里,我们传入一个包含我们的模型和推理函数的入口点脚本。我们不会在此示例中深入介绍脚本模式,但请查看本文以了解如何在 Amazon SageMaker 上训练 Sklearn 模型。[0][1]
如果我们快速浏览一下训练脚本,我们会发现我们正在使用随机森林模型。[0]
请注意处理输入的函数。 input_fn 决定了您可以为模型推理传入的数据格式类型。要了解有关推理处理程序的更多信息,请查看本文。[0]
现在我们可以使用我们的 Sklearn 估计器执行模型训练。
训练完成后,我们现在可以进行推理了。到目前为止,一切都与实时推理或任何其他 SageMaker 推理选项完全相同。在这里,我们可以通过 SageMaker Python SDK 添加 ServerlessConfig 并将其附加到我们的端点。[0]
这里的两个参数是 MemorySize 和 MaxConcurrency。 MemorySize 通常至少应与您的模型大小相同。您可以将内存设置为以下值:1024 MB、2048 MB、3072 MB、4096 MB、5120 MB 或 6144 MB。 MaxConcurrency 是单个端点的最大并发调用,现在已增加到 200 用于 GA。这是您必须为无服务器端点指定的仅有的两个参数,所有基础设施工作和管理都在后台进行。
现在我们可以像传统方式一样部署我们的端点并附加这个对象。
现在我们可以看到对该端点的示例推断。
其他资源和结论
有关示例的完整代码,请访问上面的链接。有关将模型注册表与无服务器推理结合使用的示例,请查看此示例。有关无服务器推理的 HuggingFace 示例,请查看此博客和示例。有关无服务器推理的官方 AWS 博客版本,请查看以下文章。[0][1][2][3]
一如既往,我希望这篇文章对您来说是一篇关于 SageMaker Inference 的好文章,请随时在评论中留下任何反馈或问题。如果您对更多与 AWS/SageMaker 相关的内容感兴趣,请查看我为您编制的此列表。[0]
如果您喜欢这篇文章,请随时在 LinkedIn 上与我联系并订阅我的 Medium 时事通讯。如果您是 Medium 新手,请使用我的会员推荐信注册。[0][1][2]
文章出处登录后可见!