使用 Amazon SageMaker 轻松打包和部署经典机器学习和大型语言模型,第二部分:在 Sa
轻松使用 Amazon SageMaker 打包和部署经典机器学习与大语言模型
关键要点
本篇文章介绍如何在 Amazon SageMaker Studio 中创建交互式用户体验,以快速打包和部署经典机器学习ML模型和大语言模型LLMs。特别强调了新的交互式体验,这使得用户可以更方便地进行模型部署,以实现最佳性能和最低成本。
Amazon SageMaker 是一个完全托管的服务,使开发者和数据科学家能够快速且轻松地在大规模上构建、训练和部署机器学习模型。SageMaker 通过 API 调用使模型部署变得简单可靠,所有模型都会被打包到容器中,确保稳定且可扩展的部署。
SageMaker 提供多种部署选项。这些选项的控制程度和需要的工作量各不相同。 AWS SDK 提供最全面的控制和灵活性,是适合 Java、C、Go、JavaScript、Nodejs、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 中推出了一种新的交互式体验,帮助您快速部署自己的训练模型或来自 Amazon SageMaker JumpStart 的基础模型,并实现优化配置和可预见的性能,从而达到最低成本。继续阅读以查看新的交互式体验有哪些功能。
SageMaker Studio 中的新交互式体验
本文假设您已经训练了一个或多个 ML 模型,或者正在使用来自 SageMaker JumpStart 模型中心的基础模型,并准备好进行部署。使用 SageMaker 训练模型并不是使用 SageMaker 部署模型的先决条件。同时,假设您对 SageMaker Studio 有一定的了解。
我们将指导您完成以下步骤:
创建 SageMaker 模型部署 SageMaker 模型部署 SageMaker JumpStart 大语言模型LLM在一个端点后部署多个模型测试模型推理排查错误创建 SageMaker 模型
设置用于推理的 SageMaker 端点的第一步是创建一个 SageMaker 模型对象。这个模型对象由两个部分组成:模型容器和将用于推理的训练模型。新的交互式用户界面让 SageMaker 模型创建过程变得直观。如果您是 SageMaker Studio 的新手,请参考 开发者指南 以获取更多信息。
在 SageMaker Studio 界面中,选择导航面板中的 Models。在 Deployable models 选项卡上,选择 Create。接下来,您只需提供模型容器的详细信息、模型数据的位置和一个 AWS 身份与访问管理 (IAM) 角色,以供 SageMaker 代表您采用。
对于模型容器,您可以使用 SageMaker 提供的热门框架和库的一种预构建 Docker 镜像。如果选择此选项,请从支持的类型列表中选择一个容器框架、相应的框架版本和硬件类型。或者,您也可以指定存储在 Amazon Elastic Container RegistryAmazon ECR中的自定义容器路径。
接下来,上传您的模型艺术品。SageMaker Studio 提供了两种上传模型艺术品的方式:首先,您可以在 Amazon Simple Storage Service (Amazon S3) 桶中或在本地路径中指定一个 modeltargz 文件。该 modeltargz 必须符合您所使用容器的结构格式。或者,它支持 PyTorch 和 XGBoost 模型的原始艺术品上传。对于这两个框架,提供符合容器要求的模型艺术品格式。例如,对于 PyTorch,这将是 modelpth。请注意,您的模型艺术品还包括预处理和后处理的推理脚本。如果不提供推理脚本,将使用您选择的容器的默认推理处理程序。在选择完容器和艺术品后,指定一个 IAM 角色。选择 Create deployable model 以创建一个 SageMaker 模型。上述步骤展示了最简单的工作流。您可以进一步自定义模型创建过程。例如,您可以指定 VPC 细节并启用网络隔离,以确保容器无法进行公共互联网的外部调用。您可以展开 Advanced options 部分以查看更多选项。
通过运行 SageMaker Inference Recommender 基准作业,可以获得有关最佳性价比硬件的指导,以部署您的端点。要进一步自定义 SageMaker 模型,您可以在容器级别传递任何可调的环境变量。推理推荐系统还将考虑许多这些变量,以找到最佳配置用于您的模型服务和容器。
创建模型后,您可以在 Deployable models 选项卡中查看它。如果在模型创建时发现任何问题,您将在 Monitor status 列中看到相关状态。选择模型的名称以查看详细信息。
部署 SageMaker 模型
在最基本的情况下,您所需的只是从 Models 页面选择一个可部署模型或从 SageMaker JumpStart 页面选择一个 LLM,选择一个实例类型,设置初始实例数量,然后部署模型。让我们看看在 SageMaker Studio 中如何为您自己的 SageMaker 模型执行此过程。我们将在后面的部分中讨论 LLM 的使用。
在 Models 页面中,选择 Deployable models 选项卡。选择要部署的模型,然后选择 Deploy。
下一步是选择 SageMaker 将放置在推理端点后的实例类型。
您希望选择一台在最低成本下提供最佳性能的实例。SageMaker 通过提供推荐,使您轻松做出此决策。如果您在 SageMaker 模型创建步骤中使用 SageMaker Inference Recommender 对模型进行了基准测试,可以在下拉菜单中看到该基准测试给出的建议。
否则,菜单中会显示一系列潜在的实例。SageMaker 使用自己的启发式方法填充该列表。
指定初始实例数量,然后选择 Deploy。SageMaker 将创建一个端点配置并在该端点后部署您的模型。模型部署后,您将看到端点和模型状态为 In service。请注意,端点可能在模型之前就准备好。
在 SageMaker Studio 中,这也是您管理端点的地方。您可以通过在导航面板中选择 Endpoints 查阅端点详细信息。使用 Add model 和 Delete 按钮,可以在不必重新创建端点的情况下更改端点后的模型。Test inference 选项卡允许您通过从 SageMaker Studio 界面直接向某个在服务中的模型发送测试请求来测试模型。您还可以在此页面上的 Autoscaling 选项卡中编辑自动缩放策略。关于添加、删除和测试模型的更多细节将在后面的部分中讨论。您可以在 Settings 选项卡上查看此端点的网络、安全性和计算信息。
自定义部署
前面的示例展示了如何以最少的配置快速部署单个模型。SageMaker 会为您填充大多数字段,但您可以自定义配置。例如,它会自动为端点生成名称。但您可以根据您的偏好命名该端点,或使用 Endpoint name 下拉菜单中现有的端点。您可以使用 Advanced options 部分指定 IAM 角色、VPC 细节和标签。
部署 SageMaker JumpStart LLM
要部署 SageMaker JumpStart LLM,请完成以下步骤:
导航到 SageMaker Studio 的 JumpStart 页面。选择一个合作伙伴名称,以浏览来自该合作伙伴的可用模型列表,或者如果您知道模型名称,则使用搜索功能转到模型页面。选择您想要部署的模型。选择 Deploy。
请注意,对 LLM 的使用需遵守最终用户许可协议EULA及提供者的条款和条件。
接受许可证和条款。指定实例类型。很多 JumpStart 模型中心的模型都配有价格性能优化的默认实例类型。如果没有提供此默认选项,您将在 Instance type 下拉菜单中获得支持的实例类型列表。对于基准测试过的模型,如果您希望根据具体用例进行成本或性能专门优化,可以选择 Alternate configurations 来查看在不同的总 token、输入长度和最大并发组合下经过基准测试的更多选项。您也可以从其他受支持的实例中进行选择。
如果使用替代配置,请选择您的实例并选择 Select。选择 Deploy 以部署模型。您将看到端点和模型状态变更为 In service。在这种情况下,您还有选项可以自定义部署以符合您的要求。
在一个端点后部署多个模型
SageMaker 使您能够在单个端点后部署多个模型。与仅在一个模型后的端点相比,这可以通过提高端点利用率来减少主机成本。它还减少了部署开销,因为 SageMaker 会管理内存中的模型加载及根据流量模式扩展它们。SageMaker Studio 现在可以轻松完成此操作。
开始时选择要部署的模型,然后选择 Deploy。然后,您可以创建一个具有分配给您定义的计算资源的多个模型端点。在这种情况下,我们对端点使用 mlp4d24xlarge 实例,并为两个不同模型分配必要的资源。请注意,您的端点仅限于此功能支持的实例类型。
如果您从 Deployable models 标签页开始工作并想要添加一个 SageMaker JumpStart LLM,或者反之亦然,您可以在启动部署工作流后选择 Add model使其成为多个模型的端点。在此处,您可以选择来自 SageMaker JumpStart 模型中心的其他基础模型,或使用 Deployable Models 选项,指的是您已保存为 SageMaker 模型对象的模型。选择您的模型设置:如果模型使用 CPU 实例,请选择 CPU 数量和模型的最少副本数量。如果模型使用 GPU 实例,请选择加速器数量和模型的最少副本数量。选择 Add model。选择 Deploy 将这些模型部署到 SageMaker 端点。当端点准备好In service 状态时,您将有两个模型在单个端点后部署。
测试模型推理
SageMaker Studio 现在使测试模型推理请求变得简单。您可以直接使用支持的内容类型发送负载数据,例如应用程序或 JSON、文本或 CSV,或使用 Python SDK 示例代码从程序环境如 notebooks 或本地集成开发环境 IDE发起调用请求。
请注意,Python SDK 示例代码选项仅适用于 SageMaker JumpStart 模型,并且它针对特定模型用例进行了输入/输出数据转换的定制。
排查错误
为了帮助排查模型部署问题,资源 Status 标签上的工具提示会显示相应的错误和原因消息。在端点详细信息页面上,有链接到 Amazon CloudWatch 日志组。对于单模型端点,指向 CloudWatch 容器日志的链接方便地位于端点详细信息的 Summary 部分。对于具有多个模型的端点,指向 CloudWatch 日志的链接位于 Models 表视图的每一行中。以下是一些常见错误场景的排查方法:
模型 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
有关其他模型部署问题,请参见 Supported features。
清理
清理过程同样简单。您可以通过在 SageMaker 控制台中选择特定模型,从现有 SageMaker 端点中移除一个或多个模型。要删除整个端点,请导航到 Endpoints 页面,选择所需端点,选择 Delete,并接受免责声明以继续删除。
结论
在 SageMaker Studio 中增强的交互式体验使数据科学家能够专注于模型构建和将其工件导入 SageMaker,同时抽象出部署的复杂性。对于那些更喜欢基于代码的方法,请查看带有 ModelBuilder class 的低代码等效版。
要了解更多信息,请访问 SageMaker ModelBuilder Python 接口文档以及 SageMaker Studio 中的引导 部署工作流程。使用 SageMaker SDK 和 SageMaker Studio 不会收取额外费用,您仅需为所使用的基础资源付费。有关如何使用 SageMaker 部署模型的更多信息,请参见 Deploy models for inference。
作者介绍
Raghu Ramesha 是 Amazon SageMaker 服务团队的高级 ML 解决方案架构师。他专注于帮助客户在规模上构建、部署和迁移 ML 生产工作负载到 SageMaker。他在机器学习、AI 和计算机视觉领域具有专业知识,并拥有德州大学达拉斯分校的计算机科学硕士学位。在业余时间,他喜欢旅行和摄影。
Deepak Garg 是 AWS 的解决方案架构师。他喜欢深入了解 AWS 服务并与客户分享自己的知识。Deepak 在内容分发网络和电信领域有专业背景。
Ram Vegiraju 是 Amazon SageMaker 服务团队的 ML 架构师。他专注于帮助客户在 Amazon SageMaker 上构建和优化 AI/ML 解决方案。在业余时间,他喜欢旅行和写作。
Marc Karp 是 Amazon SageMaker 服务团队的 ML 架构师。他专注于帮助客户设计、部署和管理大规模的 ML 工作负载。在业余时间,他喜欢旅行和探索新地方。
Shiva Raaj Kotini 担任 Amazon SageMaker 推理产品组合的高级产品经理。他专注于 SageMaker 中的模型部署、性能调优和优化。
Alwin (Qiyun) Zhao 是 Amazon SageMaker 推理平台团队的高级软件开发工程师。他是部署保护和影子部署的首席开发者,专注于帮助客户以高可用性在规模