“使用亚马逊SageMaker轻松打包和部署经典ML和LLMs,第2部分:SageMaker Studio中的交互式用户体验”
“亚马逊SageMaker Studio中的交互式用户体验:轻松打包和部署经典ML和LLMs,第2部分”
Amazon SageMaker 是一个完全托管的服务,使开发人员和数据科学家能够快速轻松地构建、训练和部署规模化的机器学习(ML)模型。SageMaker 可通过 API 调用直接将模型部署到生产环境中。模型被打包在容器中以实现强大且可伸缩的部署。
SageMaker 提供了多种部署模型的选项。这些选项在您拥有的控制权和所需的工作量上有所不同。AWS SDK 提供了最多的控制和灵活性。它是一个可以在 Java、C++、Go、JavaScript、Node.js、PHP、Ruby 和 Python 中使用的低级 API。SageMaker Python SDK 是一个高级 Python API,它抽象了部分步骤和配置,使模型部署更加容易。AWS 命令行界面 (AWS CLI) 是另一个高级工具,可以让您在不编写自己的代码的情况下与 SageMaker 进行交互,部署模型。
我们正在推出两种新的选项,进一步简化使用 SageMaker 打包和部署模型的过程。一种方法是进行编程部署。为此,我们对 Python SDK 进行了改进。有关更多信息,请参阅《用 Amazon SageMaker 轻松打包和部署经典 ML 和 LLM,第 1 部分:PySDK 改进》。第二种方法是进行交互式部署。为此,我们在 Amazon SageMaker Studio 中推出了全新的交互式体验。它将帮助您快速部署自己训练的模型或基础模型(FMs),并在最低成本下实现可预测的性能。继续阅读以了解新的交互式体验是什么样子。
SageMaker Studio 中的全新交互式体验
本文假设您已经训练了一个或多个 ML 模型,或者正在使用 SageMaker JumpStart 模型库中的 FMs,并且准备好部署它们。使用 SageMaker 训练模型不是使用 SageMaker 部署模型的先决条件。我们也假设您对 SageMaker Studio 有一定的了解。
我们将向您展示以下操作:
- 创建 SageMaker 模型
- 部署 SageMaker 模型
- 部署 SageMaker JumpStart 大型语言模型 (LLM)
- 在一个端点后面部署多个模型
- 测试模型推理
- 解决错误
创建 SageMaker 模型
设置用于推理的 SageMaker 端点的第一步是创建一个 SageMaker 模型对象。这个模型对象由两部分组成:模型的容器和用于推理的训练模型。新的交互式用户界面体验使 SageMaker 模型创建过程简单直观。如果您是 SageMaker Studio 的新用户,请参阅《开发人员指南》开始使用。
- 在 SageMaker Studio 界面中,选择导航窗格中的模型。
- 在可部署模型选项卡上,选择创建。
现在,您只需要提供模型容器的详细信息、模型数据的位置以及 AWS 身份和访问管理 (IAM) 角色,SageMaker 将代表您进行操作。
- 对于模型容器,您可以使用Amazon SageMaker提供的预构建Docker镜像之一,用于流行框架和库。如果选择使用此选项,请从支持的类型列表中选择一个容器框架、相应的框架版本和硬件类型。
或者,您可以指定存储在Amazon弹性容器注册表(Amazon ECR)上的自己的容器路径。
- 接下来,上传您的模型工件。SageMaker Studio提供两种上传模型工件的方式:
- 首先,可以在Amazon简单存储服务(Amazon S3)存储桶中或本地路径中指定
model.tar.gz
。此model.tar.gz
必须符合您正在使用的容器的格式。 - 或者,它支持为PyTorch和XGBoost模型直接上传原始工件。对于这两个框架,需要以容器所需的格式提供模型工件。例如,对于PyTorch来说,这将是一个
model.pth
。请注意,您的模型工件还包括用于预处理和后处理的推理脚本。如果不提供推理脚本,则将实现所选择容器的默认推理处理程序。
- 首先,可以在Amazon简单存储服务(Amazon S3)存储桶中或本地路径中指定
- 在选择容器和工件后,指定一个身份和访问管理(IAM)角色。
- 选择创建可部署模型以创建SageMaker模型。
上述步骤演示了最简单的工作流程。您可以进一步自定义模型创建过程。例如,可以指定虚拟私有云(VPC)详细信息,并启用网络隔离,以确保容器无法对公共互联网进行外部调用。您可以展开高级选项部分以查看更多选项。
您可以通过运行SageMaker推理推荐器基准测试作业,了解最佳性价比的硬件以部署您的端点。为了进一步自定义SageMaker模型,您可以在容器级别传递任何可调整的环境变量。推理推荐器也将接受一系列这些变量,以找到适合您的模型服务和容器的最佳配置。
创建模型后,您可以在可部署模型选项卡上查看它。如果在模型创建过程中发现任何问题,您将在监控状态列中看到状态。选择模型的名称以查看详细信息。
部署SageMaker模型
在最基本的情况下,您只需要从“模型”页面或SageMaker JumpStart页面中选择一个可部署模型,选择一个实例类型,设置初始实例数量,然后部署该模型。让我们看看在SageMaker Studio中为自己的SageMaker模型执行此过程的样子。我们将在本文后面讨论如何使用LLMs。
- 在“模型”页面上,选择“可部署模型”选项卡。
- 选择要部署的模型,然后选择“部署”。
- 接下来的步骤是选择SageMaker将放置在推理端点后面的实例类型。
您希望选择性能最佳且成本最低的实例。SageMaker通过显示推荐项来简化您做出这个决策的过程。如果您在SageMaker模型创建步骤中使用SageMaker推理推荐工具来对您的模型进行基准测试,您将在下拉菜单中看到来自该基准测试的推荐项。
否则,您将在菜单中看到一系列潜在的实例。在这种情况下,SageMaker使用自己的启发式算法来填充该列表。
- 指定初始实例数量,然后选择“部署”。
SageMaker将创建一个端点配置并在该端点后部署您的模型。模型部署完成后,您将看到端点和模型状态为“已启动”。请注意,模型可能在端点之前就绪。
这也是SageMaker Studio中管理端点的位置。您可以通过在导航窗格中选择“部署”下的“端点”来导航到端点详细信息页面。使用“添加模型”和“删除”按钮可以在不需要重新创建端点的情况下更改端点后面的模型。在“测试推理”选项卡上,您可以通过从SageMaker Studio界面直接向其中一个正在运行的模型发送测试请求来测试您的模型。您也可以在此页面上的“自动缩放”选项卡上编辑自动缩放策略。有关添加、删除和测试模型的详细信息将在下面的章节中介绍。您可以在“设置”选项卡上查看该端点的网络、安全性和计算信息。
自定义部署
前面的示例展示了从您的一侧到最低的配置要求部署单个模型是多么简单。SageMaker为您填充了大多数字段,但您可以自定义配置。例如,它会自动为端点生成一个名称。但是,您可以根据自己的喜好命名端点,或者在“端点名称”下拉菜单中使用现有的端点。对于现有端点,您将只看到正在服务的端点。您可以使用“高级选项”部分来指定IAM角色、VPC详细信息和标签。
部署SageMaker JumpStart LLM
要部署SageMaker JumpStart LLM,请完成以下步骤:
- 导航至SageMaker Studio的JumpStart页面。
- 选择一个合作伙伴名称,浏览该合作伙伴提供的可用模型列表,或使用搜索功能,如果您知道模型的名称,可以直接跳转到模型页面。
- 选择您想要部署的模型。
- 选择部署。
请注意,使用LLM(Language Model)受到最终用户许可协议(EULA)和提供者的条款和条件的约束。
- 接受许可和条款。
- 指定实例类型。
JumpStart模型库中的许多模型都提供了优化价格性能的默认实例类型以供部署使用。对于没有默认实例类型的模型,您将获得一个在实例类型下拉菜单中列出的支持实例类型的列表。对于经过基准测试的模型,如果您希望针对成本或性能优化部署以满足特定用例,您可以选择备选配置以查看更多经过不同总标记、输入长度和最大并发数组合基准测试的选项。您还可以从其他支持的实例中进行选择。
- 如果使用备选配置,请选择您的实例并选择选择。
- 选择部署以部署模型。
您将看到端点和模型状态更改为已服务。在这种情况下,您还可以根据需要自定义部署。
在一个端点后部署多个模型
SageMaker允许您在单个端点后部署多个模型。与仅在端点后面使用单个模型的端点相比,这减少了托管成本,并提高了端点利用率。它还减少了部署开销,因为SageMaker负责将模型加载到内存中,并根据您的端点流量模式进行扩展。SageMaker Studio现在使这一过程变得简单易行。
- 首先选择要部署的模型,然后选择部署。
- 然后,您可以创建一个具有多个模型的端点,并定义您要分配的计算资源量。
在这种情况下,我们使用了一个ml.p4d.24xlarge实例作为端点,并为我们的两个不同模型分配了必要的资源数量。请注意,您的端点受到此功能支持的实例类型的限制。
- 如果您从可部署模型选项卡或SageMaker JumpStart的LLM(语言模型)中开始流程,并且想要添加一个模型(无论是JumpStart LLM还是可部署模型),可以选择在启动部署流程后,选择添加模型,以创建一个端点面向多个模型。
- 在这里,您可以选择SageMaker JumpStart模型库中的另一个FM或使用可部署模型选项,该选项是指您已保存为SageMaker模型对象的模型。
- 选择您的模型设置:
- 如果该模型使用CPU实例,请选择CPU的数量和模型的最小副本数。
- 如果该模型使用GPU实例,请选择加速器的数量和模型的最小副本数。
- 选择添加模型。
- 选择部署以将这些模型部署到SageMaker端点。
当端点处于可用并准备好的状态时(服务中),您将在单个端点后部署两个模型。
测试模型推理
SageMaker Studio现在让测试模型推理请求变得简单明了。您可以直接使用支持的内容类型(如应用程序或JSON、文本或CSV)发送有效载荷数据,或者使用Python SDK样本代码从程序化环境(如笔记本或本地集成开发环境)发起调用请求。
请注意,Python SDK示例代码选项仅适用于SageMaker JumpStart模型,并且专为特定模型用例的输入/输出数据转换进行了调整。
解决错误
为了帮助解决和深入了解模型部署的问题,资源状态标签上有工具提示,显示相应的错误和原因消息。端点详细信息页面还提供了访问Amazon CloudWatch日志组的链接。对于单个模型的端点,CloudWatch容器日志的链接方便地位于端点详细信息的摘要部分。对于具有多个模型的端点,CloudWatch日志的链接位于模型表视图的每一行上。以下是一些常见的故障排除错误场景:
-
模型ping健康检查失败 – 模型部署可能失败,因为服务容器未通过模型ping健康检查。要调试此问题,请参考CloudWatch日志组发布的以下容器日志:
/aws/sagemaker/Endpoints/[EndpointName] /aws/sagemaker/InferenceComponents/[InferenceComponentName]
-
不一致的模型和端点配置导致部署失败 – 如果部署失败并出现以下错误消息之一,则表示要部署的选择模型使用了不同的IAM角色、VPC配置或网络隔离配置。解决方法是在部署流程中更新模型详细信息,以使用相同的IAM角色、VPC配置和网络隔离配置。如果要将模型添加到现有端点,可以重新创建模型对象以匹配目标端点的配置。
Model and endpoint config have different execution roles. Please ensure the execution roles are consistent.Model and endpoint config have different VPC configurations. Please ensure the VPC configurations are consistent.Model and endpoint config have different network isolation configurations. Please ensure the network isolation configurations are consistent.
-
现有端点基础设施上无法部署更多模型的容量不足 – 如果部署失败并显示以下错误消息,则表示当前端点基础设施的计算或内存硬件资源不足以部署该模型。解决方法是增加端点上的最大实例计数,或删除在端点上部署的任何现有模型,为新的模型部署腾出空间。
There is not enough hardware resources on the instances for this endpoint to create a copy of the inference component. Please update resource requirements for this inference component, remove existing inference components, or increase the number of instances for this endpoint.
-
不支持多模型端点部署的实例类型 – 如果部署失败并显示以下错误消息,则表示所选的实例类型当前不支持多模型端点部署。解决方法是将实例类型更改为支持此功能的实例,并重新尝试部署。
The instance type is not supported for multiple models endpoint. Please choose a different instance type.
对于其他模型部署问题,请参考支持的功能。
清理
清理也很简单。您可以在SageMaker控制台上选择特定的模型,从您现有的SageMaker端点中删除一个或多个模型。要删除整个端点,请导航至终端节点页,选择所需的端点,选择删除,并接受免责声明以继续删除。
结论
SageMaker Studio中增强的交互体验使数据科学家可以专注于模型构建并将其工件带入SageMaker,同时将部署的复杂性抽象出来。对于那些更喜欢基于代码的方法,请查看具有ModelBuilder类的低代码等效项。
要了解更多信息,请访问SageMaker ModelBuilder
Python界面的文档以及SageMaker Studio中的引导式部署工作流程。SageMaker SDK和SageMaker Studio不收取额外费用,您只需支付所使用的基础资源费用。有关如何使用SageMaker部署模型的更多信息,请参阅部署用于推理的模型。
特别鸣谢Sirisha Upadhyayala、Melanie Li、Dhawal Patel、Sam Edwards和Kumara Swami Borra。