本指南将演示如何在 Amazon Elastic Kubernetes Service(Amazon EKS)上部署机器学习推理架构。它满足了基本的实现要求以及将数千个独特的 PyTorch 深度学习(DL)模型打包到可扩展架构中的方法。PyTorch 是一个开源机器学习框架,可以帮助您加速从原型设计到部署的机器学习之旅。 我们还探索了 Amazon Elastic Compute Cloud(Amazon EC2)实例系列的组合,使用高效计算(例如 AWS Graviton 和 AWS Inferentia)来开发最佳设计,使您能够高效且经济实惠地扩展推理。
请注意:[免责声明]
架构图

-
基础设施
-
架构
-
基础设施
-
此基础设施图提供了一种设置与本指南兼容的 Amazon Elastic Kubernetes Service(Amazon EKS)集群的方法。或者,可以使用现存的 Amazon EKS 集群。要了解有关在此基础设施上运行推理工作负载的更多信息,请打开架构选项卡。
可选
要部署本指南,您需要预置 Amazon Elastic Kubernetes Service(Amazon EKS)集群。以下步骤显示了如何使用项目代码的“预置”部分来预置 Amazon EKS 集群。 -
架构
-
此图为在 AWS 上运行机器学习(ML)推理工作负载提供了简单、可扩展且高度可用的架构。它使用标准的 Amazon Elastic Kubernetes Service(Amazon EKS)基础设施,该基础设施可以部署到多个可用区以实现高可用性。有关设置与本指南兼容的 Amazon EKS 集群的说明,请打开基础设施选项卡。
第 1 步
Amazon EKS 集群有多个计算节点组,每个节点组有一个 Amazon Elastic Compute Cloud(Amazon EC2)实例系列。每个节点组可以支持不同的实例类型,例如跨可用区(AZ)部署的基于 AWS Graviton 处理器(c7g)或 AWS Inferentia 处理器(inf2)的实例。
Well-Architected 支柱

当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
本指南使用 Amazon EKS、Amazon ECR 和测试自动化框架来增强卓越运营。它可以帮助您可视化、自定义和理解通过 FastAPI 框架提供机器学习模型的概念,从而可以灵活地选择自己所选的 Amazon EKS 节点计算实例来优化性能和成本。Amazon EKS 和 Amazon ECR 分别是托管的 Kubernetes 和镜像存储库服务,完全支持机器学习运营(MLOps)周期所有阶段的基于 API 的自动化。我们还将展示如何自动部署和运行大量自定义机器学习模型,以及如何使用自动化框架自动对这些模型的性能进行加载和扩展测试。
-
安全性
Amazon EKS、Amazon VPC、IAM 角色和策略以及 Amazon ECR 协同工作,以保护您的信息和系统。Amazon EKS 集群资源部署到 VPC 中,该虚拟私有云提供其资源与公共互联网的逻辑隔离。VPC 支持多种安全功能,例如用于控制资源的入站和出站流量的安全组和网络访问控制列表(ACL),以及用于限制访问的 IAM 角色和授权策略。Amazon ECR 镜像注册表提供额外的容器级安全功能,例如漏洞扫描。
-
可靠性
在本指南中,使用 Amazon EKS 和 Amazon ECR 有助于工作负载准确且一致地执行其预期功能。Amazon EKS 在 AWS 区域的多个可用区(AZ)部署 Kubernetes 控制面板(控制容器运行方式、时间和位置的实例)和计算面板(容器运行的实例)。这样可以确保即使一个可用区出现故障,控制面板和计算面板也始终可用。此外,弹性负载均衡(ELB)会将应用程序流量路由到功能节点。此外,Amazon EKS 集群组件会向 Amazon CloudWatch 门户发送指标,在该门户中,可以将事件配置为在超过特定阈值时调用警报。
-
性能效率
在本指南中,使用 Amazon ECR、Amazon EKS 和 Amazon EC2 支持 IT 和计算资源的结构化和简化分配。在进行测试时,可以根据应用程序的工作负载要求扩缩 Amazon EKS 集群(即 Amazon EC2 实例)中的计算节点。此外,Amazon ECR 和 Amazon EKS 是高度可用的服务,针对容器化应用程序的可扩展性和性能进行了优化。本指南利用这些服务和其他服务(例如 Amazon S3 和 GitHub 开源软件),通过自定义和自动化来监控和优化机器学习推理工作负载的性能特征。
-
成本优化
Amazon ECR 是一项托管服务,可以优化部署在 Amazon EKS 上的容器镜像应用程序的存储和服务成本。在执行测试时,Amazon EKS 集群的计算节点可以根据预计的工作负载扩缩。此外,Amazon EKS 节点组可以高效扩展,帮助确定最具成本效益的计算节点配置,以大规模运行机器学习推理。
-
可持续性
已将 Amazon EC2 计算节点实例部署到 VPC 和 Amazon ECR 的 Amazon EKS 不使用自定义硬件。这意味着,您无需购买或管理任何物理服务器。相反,本指南使用在 AWS 基础设施上运行的托管服务。此外,通过支持使用节能型处理器实例类型(如 AWS Graviton 处理器),此架构提高了可持续性。使用在 Amazon EC2 中运行的 Graviton,可以用更少的资源提高工作负载的性能,从而减少总体资源占用量。
实施资源

提供了在 AWS 账户中进行实验和使用的详细指南。构建指南的每个阶段(包括部署、使用和清理)都将被检查,以便为部署做好准备。
示例代码为起点。它经过行业验证,是规范性但不是决定性的,可以帮助您开始。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。